출처: https://astrocosmos.tistory.com/202 [ASTROCOSMOS:티스토리] 비지도 학습] k-means :: 하나둘셋넷
728x90

군집분석

1. 라이브러리 로딩
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 클러스터링을 위한 함수
from sklearn.cluster import KMeans

# 데이터 만들기
from sklearn.datasets import make_blobs
x, y = make_blobs(n_samples = 300, center=4, cluster_std=0.60, random_state = 0)
x = pd.DataFrame(x, columns = ['x1', 'x2'])
y = pd.Series(y, name = 'shape')

2. k-means
(1) k means 모델 만들기

1) 군집모델 생성
# k means 학습
model = KMeans(n_cluster=2, n_init='auto' )
model.fit(x)

# 예측
pred = model.predict(x)

# feature + pred + y 붙여서 비교
pred = pd.DataFrame(pred, columns = ['predicted'])
result = pd.concat( [ x, pred, y ], axis = 1)

시각화

# 코드
plt.scatter(result['x1'], result['x2'], c=result['predicted'], alpha =0.5)
plt.scatter(centers['x1'], centers['x2'], s = 50, marker ='D', c='r'

 

적정한 k 값 찾기

# k means 모델을 생성하게 되면 inertia 값을 확인 가능

model.inertia_
from sklearn.cluster import KMeans

kvalues = range(1, 10)
inertia = []

for k in kvalues:
    model = KMeans(n_clusters = k, n_init = 'auto')
    model.fit(x)
    inertias.append(model.inertia_)

# 그래프 그리기
plt.plot(kvalues, inertias, '-o')
plt.xlabel('numbers of clusters, k')
plt.ylabel('inertia')

# 적정한 k 값을 찾은 경우

 

분석 방법

 

 

728x90

'데이터 - 머신러닝 비지도 학습' 카테고리의 다른 글

비지도 학습] "k-means 미프 실습"  (0) 2023.09.26
비지도 학습] PCA  (0) 2023.09.20

+ Recent posts