Kmeans 는 unsupervised learning 이다
지금까지는 문제 - 결과를 통해 학습한 내용으로 결과를 도출해냈다면
이제는 결과가 없는 문제만 가지고 쌩으로 도출해내야한다.
그 방법 중 하나로 kmeans 방식으로 임의의 값을 주어지고 구역을 나눠 그 구역안에 값들의
평균을 구해 값을 재지정하여 데이터의 이동을 파악하는 방식이다.
위 사진처럼 빨간점 , 푸른점 을 임의로 두고 두 값의 기울기가 90도인 선을 그어 구역을 나눈뒤
구역별 데이터의 평균을 구한 뒤 또다시 그 두 값의 기울기로 구역을 나눈다.
이러한 과정을 계속 반복하여 데이터의 이동이 없을 때 구역을 확정 짓고 결과값을 내놓게 된다.
# set lib
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# data read
df = pd.read_csv('../data/Mall_Customers.csv')
# set X -> y는 존재할수가 없다.
X = df.iloc[:,3:]
# 모델링
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3 , random_state=2 )
# predict
y_pred = kmeans.fit_predict(X)
Elbow MeThod 란 ?
K-means의 n_cluster 값으로 어떤 값인게 좋은지 알아보는 방법이다.
wcss = list()
for k in np.arange(1,10+1) :
kmeans=KMeans(n_clusters=k , random_state=5)
kmeans.fit(X)
wcss.append(kmeans.inertia_)
# 반복문을 통해 클러스터에 0~ 원하는 수만큼을 넣어 모든 결과값을 확인한다.
# 차트로 나타내어 기울기가 급감하는 구간이 보인다면 그 이상 그룹을 나누는 것은
# 의미가 없다.
plt.plot(np.arange(1,10+1) , wcss)
plt.title('The Elbow Method')
plt.xlabel('Number of Clusters')
plt.ylabel('WCSS')
plt.show()
위 차트는 5개부터는 그룹의 의미가 크게 없기 때문에 n_cluster 값을 5로하는게 가장 좋은 선택이라
할 수 있다. 물론 꼭 이 값으로만 하라는 법은 없기 때문에 결과가 이렇다 정도로만 생각하자.
'개발 > 머신러닝' 카테고리의 다른 글
파이썬 머신러닝 - Neural Networks (0) | 2022.12.27 |
---|---|
파이썬. 머신러닝 - Hierarchical_clusterning (0) | 2022.12.05 |
파이썬. 머신러닝 - Decision Tree, Random Forest (0) | 2022.12.02 |
파이썬.머신러닝 - Grid Search (0) | 2022.12.02 |
파이썬. 머신러닝 - Support Vector Machine (0) | 2022.12.02 |