# 혼합 분포 군집
# 모형기반(model-based) 군집방법
# 데이터가 k개의 모수적 모형의 가중합으로 표현되는 모집단 모형으로부터 나왔다는 가정
# k개의 각 모형은 군집이며, 각 데이터는 추정된 k개의 모형 중 어느 모형으로부터 나옸을 확률이 높은지에 따라
# 군집의 분류가 만들어짐 -> 최대우도 추정법

# 혼합분포모형으로 설명할 수 있는 데이터의 형태 : 다봉형

# 사용 알고리즘 : EM(Expectation - Maximization)
# 각 자료에 대해 Z의 조건부분포로부터 조건부 기대값을 구할 수 있음

# 장점 : kmeans보다 더 통계적으로 엄밀한 결과를 얻을 수 있음
# 단점 : 데이터가 커지면, 알고리즘 적용시 시간/계산 비용 증가, 이상치 자료에 민감
import pandas as pd
import numpy as np
import sklearn
from sklearn.preprocessing import StandardScaler # 이상치에 민감하니 정규화 필요
from sklearn.mixture import GaussianMixture

iris = pd.read_csv('../data/iris.csv')
df = iris.drop('target', axis = 1)
df.head()

scaler = StandardScaler()
df_scaled = scaler.fit_transform(df)
# 가우시안 혼합모델 구축
gmm = GaussianMixture(n_componenets = 3)
gmm.fit(df_scaled) # array형태
gmm_labels = gmm.predict(df_scaled)

df['gmm_cluster'] = gmm_labels
df['gmm_cluster'].value_counts()

# 군집별 통계량 확인
clusters = [0,1,2]
df.groupby('gmm_clutser').mean()
df.groupby('gmm_clutser').var()

'ADP > 실기' 카테고리의 다른 글

연관분석  (0) 2024.01.28
자기조직화지도(Self-Organizing Map, SOM)  (1) 2024.01.28
비계층적 군집분석  (0) 2024.01.28
계층적 군집분석  (1) 2024.01.28
로지스틱 회귀분석  (1) 2024.01.27

+ Recent posts