混合ガウスでiris datasetをクラスタリング

Rで学ぶクラスタ解析でやってることを何故かpythonでやってみたよという話.

コードはgistに置いてみた.gistyが何故か入れれなくてしょぼーん.混合ガウスはPRML9章から.
純度とかエントロピー
混合ガウス

irisのデータはここから取得.そのままだとちょっと微妙な気もしたので適当にcut

$ cut --delimiter=, -f1-4 iris.data | sed -e 's/,/ /g' > iris.input
$ cut --delimiter=, -f5 iris.data | cut -c6- > iris.ans


REPLで適当に試す

>>> import scipy as sp
>>> import mydefs
>>> from gmm import gmm
>>> x = sp.loadtxt("data/iris.input")
>>> ans = gmm(x, 3)
>>> cls = ans['classification']
>>> goldans = sp.loadtxt("data/iris.ans", dtype="|S5")
>>> mydefs.myeval(cls, goldans)
Entropy:  0.10167363274
Purity:  0.966666666667

初期値に応じて結果が結構変わる上,たまに潰れて発散する ^^;