2011-11-09から1日間の記事一覧

EMアルゴリズム答え合わせ

自分の実装した「Numpyで混合ガウス分布のEMアルゴリズムを実装した」のコードを中谷さんの「EM アルゴリズム実装(勉強用) - Mi manca qualche giovedi`?」と照らしあわせて答え合わせしてみる。まず、EMアルゴリズムってなんなのかって話を簡潔に。観測でき…

numpy+matplotlibで散布図の上にバツ印をつける

「バツ印をつける」と言った場合、多くの場合言語化されていない暗黙の要求仕様がある。「バツ印はグラフの軸に影響されて横長になったりしないでほしい」とか。前回 「NumPy+Matplotlibで散布図の上に平均と分散を表示する」 ではCircleをPatchCollectionに…

numpyでk-means法を実装した

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)読書…

NumPy+Matplotlibで散布図の頂点に色をつける

散布図のマーカーに"+"を指定して「あれー、色を指定しても反映されないなー」と悩んでいたが、指定した色はマーカーの塗りに使われるのであった。"+"だと塗りがないから色が変わらないというオチ。edgecolorを指定すればいいんだろうけどマーカーを"o"に変…

numpyで対角行列を作る

与えられた成分が対角成分に入っているような対角行列を作りたい場合、diagを使えばよい。 In [837]: diag([1, 2, 3]) Out[837]: array([[1, 0, 0], [0, 2, 0], [0, 0, 3]])

numpyのndarrayで内積と外積を計算

内積(v^t v)や行列の積はndarrayのdotメソッドでできるが、外積(v v^t)はどうやってやるんだろう…それらしきメソッドがないなぁ…と思ったらouterって関数があった。めでたしめでたし。 In [833]: array([1, 2, 3]) Out[833]: array([1, 2, 3]) In [834]: v =…