はじめに
この実験では、クラスタラベルから分類器を誘導することでクラスタリングを拡張する方法である帰納的クラスタリングについて学びます。Python の scikit - learn ライブラリを使って、クラスタリングを拡張するメタ推定器を実装します。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
学習データの生成
このステップでは、クラスタリングからいくつかの学習データを生成します。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 ライブラリを使って、クラスタリングを拡張するメタ推定器を実装し、生成した学習データに対してクラスタリングアルゴリズムを学習させました。また、新しいサンプルを生成し、帰納的学習モデルを使って新しいサンプルのクラスタ所属を予測しました。