Algoritmo de Co-Clustering Espectral

Beginner

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

Introdução

Este laboratório demonstra como usar o algoritmo de Co-Clustering Espectral para biclustering de um conjunto de dados. O conjunto de dados é gerado usando a função make_biclusters, que cria uma matriz de pequenos valores e implanta biclusters com valores grandes. As linhas e colunas são então embaralhadas e passadas para o algoritmo de Co-Clustering Espectral. Reorganizar a matriz embaralhada para tornar os biclusters contíguos mostra quão precisamente o algoritmo encontrou os biclusters.

Dicas da Máquina Virtual

Após o arranque da VM, clique no canto superior esquerdo para mudar para a aba Notebook para aceder ao Jupyter Notebook para a prática.

Por vezes, pode ser necessário esperar alguns segundos para o Jupyter Notebook terminar de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se tiver problemas durante a aprendizagem, não hesite em contactar o Labby. Forneça feedback após a sessão e resolveremos prontamente o problema para si.

Importação de bibliotecas necessárias

Precisamos importar bibliotecas necessárias, como numpy, matplotlib e 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

Gerar um conjunto de dados

Geramos um conjunto de dados com forma (300, 300) contendo 5 biclusters e ruído de 5 usando a função make_biclusters.

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

Visualizar o conjunto de dados original

Visualizamos o conjunto de dados original usando a função matshow().

plt.matshow(data, cmap=plt.cm.Blues)
plt.title("Conjunto de dados original")

Embaralhar o conjunto de dados

Embaralhamos o conjunto de dados usando a função permutation() do 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]

Visualizar o conjunto de dados embaralhado

Visualizamos o conjunto de dados embaralhado usando a função matshow().

plt.matshow(data, cmap=plt.cm.Blues)
plt.title("Conjunto de dados embaralhado")

Aplicar o algoritmo Spectral Co-Clustering

Aplicamos o algoritmo Spectral Co-Clustering ao conjunto de dados embaralhado com 5 clusters.

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

Calcular a pontuação de consenso

Calculamos a pontuação de consenso dos biclusters usando a função consensus_score().

score = consensus_score(model.biclusters_, (rows[:, row_idx], columns[:, col_idx]))
print("pontuação de consenso: {:.3f}".format(score))

Reorganizar o conjunto de dados embaralhado

Reorganizamos o conjunto de dados embaralhado para tornar os biclusters contíguos usando a função argsort() do numpy.

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

Visualizar os biclusters

Visualizamos os biclusters usando a função matshow().

plt.matshow(fit_data, cmap=plt.cm.Blues)
plt.title("Após o biclustering; reorganizado para mostrar os biclusters")

Resumo

Neste laboratório, aprendemos a gerar um conjunto de dados e a realizar o biclustering utilizando o algoritmo de Co-Clustering Espectral. O conjunto de dados original foi gerado usando a função make_biclusters, que criou uma matriz com valores pequenos e implantou biclusters com valores grandes. Embaralhamos as linhas e colunas do conjunto de dados e o passamos para o algoritmo de Co-Clustering Espectral. Calculamos a pontuação de consenso dos biclusters e reorganizamos o conjunto de dados embaralhado para tornar os biclusters contíguos. Finalmente, visualizamos os biclusters para mostrar a precisão com que o algoritmo os encontrou.