Unsupervised Learning 은 y 값이 없고 x 만 필요
kmeans() : 비슷한 특징을 갖는 것들끼리 n개의 그룹을 만들어 분류
from sklearn.cluster import KMeans
# 변수에 저장하여 사용
>>> kmeans = KMeans(n_clusters= 3, random_state=10)
# n_clusters = 그룹의 갯수 지정
# n_clusters 의 default 값은 8
>>> y_pred = kmeans.fit_predict(X) # 학습 x, 바로 예측

# 그룹 1인 그룹 사람들에게 푸시를 보낼 것이다. 이 그룹의 데이터를 가져와라.
>>> df.loc[df['Group'] == 1, ]
WCSS = 적절한 그룹의 개수 기준 확립
>>> wcss = []
>>> for i in range(1,10+1):
kmeans = KMeans(n_clusters=i, random_state=10)
kmeans.fit(X)
wcss.append(kmeans.inertia_)
>>> wcss
[308862.06,
212889.442455243,
143391.59236035674,
104414.67534220166,
75399.61541401484,
58348.64136331505,
51167.19736842105,
45324.85021951262,
40811.455768566826,
37141.48254409704]
Cluster 간의 거리의 합을 나타내는 inertia가 급격히 떨어지는 구간이 생기는데
이 지점의 K 값을 군집의 개수로 사용
inertia_속성으로 확인할 수 있다.

# hyper parameters => 사람이 결정해 줘야하는 파라미터 => 5
>>> kmeans = KMeans(n_clusters=5, random_state=1)
>>> y_pred = kmeans.fit_predict(X)
>>> y_pred
array([3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1,
3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1,
3, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 0, 2, 4, 2, 0, 2, 0, 2,
0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 4, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2,
0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2,
0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2,
0, 2])

'인공지능 > Machine Learning' 카테고리의 다른 글
[Machine Learning] 계층적 군집화 Hierarchical Clustering (0) | 2024.04.16 |
---|---|
[Machine Learning] 분류 예측 Decision Tree (0) | 2024.04.15 |
[Machine Learning] 분류 예측 Support Vector Machine (SVM) (0) | 2024.04.15 |
[Machine Learning] 분류 예측 K-NN (0) | 2024.04.15 |
[Machine Learning] 성능 측정 confusion_matrix(), accuracy_score(), classification_report() (1) | 2024.04.15 |