ADP/실기

계층적 군집분석

hyerimir 2024. 1. 28. 14:38

 

# n개의 군집으로 시작해 점차 군집의 개수를 줄여나가는 방법
# 종류 : 최단연결법, 최장연결법, 평균연결법, 와드연결법
# 군집분석시, 데이터의 모든 요소가 유한해야함(NaNs, infs가 없어야 함)

import pandas as pd
import numpy as np
from scipy.cluser.hierarchy import dendrogram, linkage, fcluster
from matplotlib import pyplot as plt

US = pd.read_csv('USArrest.csv')
US.hea()

US.columns = ['State', 'Murder', 'Assault', 'UrbanPop', 'Rape']
labelList = US.State.tolist()
US.head()
# 최단연결법
single = linkage(US.iloc[:, 1::], metric = 'euclidean', method = 'single')

# 덴드로그램 그리기
plt.figure(figsize = (10, 7))
dendrogram(single, orientation = 'top', labels = labelList, distnace_sort = 'descending',
	color_threshold = 25, show_leaf_counts = True)
plt.axhline(y=24, color = 'r', linewidth=1)
plt.show

# state마다 어떤 군집에 설정되었는지 확인
assignments = fcluster(single, 25, 'distance')
assignments

US['cluster'] = assignments
US.groupby('cluster').mean()