2011-11-01から1ヶ月間の記事一覧
これをどうやって描いたかという話まず矢印が変な形になるのを避けるために散布図の縦と横の縮尺を固定し(1)、重みベクトルで矢印を描き(2)、大きな灰色の長方形をほぼ透明にして重みベクトルの値を元に作ったアフィン変換で回転して描画している(3)data1, d…
あんまり面白いもんでもなかった。
matplotlibでpatchにtransformをつけると消えてしまうように見える現象が起きた。 まず、散布図の上に普通に長方形のpatchを乗せてみる。 clf() scatter(random(100), random(100)) ax = gca() rect = Rectangle((0, 0), 1, 1, alpha=0.3) ax.add_patch(rect…
上から、真の出力確率、潜在変数と出力のサンプル(潜在変数1個あたり5個の出力を出している)、訓練データ(潜在変数と出力の対)、そのデータで学習した後の出力確率、それを元に別の出力系列から潜在変数を推測したもの。3本の一番上が真の潜在変数で、真ん中…
一番上のグレーの正方形が真の遷移確率、3x8のカラーのが真の出力確率で、その下のカラーのバーが真の潜在変数の系列と出力変数の系列。真ん中の段がそれを3回EMで学習した後の遷移確率と出力確率、カラーバーは上から、真の潜在変数、出力変数、zの確率によ…
「クラスタは球状だ」と想定しているk平均法が苦労するように、細長くて交差したクラスタのデータを使った。また変分ベイズの「クラスタの個数を自動調整する」というメリットを確認するために、クラスタの個数は2, 4, 8個で行った。EMアルゴリズムと変分ベ…
「matplotlib.patches.Circleのオプション引数fillが機能していない疑惑」の解決編PatchCollectionはデフォルトでCircleなどのパッチで指定した色を上書きしてしまう。 Definition:PatchCollection(self, patches, match_original=False, **kwargs) (snip) *…
飛ぶと思い込んでいたので、ここで入ったnanのせいでしばらく進んでから逆行列を求める計算LinAlgError: Singular matrixで死ぬのに悩まされた。 >>> array([0]) / 0.0 array([ nan]) >>> array([1]) / 0.0 array([ inf]) NaNやInfが出てきた時点で例外を飛…
最近色々とNumpy+Matplotlibでグラフを書いているが、デフォルトの設定で出力すると800x600ピクセルで出力されるのではてなダイアリーに貼ったときに縮小されてしまう。そこでサイズの変更の仕方を調べてみた。まずmatplotlib.pyplot.figureにはfigsizeって…
情報処理学会の会誌「情報処理」で「未踏ユースから育ったタレントたち」という特集が行われています。竹内郁雄先生から執筆を頼まれて断れるはずがなく(笑) 書くこと自体より、書いた後で要請されて第1段落の内容を書きたしたら1.5ページになっていしまい1…
Python温泉にて「チケットがたくさん山になっているとヤル気がそがれたりどれからやったらいいか悩むのに時間を使ったりしてしまうので、オススメのチケットを選んでくれるシステムがあったらいいんじゃないの?」って話題になったのでコンセプトプルーフを…
NumPyではスライシングで特定の条件を満たす要素だけ選択できる。逆の条件で使えば特定の要素だけ除去するのも簡単。 >>> array(range(5)) array([0, 1, 2, 3, 4]) >>> v = _ >>> v[v != 2] array([0, 1, 3, 4]) これは「v != 2」の部分で演算子がオーバーロ…
Pythonのリストの場合、ifの条件式に入れてboolに変換された場合は日本語で言うと「空かどうか」になる。 >>> if []: print "not empty" >>> if [0]: print "not empty" not empty >>> print bool([]), bool([0]) False TrueでもNumpyのndarrayはそうではな…
最初6つ用意しておいたクラスタが、学習と共に消えて行って最終的に2個になるのが観察できる。初期パラメータによって収束するパターンはまちまちなので、次は初期パラメータを変えて何度も学習し、一番良い結果に収束したものの動画をつくろう。ちゃんとX字…
昨日の社内機械学習勉強会のハイライト、PRML P.357のカルマン利得行列(eq. 13.92) の意味について忘れないうちにまとめておく。Σが0に近い時、つまり出力確率の分散が小さい場合を考えてみよう。出力確率の分散が小さいってのは「センサーが優秀で、ほとん…
結婚式のウェルカムボード、二人の写真で作ってもその後困るだけじゃないか?などと考えていたら妻が「カッティングシートであなたの作品の表面にWelcomeって入れれば、あとで剥がして元に戻せるんじゃない?」と言うのでやってみた。カッティングシートはハ…
あの「カパッ」と開く箱の仕組みについて、気になったので分解して見ることにしました。もちろん事前に妻の承諾は得ていますよ!意外とシンプル。 蝶番と板バネが入っているだけ 板バネが両端を近づける方向に力をかける。蝶番のバネを引っ掛ける部分が少し…
下のコードでfill=Falseをしているにもかかわらず「青く塗られた円」が描かれる。 from matplotlib.collections import PatchCollection from pylab import * def draw(): clf() circles = [Circle(random(2), radius=random(), fill=False)] gca().add_coll…
なぜか一度ipythonを終了してまた起動したらプロンプトがおかしくなってしまった。resetしてもTerminal.appを再起動しても治らない。 34In[1;3[0;34][0何をいじったせいなのか…しばらく悩んだけどもipythonの起動時にreadlineに関する警告が出ていたのでsudo…
変分ベイズを勉強中。数式も、グラフィカルモデルも、最小限のことしか書いていないから行間を読むのが大変だ。ようやく少しわかったので独自記法でグラフィカルモデルに書きたしてみた。 まず混合正規分布のグラフィカルモデルについて、グラフィカルモデル…
自分の実装した「Numpyで混合ガウス分布のEMアルゴリズムを実装した」のコードを中谷さんの「EM アルゴリズム実装(勉強用) - Mi manca qualche giovedi`?」と照らしあわせて答え合わせしてみる。まず、EMアルゴリズムってなんなのかって話を簡潔に。観測でき…
「バツ印をつける」と言った場合、多くの場合言語化されていない暗黙の要求仕様がある。「バツ印はグラフの軸に影響されて横長になったりしないでほしい」とか。前回 「NumPy+Matplotlibで散布図の上に平均と分散を表示する」 ではCircleをPatchCollectionに…
NumPyすごいな。学習部分は実質2行だ。 # E-step nearest_cluster = array([argmin([norm(x - mu) for mu in mus]) for x in data]) # M-step mus = [average(data[nearest_cluster == k], axis=0) for k in range(K)] 「パターン認識と機械学習」(PRML)読書…
散布図のマーカーに"+"を指定して「あれー、色を指定しても反映されないなー」と悩んでいたが、指定した色はマーカーの塗りに使われるのであった。"+"だと塗りがないから色が変わらないというオチ。edgecolorを指定すればいいんだろうけどマーカーを"o"に変…
与えられた成分が対角成分に入っているような対角行列を作りたい場合、diagを使えばよい。 In [837]: diag([1, 2, 3]) Out[837]: array([[1, 0, 0], [0, 2, 0], [0, 0, 3]])
内積(v^t v)や行列の積はndarrayのdotメソッドでできるが、外積(v v^t)はどうやってやるんだろう…それらしきメソッドがないなぁ…と思ったらouterって関数があった。めでたしめでたし。 In [833]: array([1, 2, 3]) Out[833]: array([1, 2, 3]) In [834]: v =…
昨日行われたJubatus Workshopに参加してきました。ref. 第一回 Jubatus Workshop #jubatus - Togetter JubatusOfficial Presentations以下は僕の解釈も含めたまとめ ユバタスの必要性 データはこれからも増加していく。今多いってことより、今後どんどん増…
$ convert -delay 100 -loop 0 [1-6].png anime.gif楽チン。 $ convert -delay 100 -loop 0 fig*.png anime.gif10枚を超えてきたら"%02d"とかでfig00.png ... fig99.pngにしてアスタリスク(*)で取ったほうがよさげ。
楕円は3標準偏差、初期値からEMステップを1回、2回、3回、7回、15回(平均のベクトルの変化量が0.0001未満という基準で収束と判定)の6枚でアニメーションGIFにしてみた。 こっちはEMステップを0〜15回実行。k平均法ではこれはできまい。しかし初期値によって…
おっと。invertで逆行列をつくろうとしたら謎の行列が返ってきた。 In [1]: invert(array([[4, 0], [0, 1]])) Out[1]: array([[-5, -1], [-1, -2]]) invertは「Compute bit-wise inversion, or bit-wise NOT, element-wise.」だそうな。invを使うのが正解。(…