k-means クラスタリングの基礎

Pythonで学ぶクラスタ分析

Shaumik Daityari

Business Analyst

なぜ k-means か?

  • 階層的クラスタリングの大きな欠点:実行時間
  • k-means は大規模データで大幅に高速
Pythonで学ぶクラスタ分析

手順1: クラスタ中心の生成

kmeans(obs, k_or_guess, iter, thresh, check_finite)
  • obs: 標準化済みの観測値
  • k_or_guess: クラスタ数
  • iter: 反復回数(既定: 20)
  • thres: しきい値(既定: 1e-05)
  • check_finite: 有限値のみかを検査(既定: True)

戻り値: クラスタ中心、歪み

Pythonで学ぶクラスタ分析

歪みはどう計算する?

Pythonで学ぶクラスタ分析

手順2: クラスタラベルの生成

vq(obs, code_book, check_finite=True)
  • obs: 標準化済みの観測値
  • code_book: クラスタ中心
  • check_finite: 有限値のみかを検査(既定: True)

戻り値: クラスタラベルの配列、歪みの配列

Pythonで学ぶクラスタ分析

歪みについての注意

  • kmeans は単一の歪みを返す
  • vq は歪みの配列を返す
Pythonで学ぶクラスタ分析

k-means の実行

# Import kmeans and vq functions
from scipy.cluster.vq import kmeans, vq
# Generate cluster centers and labels
cluster_centers, _ = kmeans(df[['scaled_x', 'scaled_y']], 3)
df['cluster_labels'], _ = vq(df[['scaled_x', 'scaled_y']], cluster_centers)
# Plot clusters
sns.scatterplot(x='scaled_x', y='scaled_y', hue='cluster_labels', data=df)
plt.show()
Pythonで学ぶクラスタ分析

Pythonで学ぶクラスタ分析

次は演習です!

Pythonで学ぶクラスタ分析

Preparing Video For Download...