사이킷런을 이용한 귀납적 클러스터링

Beginner

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

소개

이 실습에서는 클러스터 레이블에서 분류기를 유도하여 클러스터링을 확장하는 방법인 귀납적 클러스터링에 대해 배웁니다. 파이썬의 scikit-learn 라이브러리를 사용하여 클러스터링을 확장하는 메타 추정기를 구현합니다.

VM 팁

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

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

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

학습 데이터 생성

이 단계에서는 클러스터링으로부터 학습 데이터를 생성합니다. scikit-learn 의 make_blobs 함수를 사용하여 표준 편차와 중심이 다른 3 개의 클러스터를 가진 5000 개의 샘플을 생성합니다.

X, y = make_blobs(
    n_samples=5000,
    cluster_std=[1.0, 1.0, 0.5],
    centers=[(-5, -5), (0, 0), (5, 5)],
    random_state=42,
)

클러스터링 알고리즘 학습

이 단계에서는 생성된 학습 데이터에 클러스터링 알고리즘을 학습시켜 클러스터 레이블을 얻습니다. scikit-learn 의 AgglomerativeClustering을 사용하여 3 개의 클러스터로 알고리즘을 학습시킵니다.

clusterer = AgglomerativeClustering(n_clusters=3)
cluster_labels = clusterer.fit_predict(X)

새로운 샘플 생성

이 단계에서는 새로운 샘플을 생성하고 원본 데이터셋과 함께 플롯합니다. make_blobs 함수를 다시 사용하여 10 개의 새로운 샘플을 생성합니다.

X_new, y_new = make_blobs(
    n_samples=10, centers=[(-7, -1), (-2, 4), (3, 6)], random_state=42
)

귀납적 학습 모델 선언

이 단계에서는 알 수 없는 인스턴스에 대한 클러스터 멤버십을 예측하는 데 사용될 귀납적 학습 모델을 선언합니다. scikit-learn 의 RandomForestClassifier를 분류기로 사용합니다.

classifier = RandomForestClassifier(random_state=42)
inductive_learner = InductiveClusterer(clusterer, classifier).fit(X)

알 수 없는 인스턴스에 대한 클러스터 멤버십 예측

이 단계에서는 생성된 새로운 샘플에 대한 클러스터 멤버십을 예측하기 위해 귀납적 학습 모델을 사용합니다. InductiveClusterer 클래스의 predict 함수를 사용하고 새로운 샘플과 그 가능한 클러스터를 플롯합니다.

probable_clusters = inductive_learner.predict(X_new)

plt.subplot(133)
plot_scatter(X, cluster_labels)
plot_scatter(X_new, probable_clusters)
plt.title("알 수 없는 인스턴스 분류")

요약

이 실험에서는 클러스터 레이블에서 분류기를 유도하여 클러스터링을 확장하는 귀납적 클러스터링 방법에 대해 배웠습니다. 파이썬의 scikit-learn 라이브러리를 사용하여 클러스터링을 확장하는 메타 추정기를 구현하고 생성된 학습 데이터에 클러스터링 알고리즘을 학습시켰습니다. 또한 새로운 샘플을 생성하고 귀납적 학습 모델을 사용하여 새로운 샘플에 대한 클러스터 멤버십을 예측했습니다.