Оценка модели гауссовой смеси с использованием показателя metri c? - PullRequest
0 голосов
/ 20 января 2020

У меня есть данные 1D (на данных столбца). Я использовал Gaussian Mixture Model (GMM) в качестве оценки плотности, используя эту реализацию в Python: https://scikit-learn.org/stable/modules/generated/sklearn.mixture.GaussianMixture.html. Опираясь на критерий AIC / BI C, я смог определить количество компонентов. После того, как я установил GMM, я составил оценку плотности ядра исходного наблюдения + выборочных данных, взятых из GMM. Сюжет оригинальных и отобранных снимков тихо похож (это хорошо). Но я хотел бы, чтобы некоторые показатели сообщали, насколько хороша подобранная модель.

g = GaussianMixture(n_components = 35)

data= df['x'].values.reshape(-1,1) # data taken from data frame (10,000 data pints)
clf= g.fit(data)# fit model

samples= clf.sample(10000)[0] # generate sample data points (same # as original data points)

Я нашел оценку в реализации, но не уверен, как реализовать. Я делаю это неправильно? или есть какой-нибудь лучший способ показать, насколько точна подобранная модель, кроме гистограммы или графиков плотности ядра?.

print(clf.score(data))
print(clf.score(samples))

Ответы [ 2 ]

1 голос
/ 20 января 2020

Вы можете использовать normalized_mutual_info_score, adjusted_rand_score или silhouette для оценки ваших кластеров. Все эти метрики реализованы в разделе sklearn.metrics.

РЕДАКТИРОВАТЬ : Вы можете проверить эту ссылку для более подробного объяснения.

В резюме:

  • Скорректированный индекс ранда : измеряет сходство двух назначений.

  • Нормализованная взаимная информация : измеряет согласие двух назначений.

  • Коэффициент силуэта : измеряет, насколько правильно назначена каждая отдельная точка.
gmm.fit(x_vec)

pred = gmm.predict(x_vec)

print ("gmm: silhouttte: ", silhouette_score(x_vec, pred))
0 голосов
/ 20 января 2020

Я бы лучше использовал перекрестную проверку и попытался увидеть точность обученной модели.

Используйте метод predict подобранной модели для прогнозирования меток невидимых данных (используйте перекрестную проверку и сообщить точное значение): https://scikit-learn.org/stable/modules/generated/sklearn.mixture.GaussianMixture.html#sklearn .mixture.GaussianMixture.predict

Пример игрушки:

g = GaussianMixture(n_components = 35)
g.fit(train_data)# fit model
y_pred = g.predict(test_data)

РЕДАКТИРОВАТЬ:

Есть несколько вариантов для измерения производительности вашего неконтролируемого дела. Для GMM, основанного на реальных вероятностях, наиболее распространенными являются BI C и AI C. Они немедленно включены в класс scikit GMM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...