스펙트럴 공동 클러스터링 알고리즘

Beginner

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

소개

이 실습에서는 스펙트럴 공동 클러스터링 (Spectral Co-Clustering) 알고리즘을 사용하여 데이터셋을 이분 클러스터링 (biclustering) 하는 방법을 보여줍니다. 데이터셋은 make_biclusters 함수를 사용하여 생성되며, 이 함수는 작은 값의 행렬을 만들고 큰 값으로 이분 클러스터를 심습니다. 그런 다음 행과 열을 섞어 스펙트럴 공동 클러스터링 알고리즘에 전달합니다. 섞인 행렬을 재정렬하여 이분 클러스터를 연속적으로 만드는 것은 알고리즘이 이분 클러스터를 얼마나 정확하게 찾았는지 보여줍니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근할 수 있습니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.

학습 중 문제가 발생하면 Labby 에 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

필요한 라이브러리 가져오기

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

데이터셋 생성

make_biclusters 함수를 사용하여 크기가 (300, 300) 이고 5 개의 이분 클러스터와 잡음이 5 인 데이터셋을 생성합니다.

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

원본 데이터셋 시각화

matshow() 함수를 사용하여 원본 데이터셋을 시각화합니다.

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

데이터셋 섞기

NumPy 의 permutation() 함수를 사용하여 데이터셋을 섞습니다.

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]

섞인 데이터셋 시각화

matshow() 함수를 사용하여 섞인 데이터셋을 시각화합니다.

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

스펙트럴 공동 클러스터링 알고리즘 적용

5 개의 클러스터를 사용하여 섞인 데이터셋에 스펙트럴 공동 클러스터링 (Spectral Co-Clustering) 알고리즘을 적용합니다.

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

합의 점수 계산

consensus_score() 함수를 사용하여 바이클러스터의 합의 점수를 계산합니다.

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

섞인 데이터셋 재정렬

NumPy 의 argsort() 함수를 사용하여 섞인 데이터셋을 재정렬하여 바이클러스터가 연속적으로 배치되도록 합니다.

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

바이클러스터 시각화

matshow() 함수를 사용하여 바이클러스터를 시각화합니다.

plt.matshow(fit_data, cmap=plt.cm.Blues)
plt.title("바이클러스터링 후; 바이클러스터를 보여주도록 재정렬됨")

요약

이 실습에서는 Spectral Co-Clustering 알고리즘을 사용하여 데이터셋을 생성하고 바이클러스터링하는 방법을 배웠습니다. 원래 데이터셋은 make_biclusters 함수를 사용하여 생성되었으며, 이 함수는 작은 값의 행렬을 만들고 큰 값으로 바이클러스터를 심었습니다. 데이터셋의 행과 열을 섞은 후 Spectral Co-Clustering 알고리즘에 전달했습니다. 바이클러스터의 합의 점수를 계산하고 섞인 데이터셋을 재정렬하여 바이클러스터가 연속적으로 배치되도록 했습니다. 마지막으로, 알고리즘이 바이클러스터를 얼마나 정확하게 찾았는지 보여주기 위해 바이클러스터를 시각화했습니다.