Как измерить производительность гауссовой смеси?

У меня есть набор данных с 27211 выборками и 90 атрибутами. Этот набор данных не имеет метки класса. Я хочу приспособить гауссову смесь к набору данных, но я не знаю, как измерить производительность. Вы можете мне помочь?

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

2 ответа

Решение

Поскольку у вас нет основной истины (меток), вы не можете дать определенную оценку производительности и должны полагаться на метрику выбора. Это довольно распространенная проблема для оценки качества кластеров. Поэтому есть много документации:

Есть несколько вариантов измерения производительности в этом неконтролируемом случае. Для GMM, основанных на реальных вероятностях, наиболее распространенными являются BIC и AIC. Они сразу же включаются в класс scikit GMM.

Но есть еще много метрик для измерения производительности общих кластеров. Они хорошо описаны в документации Scikit. Я нахожу Силуэт- интуитивно понятным.

Вы можете использовать различные оценки производительности для обучения без учителя. scikit-learn предоставляет некоторую информацию здесь. Некоторые оценки являются взаимной информацией. Кроме того, этот пост может дать вам некоторое представление.

Другие вопросы по тегам