如何使用高斯混合模型进行聚类?

时间:2019-03-14 16:21:59

标签: python machine-learning scikit-learn k-means gmm

我一直在使用k-Means将数据聚类为2类。但是,现在,我想使用另一种方法,并使用高斯混合模型将数据聚类为2类。我已经阅读了Scikit-Learn文档以及其他SO问题,但是无法理解如何在当前环境下使用GMM进行2类聚类。

我能够使用k-Means轻松将数据分为2类,如下:-

import pandas as pd
from scipy import stats
from sklearn.cluster import KMeans
import numpy as np

df = pd.read_pickle('my_df.pkl')
clmns = df.columns

df = df.fillna(df.mean())
df.isnull().any

df_tr_std = stats.zscore(df[clmns])

kmeans = KMeans(n_clusters = 2, random_state = 0, n_init = 100, max_iter=500, n_jobs = -1).fit(df_tr_std)
# >>> kmeans
# KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,
#     n_clusters=2, n_init=10, n_jobs=None, precompute_distances='auto',
#     random_state=0, tol=0.0001, verbose=0)
labels = kmeans.labels_

我希望能看到任何一个衬套/短代码段,我可以使用这些段将GMM模型拟合到我的数据(df_tr_std)上。我确信这必须是一个非常简单的过程才能适合GMM模型,但是我对如何将当前的k-Means上下文修改为GMM感到非常困惑。

1 个答案:

答案 0 :(得分:0)

请考虑以下内容:

Mixture Gaussians

在给定特定情况x和组平均值,方差σ2和标准差σ的情况下,该方程式将为您提供高斯分布。

Z得分将为您提供削减课程的位置,假设此时的概率为0.5,从而正确生成您的不同课程。 C是类的重心,N个例子。

Two Gaussians

Gauss Centroids