めもめも ...〆(。_。)
認知心理学・認知神経科学とかいろいろなはなし。 あるいは科学と空想科学の狭間で微睡む。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ここんところちまちまRをいじっているのだけれど、Rはネットで参照できる資料がよくわからないというか「すぐに知りたいことにずばっと辿り着ける!」っていうのがなかなか無いので思ったより時間がかかる。
んが、それよりも納得のいかないことがあるのでめもっておく。
ベクトルの内積を計算する方法は、どうやら %*% らしい。
内積は、英語ではinner productというよりもdot productというほうがメジャー。
http://ja.wikipedia.org/wiki/%E3%83%89%E3%83%83%E3%83%88%E7%A9%8D
で、外積は %o% で計算される。
外積は、external productとかいう。
http://ja.wikipedia.org/wiki/%E5%A4%96%E7%A9%8D
でも、3次元の場合はcross productとかvector productとか言うらしい。
http://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%82%B9%E7%A9%8D
ここまでは、いい。
Rの %*% と同じ結果を返す(が、計算が早いらしい) crossprod という関数があるそうな。
http://www.is.titech.ac.jp/~mase/mase/html.jp/temp/crossprod.jp.html
・・・あれ、クロス積って外積の仲間じゃないの?
実際にてけとーにRで試してみた。

・・・内積とおんなじになってますね。
どういうことだー。
どんだけ調べても内積をcross productと呼ぶ例にはぶつからないし、いわゆるクロス積がベクトルじゃなくて定数になる例っていうのがよくわからん。
Rにおいては、crossprodはクロス積ではなくて内積という理解でよいのだろうか?
わけわからんわー!
Rのハードル高すぎてむしろ笑える。
そりゃ初心者はつまづくっちゅーねん。
・・・いつかこの疑問が解決する日が来たら、解決編を書くことにします。
んが、それよりも納得のいかないことがあるのでめもっておく。
ベクトルの内積を計算する方法は、どうやら %*% らしい。
内積は、英語ではinner productというよりもdot productというほうがメジャー。
http://ja.wikipedia.org/wiki/%E3%83%89%E3%83%83%E3%83%88%E7%A9%8D
で、外積は %o% で計算される。
外積は、external productとかいう。
http://ja.wikipedia.org/wiki/%E5%A4%96%E7%A9%8D
でも、3次元の場合はcross productとかvector productとか言うらしい。
http://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%82%B9%E7%A9%8D
ここまでは、いい。
Rの %*% と同じ結果を返す(が、計算が早いらしい) crossprod という関数があるそうな。
http://www.is.titech.ac.jp/~mase/mase/html.jp/temp/crossprod.jp.html
・・・あれ、クロス積って外積の仲間じゃないの?
実際にてけとーにRで試してみた。
・・・内積とおんなじになってますね。
どういうことだー。
どんだけ調べても内積をcross productと呼ぶ例にはぶつからないし、いわゆるクロス積がベクトルじゃなくて定数になる例っていうのがよくわからん。
Rにおいては、crossprodはクロス積ではなくて内積という理解でよいのだろうか?
わけわからんわー!
Rのハードル高すぎてむしろ笑える。
そりゃ初心者はつまづくっちゅーねん。
・・・いつかこの疑問が解決する日が来たら、解決編を書くことにします。
なんかちょっとしたツールをPythonという言語で公開してるひとがいるので、Pythonなるものを試してみることにした。
あっちこっち言語かじりまくりだな自分。
でもコードをみないとどんなんかわからんし。
そのひとの書いてる論文の数式部分を自力で自分の知ってる言語で1から書き起こすのと、さくっと新言語さわってコード見るのとどっちが楽かな、って考えたら、新言語さわるほうが楽な気がした。
自分文系だし。
なんかCの
{
}
に相当するのがインデント(字下げ)らしい。
ざっと見る分にはわかりやすいのかもしらんが、慣れるまで戸惑いそうだ。
ちーうか、Python入門でぐぐってもなんか「Pythonは初めて触るけど他の言語はお手の物だよ」的熟練者対象みたいな書き方でわかりづれー。
というわけでひさびさのあほでもねこでもシリーズです。
まずね、公式(http://www.python.org/download/)に行ったら迷うのが2.x verと3. x verがあるよー。というとこ。
じゃあ新しいほうおとせばいんじゃね?と思うじゃないですか。
それ罠なんですよ。
なんか、3のほーは開発思想が今までとちっと違うらしくて、前Verとの互換性があんましよろしくないらしい。
公式ではわりとうだうだと3を勧めてるっぽい(http://wiki.python.org/moin/Python2orPython3)けど。
実際のところPython使うきっかけになったツールをおとしてきてみれば2Verだったし、世の中的にはまだまだ2のほうがメジャーらしい。
うっかりいらんことを言いそうになるが自重。
ちなみに
http://php6.jp/python/2011/03/07/16_secrets_of_python/
のサイトでは2.5が勧められています。そいやツールの作者も2.5で書いたってReadMeに書いてたな。
でもわたしはうっかり2.7を落としてしまったのでまあそれでもいいや。
今のとこ言語ジプシーなので(はようVBに別れを告げんかいと先輩にせっつかれて早数年・・・)、気に入ればがっつりつかうし気に入らなければツールいじったあとはつかわなくなるだろうしね。
ダウンロードページがまたいろいろとダウンロードの形式をあげつらっていて若干めんどくさいのですが、あほでWindows使用なので.msiついてるやつを使えば解凍しなくてもインストーラさんがインストールしてくれます。
基本デフォルトのままインストーラさんの言うなりになっといて問題ないかと。
入門サイトでは、ダウンロードのしかたは詳しく解説してても、そっからの使用方法については不親切なことが多い。
なんでもPythonのパスを通さねばならんらしいが、パスの通し方がわからんぬ。
ぐぐってみたら、「環境設定」というものをいじるらしいよ!
というわけで、そのパスの通し方をあほでもわかるようにじっとりねっとり。
ちなみにこれ、環境はXP(しかもHome edition)ですん。
そしてロースぺノートPCという。
おかねがないってやーね。
ま、それはともかく、パス。
1.「マイコンピュータ」を右クリックして「プロパティ」を選ぶ
2.「詳細設定」というタブを選び、下の「環境設定」ボタンを押す

3.「環境変数」というウィンドウが現れるので、上の段のユーザー環境変数というところの「新規」ボタンを押す

(図の一部にインクぶちまけてるようですがお気になさらず)
4.すると、「新しいユーザー変数」というウィンドウが開き、変数名と変数値を書くボックスが出るので、変数名のところは「PYTHONPATH」と書き、変数値のところはPythonをダウンロードしてできたフォルダのうち、Libフォルダの中にあるsite-packagesフォルダを指定(うちの設定の場合は C:\Python27\Lib\site-packages となる。インストールした場所やバージョンによって変わるのでそこは各自で確認)してOKボタンぽちり。
そいでもって、環境変数Pathというのも設定しておくとよいらしい。
そっちもやってみよう。
1.環境変数ウィンドウの下の段の「システム環境変数」のほうをみて、「Path」というやつを探します。

2.「Path」をダブルクリックすると、「システム変数の編集」というウィンドウが出て、変数名と変数値を書くボックスがあるんで、変数名のほうはいじらずに、変数値のところも基本いじらずに、いろいろ書いてあるところの最後にインストールしてできたPythonのフォルダの場所(うちの場合はC:\Python27)を付け加える。付け加えるときは「;」を区切りにつかうのを忘れずに。んでOKぼたんぽちり。
ということで、この2つの設定が終わったら環境変数ウィンドウもOkぼたんぽちっとおしてパスを通すのしゅーりょー。
ここまで準備したら、いよいよPythonがつかえるようになるというわけだ。
次は実際にさわってみよー。
(つづく)
あっちこっち言語かじりまくりだな自分。
でもコードをみないとどんなんかわからんし。
そのひとの書いてる論文の数式部分を自力で自分の知ってる言語で1から書き起こすのと、さくっと新言語さわってコード見るのとどっちが楽かな、って考えたら、新言語さわるほうが楽な気がした。
自分文系だし。
なんかCの
{
}
に相当するのがインデント(字下げ)らしい。
ざっと見る分にはわかりやすいのかもしらんが、慣れるまで戸惑いそうだ。
ちーうか、Python入門でぐぐってもなんか「Pythonは初めて触るけど他の言語はお手の物だよ」的熟練者対象みたいな書き方でわかりづれー。
というわけでひさびさのあほでもねこでもシリーズです。
まずね、公式(http://www.python.org/download/)に行ったら迷うのが2.x verと3. x verがあるよー。というとこ。
じゃあ新しいほうおとせばいんじゃね?と思うじゃないですか。
それ罠なんですよ。
なんか、3のほーは開発思想が今までとちっと違うらしくて、前Verとの互換性があんましよろしくないらしい。
公式ではわりとうだうだと3を勧めてるっぽい(http://wiki.python.org/moin/Python2orPython3)けど。
実際のところPython使うきっかけになったツールをおとしてきてみれば2Verだったし、世の中的にはまだまだ2のほうがメジャーらしい。
うっかりいらんことを言いそうになるが自重。
ちなみに
http://php6.jp/python/2011/03/07/16_secrets_of_python/
のサイトでは2.5が勧められています。そいやツールの作者も2.5で書いたってReadMeに書いてたな。
でもわたしはうっかり2.7を落としてしまったのでまあそれでもいいや。
今のとこ言語ジプシーなので(はようVBに別れを告げんかいと先輩にせっつかれて早数年・・・)、気に入ればがっつりつかうし気に入らなければツールいじったあとはつかわなくなるだろうしね。
ダウンロードページがまたいろいろとダウンロードの形式をあげつらっていて若干めんどくさいのですが、あほでWindows使用なので.msiついてるやつを使えば解凍しなくてもインストーラさんがインストールしてくれます。
基本デフォルトのままインストーラさんの言うなりになっといて問題ないかと。
入門サイトでは、ダウンロードのしかたは詳しく解説してても、そっからの使用方法については不親切なことが多い。
なんでもPythonのパスを通さねばならんらしいが、パスの通し方がわからんぬ。
ぐぐってみたら、「環境設定」というものをいじるらしいよ!
というわけで、そのパスの通し方をあほでもわかるようにじっとりねっとり。
ちなみにこれ、環境はXP(しかもHome edition)ですん。
そしてロースぺノートPCという。
おかねがないってやーね。
ま、それはともかく、パス。
1.「マイコンピュータ」を右クリックして「プロパティ」を選ぶ
2.「詳細設定」というタブを選び、下の「環境設定」ボタンを押す
3.「環境変数」というウィンドウが現れるので、上の段のユーザー環境変数というところの「新規」ボタンを押す
(図の一部にインクぶちまけてるようですがお気になさらず)
4.すると、「新しいユーザー変数」というウィンドウが開き、変数名と変数値を書くボックスが出るので、変数名のところは「PYTHONPATH」と書き、変数値のところはPythonをダウンロードしてできたフォルダのうち、Libフォルダの中にあるsite-packagesフォルダを指定(うちの設定の場合は C:\Python27\Lib\site-packages となる。インストールした場所やバージョンによって変わるのでそこは各自で確認)してOKボタンぽちり。
そいでもって、環境変数Pathというのも設定しておくとよいらしい。
そっちもやってみよう。
1.環境変数ウィンドウの下の段の「システム環境変数」のほうをみて、「Path」というやつを探します。
2.「Path」をダブルクリックすると、「システム変数の編集」というウィンドウが出て、変数名と変数値を書くボックスがあるんで、変数名のほうはいじらずに、変数値のところも基本いじらずに、いろいろ書いてあるところの最後にインストールしてできたPythonのフォルダの場所(うちの場合はC:\Python27)を付け加える。付け加えるときは「;」を区切りにつかうのを忘れずに。んでOKぼたんぽちり。
ということで、この2つの設定が終わったら環境変数ウィンドウもOkぼたんぽちっとおしてパスを通すのしゅーりょー。
ここまで準備したら、いよいよPythonがつかえるようになるというわけだ。
次は実際にさわってみよー。
(つづく)
視覚系研究者、それもNatural scenesとかDaily objectsとかそういうのを対象にする研究者の悩みなんてみんなおんなじなのね。
「どうにかして楽に刺激手に入れられないかなあ」という。
んでおんなじようなこと考えてまとめてるひとがいたからそのまとめのリンクはっとく。
http://www.cogsci.nl/stimulus-sets
まあわたし自身がためこんできた刺激アーカイブもあるっちゃーあるんですが、今ちょっと体力がないのでそのへんのまとめはまた後日。
はなみずがとまらないので今日はもう寝る。
「どうにかして楽に刺激手に入れられないかなあ」という。
んでおんなじようなこと考えてまとめてるひとがいたからそのまとめのリンクはっとく。
http://www.cogsci.nl/stimulus-sets
まあわたし自身がためこんできた刺激アーカイブもあるっちゃーあるんですが、今ちょっと体力がないのでそのへんのまとめはまた後日。
はなみずがとまらないので今日はもう寝る。
表題どおり、ちょっとクラスター分析をしてみたくなったのでRでどんなふーにすればいいのか調べてみた。
ソースコード公開しているページはいくつかあったのだけど、みんないろいろ書いててちょっとこんがらがり。
やっぱり誰かのをまるうつしするよりも自分用にかんたんにしたりつけたしたりしたのをつかったほうがいいな。
というわけで自分用のをめもっておく。
data <- read.csv("ファイル名.csv") #CSV読み込んでdataという変数にしまう
#headerはデフォルトではTrueらしいので省略(つまりCSVには変数名あったほうがいい)
data #確認
attach(data) #各列を変数に
result<-hclust(dist(data), method="ward")
#distは距離行列の関数
#とりあえず統計の授業の資料では「ウォード法」というのがよいと書いてあったのでこれ
#hclustはクラスター分析の関数。methodはいろいろある。
#"single"だと単連結法/最近隣法
#"complete"だと完全連結法/最遠隣法
#"average"だと群平均法
#"centroid"だと重心法
#それぞれどんな方法かは割愛
plot(result) #樹状図におこす
#はRのコメントアウト記号。
めさめさシンプルですが、ざっくりクラスタできればいいので今んところはこれで用がたりそうなかんじ。
ちうか、Rは関数がいっぱい用意されててべんりだなあ。
ソースコード公開しているページはいくつかあったのだけど、みんないろいろ書いててちょっとこんがらがり。
やっぱり誰かのをまるうつしするよりも自分用にかんたんにしたりつけたしたりしたのをつかったほうがいいな。
というわけで自分用のをめもっておく。
data <- read.csv("ファイル名.csv") #CSV読み込んでdataという変数にしまう
#headerはデフォルトではTrueらしいので省略(つまりCSVには変数名あったほうがいい)
data #確認
attach(data) #各列を変数に
result<-hclust(dist(data), method="ward")
#distは距離行列の関数
#とりあえず統計の授業の資料では「ウォード法」というのがよいと書いてあったのでこれ
#hclustはクラスター分析の関数。methodはいろいろある。
#"single"だと単連結法/最近隣法
#"complete"だと完全連結法/最遠隣法
#"average"だと群平均法
#"centroid"だと重心法
#それぞれどんな方法かは割愛
plot(result) #樹状図におこす
#はRのコメントアウト記号。
めさめさシンプルですが、ざっくりクラスタできればいいので今んところはこれで用がたりそうなかんじ。
ちうか、Rは関数がいっぱい用意されててべんりだなあ。
MATLABいじるのもおもしろいな、と思い始めたあたりでちょっと調子のってオブジェクトの記述統計っぽいのができるMファイルをおとしてきていじってみた。
オブジェクトの特徴量というのを算出するScale-Invariant Feature Transform(SIFT)というのがあって、それをMATLABにしたのを公開してるひとがいた。
http://www.cs.ubc.ca/~lowe/keypoints/
ので、ちょっとどんなんか試してみた。
SIFTそのものについては、あんまり理解できてないので解説はパス。
とりあえず今のところ参考にしているのは
http://www.slideshare.net/lawmn/siftsurf
特徴として評価されるのは「輝度変化」。
まずは準備。
おとして解凍
↓
中身をてきとーなとこ(わたしはPsychtoolboxのよこにした)につっこむ
↓
MATLABひらく
↓
一応パスとおす
↓
カレントディレクトリを変更する(もしくは中身/中身のコピーをworkフォルダにつっこむ)
↓
準備完了
で、
[image, descrips, locs] = sift('画像ファイル名');
showkeys(image, locs);
とコマンドウィンドウに入力すれば、特徴点(keypoint)を検出して数え上げて図示してくれる。
さらにそれだけではなく、2つの画像で一致する特徴点があるのか、あるならどこなのか調べてくれる。
match('画像1の名前','画像2の名前');
とコマンドウィンドウに打ち込むだけ。
両方の特徴点を検出してマッチングしてくれる。
回転とか拡大縮小にも対応。
んで対応付けた図を見せてくれる。
おおーすげー。
と、思ったらデモプログラムなので、拡張子.pgmの画像にしか対応していないようす。
(なぜかめちゃくちゃ単純な画像の.bmpでは通ったけど結果がへんだった。写真の.jpgやそれを.bmp化したものではエラーはいてた)
ええー.pgmってなんじゃあああと思ったら、UNIXでは結構メジャーな形式らしい。
グレースケール画像を扱うのだそーな。
えーじゃあどうしよー、と思ってたら、Windows環境でも.pgm形式に簡単に変換できるフリーソフトがちゃーんとありました。
http://freesoftbangai.blog50.fc2.com/blog-entry-19.html
IrfanViewというこのソフト、形式変換もリネームも一括でぽぽぽぽーん!とやってくれるすぐれものです。
実際、jpgだったのをこいつでさくっと形式かえてやったらあっさり通りました。
併用すればさくさくSIFTがつかえてしまいます!
注意せねばならんのは、輝度変化が特徴量になるので、輝度変化のあまりないものは向かないということ。
あと、背景とのコントラストが違うとmatchが微妙。
そこらへんを気をつけて遊ぶべし。
オブジェクトの特徴量というのを算出するScale-Invariant Feature Transform(SIFT)というのがあって、それをMATLABにしたのを公開してるひとがいた。
http://www.cs.ubc.ca/~lowe/keypoints/
ので、ちょっとどんなんか試してみた。
SIFTそのものについては、あんまり理解できてないので解説はパス。
とりあえず今のところ参考にしているのは
http://www.slideshare.net/lawmn/siftsurf
特徴として評価されるのは「輝度変化」。
まずは準備。
おとして解凍
↓
中身をてきとーなとこ(わたしはPsychtoolboxのよこにした)につっこむ
↓
MATLABひらく
↓
一応パスとおす
↓
カレントディレクトリを変更する(もしくは中身/中身のコピーをworkフォルダにつっこむ)
↓
準備完了
で、
[image, descrips, locs] = sift('画像ファイル名');
showkeys(image, locs);
とコマンドウィンドウに入力すれば、特徴点(keypoint)を検出して数え上げて図示してくれる。
さらにそれだけではなく、2つの画像で一致する特徴点があるのか、あるならどこなのか調べてくれる。
match('画像1の名前','画像2の名前');
とコマンドウィンドウに打ち込むだけ。
両方の特徴点を検出してマッチングしてくれる。
回転とか拡大縮小にも対応。
んで対応付けた図を見せてくれる。
おおーすげー。
と、思ったらデモプログラムなので、拡張子.pgmの画像にしか対応していないようす。
(なぜかめちゃくちゃ単純な画像の.bmpでは通ったけど結果がへんだった。写真の.jpgやそれを.bmp化したものではエラーはいてた)
ええー.pgmってなんじゃあああと思ったら、UNIXでは結構メジャーな形式らしい。
グレースケール画像を扱うのだそーな。
えーじゃあどうしよー、と思ってたら、Windows環境でも.pgm形式に簡単に変換できるフリーソフトがちゃーんとありました。
http://freesoftbangai.blog50.fc2.com/blog-entry-19.html
IrfanViewというこのソフト、形式変換もリネームも一括でぽぽぽぽーん!とやってくれるすぐれものです。
実際、jpgだったのをこいつでさくっと形式かえてやったらあっさり通りました。
併用すればさくさくSIFTがつかえてしまいます!
注意せねばならんのは、輝度変化が特徴量になるので、輝度変化のあまりないものは向かないということ。
あと、背景とのコントラストが違うとmatchが微妙。
そこらへんを気をつけて遊ぶべし。
カレンダー
02 | 2025/03 | 04 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
カテゴリ説明
もっさり:日々の雑感をもっさり。
がっつり:論文や研究関連をがっつり。
びっくり:科学ニュースでびっくり。
まったり:空想科学などでまったり。
ばっかり:デザイン系自己満足ばっかり。
ほっこり:お茶を嗜んでほっこり。
がっつり:論文や研究関連をがっつり。
びっくり:科学ニュースでびっくり。
まったり:空想科学などでまったり。
ばっかり:デザイン系自己満足ばっかり。
ほっこり:お茶を嗜んでほっこり。
最新コメント
※SPAMが多いのでhttpを含むコメントと英語のみのコメントを禁止しました※
最新記事
(05/08)
(04/24)
(04/10)
(02/03)
(11/01)
最新トラックバック
プロフィール
HN:
az
性別:
非公開
自己紹介:
興味のあるトピックス
分野は視覚認知。視知覚にがて。
あと記憶全般。
カテゴリ (semanticsか?) とかも。
最近デコーディングが気になる。
でも基本なんでもこい。
好奇心は悪食。
好きな作家(敬称略)
川上弘美
小林秀雄
津原泰水
森茉莉
レイ・ブラッドベリ
イタロ・カルヴィーノ
グレッグ・イーガン
シオドア・スタージョン
分野は視覚認知。視知覚にがて。
あと記憶全般。
カテゴリ (semanticsか?) とかも。
最近デコーディングが気になる。
でも基本なんでもこい。
好奇心は悪食。
好きな作家(敬称略)
川上弘美
小林秀雄
津原泰水
森茉莉
レイ・ブラッドベリ
イタロ・カルヴィーノ
グレッグ・イーガン
シオドア・スタージョン
ブログ内検索
最古記事
(08/05)
(08/16)
(08/19)
(08/19)
(08/21)
カウンター
フリーエリア
PR