Scikit - Learnを用いた帰納的クラスタリング

Machine LearningMachine LearningBeginner
今すぐ練習

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

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

はじめに

この実験では、クラスタラベルから分類器を誘導することでクラスタリングを拡張する方法である帰納的クラスタリングについて学びます。Pythonのscikit - learnライブラリを使って、クラスタリングを拡張するメタ推定器を実装します。

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-49165{{"Scikit - Learnを用いた帰納的クラスタリング"}} end

学習データの生成

このステップでは、クラスタリングからいくつかの学習データを生成します。scikit - learnのmake_blobs関数を使って、異なる標準偏差と中心を持つ3つのクラスタを持つ5000個のサンプルを生成します。

X, y = make_blobs(
    n_samples=5000,
    cluster_std=[1.0, 1.0, 0.5],
    centers=[(-5, -5), (0, 0), (5, 5)],
    random_state=42,
)

クラスタリングアルゴリズムの学習

このステップでは、生成した学習データに対してクラスタリングアルゴリズムを学習し、クラスタラベルを取得します。scikit - learnのAgglomerativeClusteringを使って、3つのクラスタでアルゴリズムを学習します。

clusterer = AgglomerativeClustering(n_clusters=3)
cluster_labels = clusterer.fit_predict(X)

新しいサンプルの生成

このステップでは、新しいサンプルを生成し、元のデータセットとともにプロットします。再度、make_blobs関数を使って10個の新しいサンプルを生成します。

X_new, y_new = make_blobs(
    n_samples=10, centers=[(-7, -1), (-2, 4), (3, 6)], random_state=42
)

帰納的学習モデルの宣言

このステップでは、未知のインスタンスのクラスタ所属を予測するために使用する帰納的学習モデルを宣言します。scikit - learnのRandomForestClassifierを分類器として使用します。

classifier = RandomForestClassifier(random_state=42)
inductive_learner = InductiveClusterer(clusterer, classifier).fit(X)

未知のインスタンスのクラスタ所属を予測する

このステップでは、帰納的学習モデルを使って、生成した新しいサンプルのクラスタ所属を予測します。InductiveClustererクラスのpredict関数を使い、新しいサンプルとそのおそらくのクラスタをプロットします。

probable_clusters = inductive_learner.predict(X_new)

plt.subplot(133)
plot_scatter(X, cluster_labels)
plot_scatter(X_new, probable_clusters)
plt.title("Classify unknown instances")

まとめ

この実験では、クラスタラベルから分類器を誘導することでクラスタリングを拡張する手法である帰納的クラスタリングについて学びました。Pythonのscikit - learnライブラリを使って、クラスタリングを拡張するメタ推定器を実装し、生成した学習データに対してクラスタリングアルゴリズムを学習させました。また、新しいサンプルを生成し、帰納的学習モデルを使って新しいサンプルのクラスタ所属を予測しました。