본문 바로가기
Studying/Machine Learning

[머신러닝] K-Means Clustering - 물고기 데이터셋

by giem 2022. 7. 18.
반응형

2022.07.15 - [Studying/Machine Learning] - [머신러닝] K-Means Clustering 정리

 

[머신러닝] K-Means Clustering 정리

이전 포스트까지는 input, output이 정해져 있고 이 둘의 관계를 잘 설명하는 model을 학습시켜왔다. 이렇게 아웃풋(target)이 정해져 있고 학습에 이걸 사용하는 것을 supervised learning(지도 학습)이라고

gm-note.tistory.com

위의 글에 이어 실제 물고기의 길이, 무게 데이터로 물고기 종류를 clustering 해보겠다.


Load Data

 

먼저 필요한 패키지를 가져오고 data를 가져오겠다.

 

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

data = 'https://raw.githubusercontent.com/satishgunjal/datasets/master/Fish.csv'

df = pd.read_csv(data)

 

데이터는 위의 테이블과 같다.

 

여기서 나머지 데이터로 품종을 분류하고 싶으니까 x는 품종을 뺀 나머지 데이터를 저장하겠다.

 

x = df.iloc[:, 1:7].values

 


Clustering

 

Scikit-Learn에서 KMeans 함수를 가져와 사용하겠다.

 

kmeans = KMeans(n_clusters = 3, init = 'k-means++', max_iter = 300, n_init = 10, random_state = 0)
y_kmeans = kmeans.fit_predict(x)

 


visualize

 

결과를 그래프로 확인해보겠다.

 

plt.scatter(x[y_kmeans == 0, 0], x[y_kmeans == 0, 1], s = 100, c = 'purple')
plt.scatter(x[y_kmeans == 1, 0], x[y_kmeans == 1, 1], s = 100, c = 'orange')
plt.scatter(x[y_kmeans == 2, 0], x[y_kmeans == 2, 1], s = 100, c = 'green')

plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:,1], s = 100, c = 'red', label = 'Centroids')

plt.legend()

 

데이터가 잘 분류된 것을 확인할 수 있다.

 


K-Means Clustering은 이렇게 target label이 없는 데이터를 labeling 할 수 있게 만드는 방법이라고 볼 수 있다.

반응형

댓글