Я борюсь с довольно простой задачей. У меня есть вектор поплавков, к которому я хотел бы подгонять модель смеси Гаусса с двумя гауссовыми ядрами:
from sklearn.mixture import GMM
gmm = GMM(n_components=2)
gmm.fit(values) # values is numpy vector of floats
Теперь я хотел бы построить функцию плотности вероятности для модели смеси, которую я создал, но я не могу найти никакой документации о том, как это сделать. Как лучше всего действовать?
Edit:
Здесь - это вектор данных, которые я подхожу. Ниже приведен более подробный пример того, как я делаю:
from sklearn.mixture import GMM
from matplotlib.pyplot import *
import numpy as np
try:
import cPickle as pickle
except:
import pickle
with open('/path/to/kde.pickle') as f: # open the data file provided above
kde = pickle.load(f)
gmm = GMM(n_components=2)
gmm.fit(kde)
x = np.linspace(np.min(kde), np.max(kde), len(kde))
# Plot the data to which the GMM is being fitted
figure()
plot(x, kde, color='blue')
# My half-baked attempt at replicating the scipy example
fit = gmm.score_samples(x)[0]
plot(x, fit, color='red')
Построенная кривая не выглядит похожей на то, что я ожидаю. Он даже не кажется гауссовым, что немного странно, учитывая, что он был создан гауссовским процессом. Я сошел с ума?