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 |