如何衡量高斯混合的性能?

How to measure performance of Gaussian mixture?

我有一个包含 27211 个样本和 90 个属性的数据集。此数据集没有 class 标签。我想将高斯混合拟合到数据集,但我不知道如何衡量性能。你能帮助我吗?

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import random
from sklearn.naive_bayes import GaussianNB
from sklearn import mixture

trainFile = TRAIN_PATH_NAME + "train" + str(j+1) + ".txt"
trainData = pd.read_csv(trainFile, sep=",", header=None)

np.random.seed(42)
g = mixture.GMM(n_components=60)
g.fit(trainData.values)
print("IS_COVERGED: ", g.converged_)
sampled = g.sample(trainData.values.shape[0])
return sampled

您可以对无监督学习使用不同的性能评估。 scikit-learn 提供了一些信息 here. Some of the evaluations are mutual information. Also, this post 可以给你一些见解。

由于您没有基本事实(标签),因此您无法对性能给出明确的估计,而必须依赖于选择的指标。评估集群的质量是一个很常见的问题。因此,周围有大量文档:

有几个选项可以衡量这个无监督案例的表现。对于基于真实概率的GMM,最常见的是BIC and AIC。它们立即包含在 scikit GMM class 中。

但是衡量一般集群性能的指标还有很多。它们在 scikit documentation. I find Silhouette-score 种直观的描述中得到了很好的描述。