PythonでK-means法を試してみた

 久しぶりにPython機械学習的なことをやってみました.今回は教師なし学習としてクラスター分析のソースコードを書いてみて色々試しました.

ソースコード

 こんな感じで書いてみました.

 

 上のソースコードはファイル出力とか省いていますが,省かないで実際に使ったデータセットなども含めた版はこちらです.(自分用)

 

実際にやってみる

次のような明らかに3分割されたデータを使って,3つのクラスターに分けてみました.

f:id:shu10038:20170226181017p:plain

クラスターに分類た結果は次のとおりです.それぞれのクラスターに,赤,青,緑で色を付けています.

f:id:shu10038:20170226181019p:plain

 まぁ,これは簡単だから出来て当たり前ですね.

 こんなデータはどうだろうか?

次に,こんな風に円状の塊のそとにデータ群が囲っている状況を考えます.これを2つのクラスターに分けるとどうなるのでしょうか?

f:id:shu10038:20170226181018p:plain

下が,分けた結果です.真ん中と外で別れるものかと思ったらそうではないですね.

f:id:shu10038:20170226181020p:plain

実はこの円形のデータセットは,ネットでKmeans法を調べると例題としてよく乗っているやつです.なんでもカーネル法を使うと上手く分けられるそうな.また後日試してみます.

参考

検索してすぐ出てきたやつを参考にしました