June 19, 2011

Python+SciPyでk-meansを実装してみる

k-meansK平均法)はクラスタリング手法の一つ。

PythonではSciPyに実装されているので簡単に利用することができます。
Macではこちらの記事に書いてある方法で関連するソフトもインストールできます。

たとえば下図のように2種類の2次元正規分布からサンプリングされたデータがあるとき


k-meansを用いると下図のようにクラスタリングされます。


以下、コード。



SciPyを用いるとk-meansは21~22行目の実質2行で利用することができます。

なおサンプリングについては ここ を、kmeansについては ここ を参照。

ちなみに正規化しないと下図のようになってしまいます。


k-meansのアルゴリズムについては、鹿島先生の講義資料の概論②の14~16ページの説明なんかが分かりやすいかもしれません。

2 comments:

  1. kmeans2では数値エラーがでることがあるようです。
    Pyclusterというライブラリを試しましたがこちらも便利です。
    http://stackoverflow.com/questions/1545606/python-k-means-algorithm

    ReplyDelete