Unsupervised Learning

실행 준비

실습 코드 앞의 코드 셀에서 import numpy as np, import matplotlib.pyplot as plt를 실행하세요. 배열 연산에는 np, 그림에는 plt를 사용합니다.

학습 목표

군집 수와 스케일을 바꾸면 같은 자료의 묶음도 달라집니다. 군집 번호 자체에 의미를 부여하지 않고 구조를 읽습니다.

군집 수와 관성값

시작 조건

make_blobs(n_samples=180,centers=3,cluster_std=.8,random_state=7), K∈{2,3,4}K\in\{2,3,4\}를 사용합니다.

진행 방법

  1. 각 K에서 KMeans(random_state=7,n_init=10)를 학습하세요.
  2. 군집 중심·배정 결과를 그리고 Inertia와 Silhouette를 적으세요.

남길 결과

from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
X,_=make_blobs(n_samples=180,centers=3,cluster_std=.8,random_state=7)
model=KMeans(n_clusters=3,random_state=7,n_init=10).fit(X)
print(model.inertia_,silhouette_score(X,model.labels_))

결과 기록·자가 점검

K:

Inertia:

Silhouette:

군집 수별 관찰:

확인할 점

특징 단위 변화

시작 조건

X의 첫 열만 10배 하고 원본·변경본·열별 Standardization 결과를 비교합니다.

진행 방법

  1. 원본 X, 첫 열을 10배 한 X2, X2를 열별 Standardization한 자료를 각각 준비하세요.
  2. 각 자료에서 K∈{2,3,4}K\in\{2,3,4\}의 KMeans를 다시 학습하세요. random_state=7, n_init=10은 유지합니다.
  3. 자료 조건별 군집 배정·중심을 그림으로 표시하고 K별 Inertia·Silhouette를 같은 형식의 표에 기록하세요. 첫 열을 확대했을 때 군집 배정과 중심이 달라졌는지 그림에서 판단하고, 그 근거를 설명하세요.

남길 결과

import numpy as np
from sklearn.preprocessing import StandardScaler
X2=X.copy();X2[:,0]*=10

결과 기록·자가 점검

자료 조건·K:

군집 그림·중심:

Inertia:

Silhouette·군집 방향 해석:

확인할 점

다른 입력에서도 확인하기

시작 조건

cluster_std=1.6으로 바꾼 자료에서 같은 K들을 비교합니다.

진행 방법

  1. make_blobs에서 cluster_std만 1.6으로 바꾸고 표본 수·중심 수·Seed는 유지하세요.
  2. 같은 세 K로 KMeans를 학습해 군집 그림과 Inertia·Silhouette를 구하세요. cluster_std=.8의 기록 옆에 같은 K의 결과를 적으세요.
  3. 생성 시 세 중심이 있다는 사실과, 산점도에서 세 집단이 뚜렷하게 분리되어 보이는지를 구분해 설명하세요.

남길 결과

# 앞 활동의 데이터와 함수를 사용해 지정된 새 예제를 검사하세요.

결과 기록·자가 점검

cluster_std·K:

군집 그림:

Inertia·Silhouette:

두 자료의 분리 양상:

확인할 점