본문 바로가기

인텔 AI 교육

인텔 AI 교육 - Module-11(K-평균 예제)

(해당 자료들은 인텔 AI for Future Workforce내용을 학습하고 가공한 내용입니다.)

 

< Module - 11 >

#K-Means(K-평균)

1. K-Means

  주어진 데이터를 k(사람이 지정)개의 클러스터로 묶는 알고리즘으로, 각 클러스터의 거리 차이의 분산을 최소화하는 방식으로 작동한다.

#소셜 미디어 전파성 예측

1. 문제

  클러스터 내의 기사가 비슷한 인기를 가질 수 있도록 기사 데이터 세트를 클러스터 그룹으로 나누어야 한다.

 

2. 라이브러리 

>>> import pandas as pd
>>> import numpy as np 
>>> import pandas as pd
>>> import matplotlib.pyplot as plt
>>> import seaborn as sns
>>> %matplotlib inline 


>>> sns.set("talk","darkgrid",font_scale=1,font="sans-serif",color_codes=True)
>>> from sklearn import metrics
>>> from sklearn.decomposition import PCA
>>> from sklearn.cluster import KMeans
>>> from sklearn.cluster import DBSCAN
>>> from sklearn.cluster import AgglomerativeClustering

# 데이터세트 가져오기
>>> df = pd.read_csv('[Dataset]_Module11_(Viral).csv')

 

3. 데이터 확인

>>> df.head()

 

4. K-평균 알고리즘 적용

>>> kmeans = KMeans(n_clusters=4)
# kmeans.fit 함수로 kmeans 모델을 피팅
>>> kmeans_output = kmeans.fit(X)
>>> y_kmeans = kmeans.predict(X)
>>> plt.scatter(X.iloc[:, 0], X.iloc[:, 1], c=y_kmeans, s=50, cmap='viridis')
>>> centers = kmeans.cluster_centers_
>>> plt.scatter(centers[:, 0], centers[:, 1], c='black', s=200, alpha=0.5);

  출력 결과 데이터 전체의 클러스터가 구분이 어려워 범위를 줄여 출력한다.

>>> X1 = X.iloc[:, 0:2]
>>> kmeans = KMeans(n_clusters=3)
>>> kmeans_output = kmeans.fit(X1)
>>> y_kmeans = kmeans.predict(X1)
>>> plt.scatter(X1.iloc[:, 0], X1.iloc[:, 1], c=y_kmeans, s=50, cmap='viridis')
>>> centers = kmeans.cluster_centers_
>>> plt.scatter(centers[:, 0], centers[:, 1], c='black', s=200, alpha=0.5);