본문 바로가기
프로그래밍/머신러닝

비지도학습(K-mean)_파이썬으로 머신러닝 배우기

by 조크리 2021. 5. 20.
반응형

 

 

비지도학습의 평가 방법

 

1) completemcess

2) homogeneity

3) The V-measure(1과2의 평균)

 

 

 

 

1. K-평균 사용 방법 

 

1) 임의로 두 개를 선택한다.

2) 각 자료들은 가까운 두 그룹으로 배당한다.

3) 각 군집내의 자료들의 평균을 계산한다. 중심이 평균값이다.

4) 최대 반복수까지 또는 평균이 수렴할 때까지 반복한다. 

 

출처 https://untitledtblog.tistory.com/132

 

 

특징

1) 반드시 군집수를 결정해야한다.

2) 초기값이 중요하다(초기값이 서로 떨어진 것).

3) 이상한 자료에 민감하다.

 

 

2. Iris(붖꽃 데이터)로 K-Mean 사용해보기

 

from sklearn.cluster import KMeans
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target
print(y)
model=KMeans(n_clusters=3)
model.fit(X)
labels = model.labels_
print(labels)
y_p=model.predict(X)
print(y_p)
score=model.score(X)
print(score)

n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)
n_noise_ = list(labels).count(-1)

from sklearn import metrics
from sklearn.metrics.cluster import homogeneity_score
from sklearn.metrics.cluster import completeness_score,v_measure_score
print('Estimated number of clusters: %d' % n_clusters_)
print('Estimated number of noise points: %d' % n_noise_)
print("Homogeneity: %0.3f" % homogeneity_score(y, labels))
print("Completeness: %0.3f" % completeness_score(y, labels))
print("V-measure: %0.3f" % v_measure_score(y, labels))

 

3. K-평균 Iris 데이터 훈련 개수 바꾸어가며 확인해보기  

훈련 개수를 300에서 500으로 바꾸어가며 확인해보기  

from sklearn.cluster import KMeans
from sklearn import datasets
from sklearn import metrics
from sklearn.metrics.cluster import homogeneity_score
from sklearn.metrics.cluster import completeness_score,v_measure_score
def result():
  n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)
  n_noise_ = list(labels).count(-1)
  print('Estimated number of clusters: %d' % n_clusters_)
  print('Estimated number of noise points: %d' % n_noise_)
  print("Homogeneity: %0.3f" % homogeneity_score(y, labels))
  print("Completeness: %0.3f" % completeness_score(y, labels))
  print("V-measure: %0.3f" % v_measure_score(y, labels))

iris = datasets.load_iris()
X = iris.data
y = iris.target
print(y)

for i in range(300,500,50):
  model=KMeans(n_clusters=3,max_iter=i)
  model.fit(X)
  labels = model.labels_
  print(labels)
  y_p=model.predict(X)
  print(y_p)
  score=model.score(X)
  print(score)
  result()

반응형