pythonでk-meansを使ってクラスタリング
目的
下図のようななんとなく数が3つに別れているデータを、3つに分類しその分類毎の平均値を出したかったので、ソフトを書いてみました。
コード
sklearn のKMeansを用いると色々考えなくて良さそう(参考ページ。こちらのほうが素晴らしい)
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
import pandas as pd
#close all figure
plt.close('all')
#read Initial Data
Data = pd.read_excel('kmeanData.xlsx')
plt.figure()
plt.plot(Data.x,Data.y,'bo')
#k-meansによる分類
kmeans_model = KMeans(n_clusters=3, random_state=10).fit(Data.iloc[:, 1:])
labels = kmeans_model.labels_
#重心取得
center = kmeans_model.cluster_centers_
# 描画して確認
# それぞれに与える色を決める。
color_codes = {0:'#00FF00', 1:'#FF0000', 2:'#0000FF'}
# サンプル毎に色を与える。
colors = [color_codes[x] for x in labels]
# 色分けした Scatter Matrix を描く。
plt.figure()
plt.scatter(Data.x,Data.y,color=colors)
結果
Kmeansの出した結果と元データにしたExcelを手動分けした実平均を比較した。順番が違うだけでほぼ同じ結果が得られている。すごい。
その他
KMeans の random_state=10 のパラメータが何をしているか調べてもわからなかった。
初期クラスター位置のランダム生成に関わるパラメータなのでしょうか?
とりあえず参考にしたURLを真似ましたが、設定の考え方がわかる方がいらっしゃったら教えてほしいです。
Author And Source
この問題について(pythonでk-meansを使ってクラスタリング), 我々は、より多くの情報をここで見つけました https://qiita.com/FollowUser/items/26b5a88e7a79cdcd0a91著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .