K-Means 알고리즘의 k를 정하는 방법
WCSS(Within Clusters Sum of Squares)
1) 적절한 k 값(몇 개 그룹)을 찾기 위해서는 WCSS 값을 확인해야 한다.
2) 따라서 k는 1부터 10까지 다 수행해보고
3) WCSS 값을 확인해 본다.
4) 이때 엘보우 메소드를 이용해서 최적의 K 값을 찾도록 한다.
wcss = []
for k in range(1, 11) :
kmeans = KMeans(n_clusters= k, random_state=42)
kmeans.fit(X)
wcss.append(kmeans.inertia_)
plt.plot(range(1, 11), wcss)
plt.title('Thew Elbow Method')
plt.xlabel('Number of Clusters')
plt.ylabel('WCSS')
plt.show()
찾은 k 값으로 KMeans 알고리즘을 통해 k개의 그룹을 만든다.
kmeans = KMeans(n_clusters=5, random_state=42)
y_pred = kmeans.fit_predict(X)
y_pred
새로운 컬럼 'Group'을 만든 후, 예측한 군집화 데이터를 넣어준다.
df['Group'] = y_pred
df
plt.figure(figsize=[12,8])
plt.scatter(X.values[y_pred == 0, 0], X.values[y_pred == 0, 1], s = 100, c = 'red', label = 'Cluster 1')
plt.scatter(X.values[y_pred == 1, 0], X.values[y_pred == 1, 1], s = 100, c = 'blue', label = 'Cluster 2')
plt.scatter(X.values[y_pred == 2, 0], X.values[y_pred == 2, 1], s = 100, c = 'green', label = 'Cluster 3')
plt.scatter(X.values[y_pred == 3, 0], X.values[y_pred == 3, 1], s = 100, c = 'cyan', label = 'Cluster 4')
plt.scatter(X.values[y_pred == 4, 0], X.values[y_pred == 4, 1], s = 100, c = 'magenta', label = 'Cluster 5')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s = 300, c = 'yellow', label = 'Centroids')
plt.title('Clusters of customers')
plt.xlabel('Annual Income (k$)')
plt.ylabel('Spending Score (1-100)')
plt.legend()
plt.show()
'머신러닝' 카테고리의 다른 글
데이터 프레임의 날짜 문자열 컬럼을, datetime64로 변경하는 법 (0) | 2022.05.11 |
---|---|
[ 오류 해결 ] pd.read_csv 에러, Error tokenizing data. C error ~ (0) | 2022.05.11 |
Prophet 라이브러리 사용법 (0) | 2022.05.11 |
Hierarchical Clustering의 Dendrogram (0) | 2022.05.09 |
머신러닝 - Linear Regression ( 선형 회귀 ) (2) | 2022.05.06 |