728x90
Gaussian Mixture Model¶
- 확률 기반 군집화입니다.
- 적용 데이터가 여러 개의 가우시안 분포가 섞인 것으로 간주합니다.
즉, 전체 데이터 세트는 이를 구성하는 서로 다른 정규 분포 형태를 가진 여러 가지 확률 분포 곡선으로 구성될 수 있고, 개별 데이터가 이 중 어떤 정규 분포에 속하는지 결정하는 방식입니다.
KMeans는 원형의 범위에서 군집화를 수행합니다.
KMeans 보다 유연하게 다양한 데이터 세트에 잘 적용될 수 있다 (가령 직선으로 밀집된 데이터)
In [1]:
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from sklearn.mixture import GaussianMixture
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
%matplotlib inline
In [ ]:
iris = load_iris()
feature_names = ['sepal_length','sepal_width','petal_length','petal_width']
# 보다 편리한 데이타 Handling을 위해 DataFrame으로 변환
iris_df = pd.DataFrame(data=iris.data, columns=feature_names)
iris_df['target'] = iris.target
In [2]:
gmm = GaussianMixture(n_components=3, random_state=0).fit(iris.data)
gmm_cluster_labels = gmm.predict(iris.data)
# 클러스터링 결과를 iris_df 의 'gmm_cluster' 컬럼명으로 저장
iris_df['gmm_cluster'] = gmm_cluster_labels
iris_df['target'] = iris.target
# target 값에 따라서 gmm_cluster 값이 어떻게 매핑되었는지 확인.
iris_result = iris_df.groupby(['target'])['gmm_cluster'].value_counts()
print(iris_result)
target gmm_cluster
0 0 50
1 2 45
1 5
2 1 50
Name: gmm_cluster, dtype: int64
728x90
'Data Analytics with python > [Machine Learning ]' 카테고리의 다른 글
[Classification] Decision Tree (0) | 2023.02.15 |
---|---|
[Clustering] DBSCAN (0) | 2023.02.15 |
[Clustering] MeanShift (0) | 2023.02.14 |
[Clustering] K-means (0) | 2023.02.14 |
[Dimension Reduction] NMF 변환 (0) | 2023.02.13 |
댓글