Algoritmo de Co-Clustering Espectral

Machine LearningMachine LearningBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Esta práctica demuestra cómo utilizar el algoritmo de Co-Clustering Espectral para realizar un análisis de biclustering en un conjunto de datos. El conjunto de datos se genera utilizando la función make_biclusters, que crea una matriz con valores pequeños e inserta biclusters con valores grandes. Luego, se barajan las filas y columnas y se pasan al algoritmo de Co-Clustering Espectral. Reordenar la matriz barajada para que los biclusters queden contiguos muestra la precisión con la que el algoritmo encontró los biclusters.

Consejos sobre la VM

Una vez que se haya iniciado la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) 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{{"Algoritmo de Co-Clustering Espectral"}} sklearn/metrics -.-> lab-49301{{"Algoritmo de Co-Clustering Espectral"}} sklearn/datasets -.-> lab-49301{{"Algoritmo de Co-Clustering Espectral"}} ml/sklearn -.-> lab-49301{{"Algoritmo de Co-Clustering Espectral"}} end

Importar las bibliotecas necesarias

Necesitamos importar las bibliotecas necesarias, como 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

Generar un conjunto de datos

Generamos un conjunto de datos de forma (300, 300) con 5 biclusters y ruido de 5 utilizando la función make_biclusters.

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

Visualizar el conjunto de datos original

Visualizamos el conjunto de datos original utilizando la función matshow().

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

Mezclar el conjunto de datos

Mezclamos el conjunto de datos utilizando la función permutación() de numpy.

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

Visualizar el conjunto de datos mezclado

Visualizamos el conjunto de datos mezclado utilizando la función matshow().

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

Aplicar el algoritmo de Co-Clustering Espectral

Aplicamos el algoritmo de Co-Clustering Espectral al conjunto de datos mezclado con 5 clusters.

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

Calcular la puntuación de consenso

Calculamos la puntuación de consenso de los biclusters utilizando la función consensus_score().

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

Reordenar el conjunto de datos mezclado

Reordenamos el conjunto de datos mezclado para que los biclusters queden contiguos utilizando la función argsort() de numpy.

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

Visualizar los biclusters

Visualizamos los biclusters utilizando la función matshow().

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

Resumen

En este laboratorio, aprendimos cómo generar un conjunto de datos y aplicar el algoritmo de Co-Clustering Espectral para realizar el biclustering. El conjunto de datos original se generó utilizando la función make_biclusters, que creó una matriz con valores pequeños e implantó biclusters con valores grandes. Mezclamos las filas y columnas del conjunto de datos y lo pasamos al algoritmo de Co-Clustering Espectral. Calculamos la puntuación de consenso de los biclusters y reordenamos el conjunto de datos mezclado para que los biclusters queden contiguos. Finalmente, visualizamos los biclusters para mostrar qué tan precisamente el algoritmo los encontró.