인공지능 머신러닝 - Hierarchical Clustering 모델 (계층적 군집화)

반응형

# Hierarchical Clustering (=HC, 계층적 군집화)

  • Unsupervised Learning
  • 클러스터 계층 구조를 구축하려는 클러스터 분석 방법
    • 클러스터(군집화) : 유사한 속성들을 갖는 데이터들을 그룹화 한 것
  • 계층적 군집화 분석은 덴드로그램(Dendrogram) 이라는 그래프로 시각화
    • 덴드로그램을 통해 적절한 수준에서 트리를 잘라 여러개의 클러스터를 나눌 수 있음

<덴드로그램 그래프 예시>

  • K-Means와 달리 클러스터의 수를 사전에 정의하지 않아도 학습 수행

 

# Hierarchical Clustering 라이브러리 호출

import matplotlib.pyplot as plt
# 표 작성을 위한 라이브러리

import pandas
# 데이터프레임 사용을 위한 라이브러리

from sklearn.preprocessing import StandardScaler
# 피처 스케일링 표준화 사용을 위한 라이브러리

from sklearn.model_selection import train_test_split
# 인공지능 학습을 위한 라이브러리

import scipy.cluster.hierarchy as sch
# 계층적 군집화 인공지능 모델링을 위한 라이브러리
# 편의상 sch로 축약

from sklearn.metrics import confusion_matrix, accuracy_score
# 인공지능 성능을 확인하기 위한 라이브러리

 

# 예시에 쓰일 데이터프레임

  • 수입과 소비점수를 분석하여 클러스터링(그룹화) 해보기
    • 수입과 소비점수를 X변수에 저장

Mall_Customers.csv
0.00MB

 

# 덴드로그램 생성하기

  • sch.dendrogram( sch.linkage (데이터 , method='ward') )
    • method : 클러스터 간 연결 방법
      • ward : ward연결법 이용, 응집형이며 유사성이 있는 클러스터끼리 묶음
  • 덴드로그램을 통하여 최적의 클러스터 갯수 추정
    • 클러스터의 갯수 판단에는 정답이 없습니다.
sch.dendrogram( sch.linkage(X, method='ward') )
plt.title('Dendrogram')
plt.xlabel('Customers')
plt.ylabel('Eculidean Distances')
plt.show()

 

# HC 모델로 인공지능 학습하기

1. 데이터 준비

  • 우선 NaN값이 존재하는지 확인, 존재하면 NaN처리

 

  • 변수 지정, 데이터(X) 분리
    • X : 수입(Annual Income (k$)) / 소비점수(Spending Score (1-100))

 

2. HC 모델링

  • from sklearn.cluster import AgglomerativeClustering 호출
    • AgglomerativeClustering : 병합적 군집 함수
  • AgglomerativeClustering( n_clusters= 4)
    • n_clusters : n1의 갯수만큼 그룹을 K개로 분류
    • 위에서 확인한 덴드로그램을 보고 적당한 값 4로 정하여 설정

 

3. 인공지능 성능 테스트

반응형