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.