Scikit - Learn を使った K - Means++ クラスタリング

Machine LearningMachine LearningBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Pythonのscikit-learnライブラリを使ってK-Means++の初期化について学びます。K-Means++は、類似性に基づいてデータをグループ化するための人気のあるアルゴリズムです。k-meansのデフォルトの初期化として使用されます。この実験では、サンプルデータを生成し、k-means++からシードを計算し、サンプルデータと並べて初期シードをプロットします。

VMのヒント

VMの起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebookを使って練習しましょう。

時々、Jupyter Notebookが読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebookの制限により、操作の検証を自動化することはできません。

学習中に問題に遭遇した場合は、Labbyにお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49181{{"Scikit - Learn を使った K - Means++ クラスタリング"}} end

サンプルデータを生成する

scikit-learnライブラリのmake_blobs関数を使ってサンプルデータを生成します。この関数は、クラスタリング用の等方性ガウスブロブを生成します。4つの中心を持つ4000個のサンプルを生成します。

## Generate sample data
n_samples = 4000
n_components = 4

X, y_true = make_blobs(
    n_samples=n_samples, centers=n_components, cluster_std=0.60, random_state=0
)
X = X[:, ::-1]

k-means++からシードを計算する

scikit-learnライブラリのkmeans_plusplus関数を使って、k-means++からシードを計算します。この関数は、k-meansクラスタリングに使用される初期クラスタ中心を返します。k-means++を使って4つのクラスタを計算します。

## Calculate seeds from k-means++
centers_init, indices = kmeans_plusplus(X, n_clusters=4, random_state=0)

初期シードとサンプルデータを並べてプロットする

matplotlibライブラリを使って、初期シードとサンプルデータを並べてプロットします。初期シードは青い点として表示され、サンプルデータは色付きの点として表示されます。

## Plot init seeds along side sample data
plt.figure(1)
colors = ["#4EACC5", "#FF9C34", "#4E9A06", "m"]

for k, col in enumerate(colors):
    cluster_data = y_true == k
    plt.scatter(X[cluster_data, 0], X[cluster_data, 1], c=col, marker=".", s=10)

plt.scatter(centers_init[:, 0], centers_init[:, 1], c="b", s=50)
plt.title("K-Means++ Initialization")
plt.xticks([])
plt.yticks([])
plt.show()

まとめ

この実験では、Pythonのscikit-learnライブラリを使ってK-Means++の初期化について学びました。サンプルデータを生成し、k-means++からシードを計算し、初期シードとサンプルデータを並べてプロットしました。K-Means++は、類似性に基づいてデータをグループ化するための人気のあるアルゴリズムであり、k-meansのデフォルトの初期化として使用されます。