이론 문제 1. 답: 3

다음 중 KMeans에 관한 질문 중 틀린 것을 고르시오.

  1. k-평균 알고리즘(K-means clustering algorithm)은 주어진 데이터를 k개의 클러스터로 묶는 알고리즘이다. ⭕
  2. KMeans는 각 클러스터와 거리 차이의 분산을 최소화하는 방식으로 동작한다. ⭕
  3. KMeans는 클러스터 개수인 k값을 지정해주지 않아도 동작할 수 있다. ❌
  4. 엘보우 방법은 클러스터 개수를 늘려가면서 이너셔의 변화를 관찰하여 최적의 클러스터 개수를 찾는 방법이다. ⭕
  5. max_iter는 k-평균 알고리즘의 한 번 실행에서 최적의 센트로이드를 찾기 위해 반복할 수 있는 최대 횟수입니다. ⭕

실습 문제 2. ✅

혼공이는 이번에 배운 KMeans를 실습하고자 한다. MinMaxScaler()를 이용해서 전처리를 진행한 후 ItemsBought과 ItemsReturned로 클러스터링을 하려고 한다. 반복문을 이용하여 여러 k값을 넣어 아래의 그래프를 만들었다.

CustomerDataSet.csv


from google.colab import files
uploaded = files.upload()

import pandas as pd
import io
data = pd.read_csv(io.StringIO(uploaded['CustomerDataSet.csv'].decode('utf-8')))

출력

다음과 같이 KMeans 클래스를 이용해 k값을 여러개 넣어 확인해주세요.


import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
from sklearn.cluster import KMeans

customer = data[['ItemsBought', 'ItemsReturned']]

scaler = MinMaxScaler()
customer_scaled = scaler.fit_transform(customer)

f, axs = plt.subplots(3, 2, figsize=(10, 10))
plt.subplots_adjust(wspace=0.2, hspace=0.5)

for i in range(3):
  for j in range(2):
    k = 2*i+j+1
    km = KMeans(n_clusters=k)
    km.fit(customer_scaled)

    for w in range(k):
      axs[i, j].scatter(customer_scaled[km.labels_ == w, 0], customer_scaled[km.labels_ == w, 1])

    axs[i, j].set_title("K value = %d"%k)
    axs[i, j].set_xlabel("ItemsBought")
    axs[i, j].set_ylabel("ItemsReturned")

plt.show()

Untitled

이론 문제 3. 답: 2,5❓

다음 중 PCA에 대해 틀린 것을 모두 고르시오.