반응형
SMALL
이번 주말은 모처럼 집에만 있어 편안하네요~
가만히 드러누워 있기 지겨워 다시 학습을 시작!
이번 주제는 제목처럼 군집(Clustering) 분석 알고리즘 중 k-Means 알고리즘입니다
군집 분석 알고리즘은 데이터셋의 관측값이 갖고 있는 여러 속성을 분석하여
서로 비슷한 특징을 갖는 관측값끼리 같은 집단(Cluster)로 묶는 알고리즘입니다
클러스터가 여러 개가 존재한다하면
서로 다른 특성을 지닌 관측값들이 여러가지라는 의미가 되고
이런 특성을 이용해서 이상값, 중복값 등 특이 데이터를 찾는데 활용되기도 합니다
관측값을 몇 개의 집단으로 나눈다는 점에서 분류 알고리즘과 비슷하지만
군집 분석 알고리즘은 비지도학습 유형으로 정답이 없는 상태에서
데이터 자체의 유사성만을 기준으로 판단한다는 점에서 차이가 있습니다
k-Means 알고리즘은 데이터 간의 유사성을 측정하는 기준으로
각 클러스터의 중심까지의 거리를 이용합니다
다시 말하면, 새로운 관측값이 들어왓을 때
각 클러스터의 중심거리를 계산해서 가장 가까운 클러스터에 해당 데이터를 할당합니다
일단 이해가 잘 안되도 일단 직진-_-
# 판다스(Pandas)
import pandas
import matplotlib.pyplot as mp
# Prepare Data : Breast Cancer
uci_path = 'https://archive.ics.uci.edu/ml/machine-learning-databases/00292/Wholesale%20customers%20data.csv'
df = pandas.read_csv(uci_path, header = 0)
print(df.head(), end = '\n')
print(df.info(), end = '\n')
print(df.describe(), end = '\n')
x = df.iloc[ :, : ]
# Normalization
from sklearn import preprocessing
x = preprocessing.StandardScaler().fit(x).transform(x)
# cluster
from sklearn import cluster
k_Means = cluster.KMeans(init = 'k-means++', n_clusters = 5, n_init = 10)
k_Means.fit(x)
cluster_label = k_Means.labels_
print(cluster_label, end = '\n')
df['Cluster'] = cluster_label
print(df.head(), end = '\n')
# 시각화
df.plot(kind = 'scatter', x = 'Grocery', y = 'Frozen', c = 'Cluster', cmap = 'Set1', colorbar = False, figsize = (10, 10))
df.plot(kind = 'scatter', x = 'Milk', y = 'Delicassen', c = 'Cluster', cmap = 'Set1', colorbar = True, figsize = (10, 10))
mp.show()
mp.close()
# 동 떨어진 값 제거
mask = (df['Cluster'] == 0) | (df['Cluster'] == 4)
ndf = df[~mask]
ndf.plot(kind = 'scatter', x = 'Grocery', y = 'Frozen', c = 'Cluster', cmap = 'Set1', colorbar = False, figsize = (10, 10))
ndf.plot(kind = 'scatter', x = 'Milk', y = 'Delicassen', c = 'Cluster', cmap = 'Set1', colorbar = True, figsize = (10, 10))
mp.show()
mp.close()
위에서 사용한 데이터의 출처는 UCI ML Repository 입니다
https://archive.ics.uci.edu/ml/index.php
코드를 돌려보면 실행시킬 때마다 예측값의 분포가 달라집니다
이번 학습은 여기까지-_-
반응형
LIST
'Machine Learning' 카테고리의 다른 글
[Machine Learning] 군집(Clustering)_2 (0) | 2019.12.11 |
---|---|
[Machine Learning] 분류(Classification)_3 (0) | 2019.11.23 |
[Machine Learning] 분류(Classification)_2 (0) | 2019.11.23 |
[Machine Learning] 분류(Classification)_1 (0) | 2019.11.11 |
[Machine Learning] 회귀분석(Regression)_3 (0) | 2019.11.07 |