スペクトラル共クラスタリングアルゴリズム

Machine LearningMachine LearningBeginner
今すぐ練習

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

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

はじめに

この実験では、スペクトラル共クラスタリングアルゴリズムを使用してデータセットを二部クラスタリングする方法を示します。データセットは、小さな値の行列を作成し、大きな値の二部クラスタを埋め込む make_biclusters 関数を使用して生成されます。その後、行と列をシャッフルして、スペクトラル共クラスタリングアルゴリズムに渡します。シャッフルされた行列を再配置して二部クラスタを連続させることで、アルゴリズムが二部クラスタをどの程度正確に見つけたかがわかります。

VMのヒント

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

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/cluster("Clustering") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/metrics("Metrics") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/cluster -.-> lab-49301{{"スペクトラル共クラスタリングアルゴリズム"}} sklearn/metrics -.-> lab-49301{{"スペクトラル共クラスタリングアルゴリズム"}} sklearn/datasets -.-> lab-49301{{"スペクトラル共クラスタリングアルゴリズム"}} ml/sklearn -.-> lab-49301{{"スペクトラル共クラスタリングアルゴリズム"}} end

必要なライブラリをインポートする

numpy、matplotlib、scikit-learnなどの必要なライブラリをインポートする必要があります。

import numpy as np
from matplotlib import pyplot as plt

from sklearn.datasets import make_biclusters
from sklearn.cluster import SpectralCoclustering
from sklearn.metrics import consensus_score

データセットを生成する

make_biclusters 関数を使用して、形状が (300, 300) で、5つの二部クラスタとノイズが5のデータセットを生成します。

data, rows, columns = make_biclusters(shape=(300, 300), n_clusters=5, noise=5, shuffle=False, random_state=0)

元のデータセットを可視化する

matshow() 関数を使用して、元のデータセットを可視化します。

plt.matshow(data, cmap=plt.cm.Blues)
plt.title("Original dataset")

データセットをシャッフルする

numpyの permutation() 関数を使用して、データセットをシャッフルします。

rng = np.random.RandomState(0)
row_idx = rng.permutation(data.shape[0])
col_idx = rng.permutation(data.shape[1])
data = data[row_idx][:, col_idx]

シャッフルされたデータセットを可視化する

matshow() 関数を使用して、シャッフルされたデータセットを可視化します。

plt.matshow(data, cmap=plt.cm.Blues)
plt.title("Shuffled dataset")

スペクトラル共クラスタリングアルゴリズムを適用する

5つのクラスタに対して、シャッフルされたデータセットにスペクトラル共クラスタリングアルゴリズムを適用します。

model = SpectralCoclustering(n_clusters=5, random_state=0)
model.fit(data)

コンセンサススコアを計算する

consensus_score() 関数を使用して、二部クラスタのコンセンサススコアを計算します。

score = consensus_score(model.biclusters_, (rows[:, row_idx], columns[:, col_idx]))
print("consensus score: {:.3f}".format(score))

シャッフルされたデータセットを並べ替える

numpyの argsort() 関数を使用して、シャッフルされたデータセットを並べ替えて、二部クラスタを連続させます。

fit_data = data[np.argsort(model.row_labels_)]
fit_data = fit_data[:, np.argsort(model.column_labels_)]

二部クラスタを可視化する

matshow() 関数を使用して、二部クラスタを可視化します。

plt.matshow(fit_data, cmap=plt.cm.Blues)
plt.title("After biclustering; rearranged to show biclusters")

まとめ

この実験では、Spectral Co-Clusteringアルゴリズムを使用してデータセットを生成し、二部クラスタリングする方法を学びました。元のデータセットは、小さな値の行列を作成し、大きな値の二部クラスタを埋め込む make_biclusters 関数を使用して生成されました。データセットの行と列をシャッフルし、Spectral Co-Clusteringアルゴリズムに渡しました。二部クラスタのコンセンサススコアを計算し、シャッフルされたデータセットを並べ替えて、二部クラスタを連続させました。最後に、二部クラスタを可視化して、アルゴリズムがそれらをどの程度正確に見つけたかを示しました。