본문 바로가기
인공지능/Machine Learning

[Machine Learning] 평균군집 K-Means Clustering

by coding_su 2022. 12. 5.

📝머신러닝 K-Means Clustering

※ 언수퍼바이즈드 러닝에 y 는 없다 X 값만 필요

from sklearn.cluster import KMeans

 

kmeans() : n개의 그룹을 만들어 분류한다 (비슷한 특징을 갖는 것들끼리 묶는다)

# 변수에 저장하여 사용
kmeans = KMeans(n_clusters= 3, random_state=2)
# n_clusters= 그룹의 갯수 지정

kmeans = KMeans(n_clusters= 3, random_state=2)

# 학습이 아닌 예측을 시킨다
y_pred = kmeans.fit_predict(X)

# 예측한 데이터는 새로운 컬럼에 저장해 활용
df['Group'] = y_pred

# ex1) 그룹이 3인사람 가져오기
group3 = df.loc[ df['Group'] == 3 ]

# ex2) 피봇테이블 활용해 평균 구하기
pd.pivot_table(df, index='Group', aggfunc=np.mean)

 

몇개의 그룹으로 묶는 것이 좋은지 알아보기 (WCSS)

wcss = []
for k in np.arange(1,10+1) : # 1개부터 10개까지
    kmeans = KMeans(n_clusters= k, random_state= 5)
    kmeans.fit(X)
    wcss.append( kmeans.inertia_ )

 

각 클러스터의 갯수마다 구한 WCSS 값을 차트로 나타낸다 (엘보우메소드)

x = np.arange(1, 10+1)
plt.plot(x, wcss)
plt.title('The Elbow Method')
plt.show()

댓글