Algorithme de co-clustering spectral

Beginner

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

Introduction

Ce laboratoire montre comment utiliser l'algorithme de co-classement spectral pour effectuer un bi-classement d'un ensemble de données. L'ensemble de données est généré à l'aide de la fonction make_biclusters, qui crée une matrice de petites valeurs et insère des bi-classes avec de grandes valeurs. Les lignes et les colonnes sont ensuite mélangées et passées à l'algorithme de co-classement spectral. Le regroupement des bi-classes dans la matrice mélangée pour les rendre contiguës montre à quel point l'algorithme a trouvé les bi-classes avec précision.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder à Jupyter Notebook pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.

Importez les bibliothèques nécessaires

Nous devons importer les bibliothèques nécessaires telles que 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

Générer un ensemble de données

Nous générons un ensemble de données de forme (300, 300) avec 5 bi-classes et un bruit de 5 à l'aide de la fonction make_biclusters.

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

Visualiser l'ensemble de données original

Nous visualisons l'ensemble de données original à l'aide de la fonction matshow().

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

Mélanger l'ensemble de données

Nous mélangeons l'ensemble de données à l'aide de la fonction permutation() de numpy.

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]

Visualiser l'ensemble de données mélangé

Nous visualisons l'ensemble de données mélangé à l'aide de la fonction matshow().

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

Appliquer l'algorithme de co-clustering spectral

Nous appliquons l'algorithme de co-clustering spectral à l'ensemble de données mélangé avec 5 clusters.

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

Calculer le score de consensus

Nous calculons le score de consensus des biclusters à l'aide de la fonction consensus_score().

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

Réordonner l'ensemble de données mélangé

Nous réordonnons l'ensemble de données mélangé pour rendre les biclusters contigus à l'aide de la fonction argsort() de numpy.

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

Visualiser les biclusters

Nous visualisons les biclusters à l'aide de la fonction matshow().

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

Sommaire

Dans ce laboratoire, nous avons appris à générer un ensemble de données et à effectuer un biclustering à l'aide de l'algorithme de co-clustering spectral. L'ensemble de données original a été généré à l'aide de la fonction make_biclusters, qui a créé une matrice de petites valeurs et implanté des biclusters avec de grandes valeurs. Nous avons mélangé les lignes et les colonnes de l'ensemble de données et l'avons passé à l'algorithme de co-clustering spectral. Nous avons calculé le score de consensus des biclusters et réordonné l'ensemble de données mélangé pour rendre les biclusters contigus. Enfin, nous avons visualisé les biclusters pour montrer avec quelle précision l'algorithme les a trouvés.