2015-09-06 4 views
3

Я поместил данные с GMM с данными, я хочу рассчитать среднеквадратичную ошибку модели, как я могу это сделать?Python: Как вычислить среднеквадратичную ошибку распределения?

Вот код для генерации данных

import numpy as np 
import matplotlib.pyplot as plt 
from matplotlib.colors import LogNorm 
from sklearn import mixture 
import matplotlib as mpl 

from matplotlib.patches import Ellipse 
%matplotlib inline 

n_samples = 300 

# generate random sample, two components 
np.random.seed(0) 
shifted_gaussian = np.random.randn(n_samples, 2) + np.array([20, 5]) 
sample= shifted_gaussian 

# fit a Gaussian Mixture Model with two components 
clf = mixture.GMM(n_components=2, covariance_type='full') 
clf.fit(sample) 

# Then how can I calculate the Mean square error of the fitted model? 

В моем мышлении, я могу сначала создать функцию kdensity, и для каждого наблюдения в sample, caluclate в kdensitity(x,y)-clf.score(x,y). Но я не уверен, что это правильный подход.

ответ

0

Посмотрите документацию здесь:

http://scikit-learn.org/stable/modules/generated/sklearn.mixture.GaussianMixture.html

Я думаю, вы можете попробовать:

covariances = clf.fit(sample).covariances_ MSE = np.diag(covariances)

это даст вам ковариационная матрица параметров подгонки. Тогда диагональные значения матрицы дадут вам среднеквадратичное значение параметров модели.

Или это может быть работа:

clf.fit(sample).get_params(deep=True) 
Смежные вопросы