반응형
- Nan 확인
df.isna().sum() |
- X,y 구분
X = df.iloc[:, 3:] |
ㄴ y값은 기존 데이터에 있는 것이 아니라, 우리가 그룹으로 묶어야하므로, 따로 만들어야한다.
- 모델링.. 하기 전에!
from sklearn.cluster import KMeans kmeans = KMeans(n_clusters= , random_state= ) |
- 적절한 k값(몇개 그룹)을 찾기 위해서는, WCSS값을 확인해야한다.
ㄴ 따라서 k를 1부터 10까지 다 수행해 보고나서
ㄴ WCSS 값을 확인해 본다.
ㄴ 이때, 엘보우 메소드(Elbow Method)를 이용해서, 최적의 k값을 찾도록 한다.
wcss = [] for k in range(2, 10+1): kmeans = KMeans(n_clusters=k,random_state= 42) kmeans.fit(X) wcss.append(kmeans.inertia) print(wcss) |
ㄴ inertia: WCSS 값
- The Elbow Method 이용
plt.plot(range(2,10+1),wcss) plt.title('The Elbow Method') plt.xlabel('Number of Clusters') plt.ylabel('WCSS') plt.show() |
ㄴ 보아하니, 5개로 하는 게 더 나은 것 같다.
- 모델링
kmeans = KMeans(n_clusters=5,random_state=42) |
- 훈련 및 예측
y_pred = kmeans.fit_predict(X) |
- Grouping 한 결과를 데이터프레임에 추가해준다.
df['Group'] = y_pred |
- 그래프로 보기
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() |
전체적인 흐름
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sb df = pd.read_csv('data/Mall_Customers.csv') df.isna().sum() X = df.iloc[:, 3:] —------ wcss = [] for k in range(2, 10+1): kmeans = KMeans(n_clusters=k,random_state= 42) kmeans.fit(X) wcss.append(kmeans.inertia_) print(wcss) plt.plot(range(2,10+1),wcss) plt.title('The Elbow Method') plt.xlabel('Number of Clusters') plt.ylabel('WCSS') plt.show() —------ from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=5,random_state=42) y_pred = kmeans.fit_predict(X) df['Group'] = y_pred —- 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() |
반응형
'Python-머신러닝' 카테고리의 다른 글
Word Cloud 1 (0) | 2022.05.10 |
---|---|
Unsupervised Learning: Hierarchical Clustering (0) | 2022.05.10 |
Unsupervised Learning(비지도 학습): K-Means Clustering (0) | 2022.05.10 |
non-linear : Decision Tree (0) | 2022.05.10 |
실습2: 하이퍼 파라미터, 좋은 모델 조합 도출 방법 : Grid Search (0) | 2022.05.10 |