如何解决scikit-learnsklearn中的GaussianMixture的负BIC值
在'schedule': crontab(minute=30,hour='1,3,4,6')
中,scikit-learn
对象具有方法GaussianMixture
,该方法实现贝叶斯信息准则以选择更适合数据的组件数。
这是用法示例:
bic(X)
我正在将GMM拟合到具有60万行和7列的数据集。 BIC值始终为负,例如from sklearn import mixture
for n in range(0,10):
gmm = mixture.GaussianMixture(n_components=n,max_iter=1000,covariance_type='diag',n_init=50)
gmm.fit(data)
bic_n = gmm.bic(data)
。
在方法[-2000,-3000,-3300,..]
的文档中,它说“越低越好”。在我的示例中为负值的情况下,bic()
是最佳值还是绝对值的最小值?
解决方法
通常,目标是使BIC最小化,因此,如果您处于负数范围内,则模数最大(负数范围内最深的负数)的负数表示首选模型。 >
def bic(self,X):
"""Bayesian information criterion for the current model on the input X.
Parameters
----------
X : array of shape (n_samples,n_dimensions)
Returns
-------
bic : float
The lower the better.
"""
return (-2 * self.score(X) * X.shape[0] +
self._n_parameters() * np.log(X.shape[0]))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。