【发布时间】:2018-09-13 18:10:36
【问题描述】:
我知道借助 scikit 工具,我们可以轻松计算高斯混合模型的 BIC 或分数,如下所示。
clf.fit(data)
bic=clf.bic(data)
score=clf.score(data)
http://scikit-learn.org/stable/modules/generated/sklearn.mixture.GaussianMixture.html
但我的问题是,当我已经有了权重、均值、协方差和数据时,如何在不使用 fit 方法的情况下计算 bic 或 score?
我可以设置为
clf = mixture.GaussianMixture(n_components=3, covariance_type='full')
clf.weights_=weights_list
clf.means_=means_list
clf.covariances_=covariances_list
或
clf.weights_init=weights_list
clf.means_init=means_list
clf.precisions_init =np.linalg.inv(covariances_list)
但是当我尝试使用 bic 时,
bic=clf.bic(data)
我收到错误消息说
sklearn.exceptions.NotFittedError:此 GaussianMixture 实例尚未拟合。在使用此方法之前,使用适当的参数调用“fit”。
我不想运行 fit,因为它会改变给定的权重、均值和协方差。 我能做些什么? 谢谢
【问题讨论】:
-
在此处查看
bic()的源代码:github.com/scikit-learn/scikit-learn/blob/a24c8b46/sklearn/…