클러스터와 알려진 레이블 비교
Coddy Machine Learning 여정의 비지도 학습 섹션에 포함된 레슨. 51개 중 13번째.
레이블은 있지만 k-means가 이를 본 적이 없다면, 무엇을 찾았는지 확인하세요. pd.crosstab은 클러스터와 레이블의 각 쌍을 셉니다.
labels = KMeans(n_clusters=3, n_init=10, random_state=0).fit_predict(X)
print(pd.crosstab(labels, kind))길이와 카페인 함량을 기준으로 군집화한 3종류의 커피콩 150개: 군집마다 행 하나, 종류마다 열 하나:
각 군집은 대부분 한 가지 종류로 이루어져 있습니다. 콩 6개만 다른 군집에 들어갔습니다. 그리고 k-means는 레이블을 전혀 보지 않았습니다.
하지만 군집은 클래스가 아닙니다. 가까운 일치는 클래스들이 데이터에서 차이가 난다는 뜻입니다. 일치도가 낮은 것은 발견 사항이지 버그가 아닙니다.
챌린지
중급k-means 군집은 붓꽃 종을 찾아낼까요? 시작 코드는 꽃의 특성을 스케일링하고, 이름을 species에 저장한 뒤, k를 입력받아 군집화합니다.
- 군집과 종을 교차표로 나타내세요.
- 각 종에 대해 전체 개수 중 하나의 군집에 속하는 가장 큰 개수를 출력하세요.
- 단일 종만 포함하는 군집의 개수를 세세요.
다른 정원에서 k = 3인 경우:
setosa: 48 of 50 share a cluster
versicolor: 41 of 50 share a cluster
virginica: 33 of 50 share a cluster
Clusters with one species: 0 of 3직접 해보기
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
# 스케일링된 붓꽃 150개와 각 붓꽃의 품종명(k-means에는 숨김)
iris = load_iris()
X = StandardScaler().fit_transform(iris.data)
species = iris.target_names[iris.target]
k = int(input())
labels = KMeans(n_clusters=k, n_init=10, random_state=0).fit_predict(X)
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
비지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러