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.