はじめに
この実験では、スペクトラル共クラスタリングアルゴリズムを使用してデータセットを二部クラスタリングする方法を示します。データセットは、小さな値の行列を作成し、大きな値の二部クラスタを埋め込む make_biclusters 関数を使用して生成されます。その後、行と列をシャッフルして、スペクトラル共クラスタリングアルゴリズムに渡します。シャッフルされた行列を再配置して二部クラスタを連続させることで、アルゴリズムが二部クラスタをどの程度正確に見つけたかがわかります。
VM のヒント
VM の起動が完了したら、左上隅をクリックして ノートブック タブに切り替え、Jupyter Notebook を使って練習しましょう。
時々、Jupyter Notebook が読み込み終了するまで数秒待つ必要があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
必要なライブラリをインポートする
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 アルゴリズムに渡しました。二部クラスタのコンセンサススコアを計算し、シャッフルされたデータセットを並べ替えて、二部クラスタを連続させました。最後に、二部クラスタを可視化して、アルゴリズムがそれらをどの程度正確に見つけたかを示しました。