Python scikit学习(sklearn)中高斯混合的负BIC值

Python scikit学习(sklearn)中高斯混合的负BIC值,python,scikit-learn,probability,bayesian,Python,Scikit Learn,Probability,Bayesian,在scikit learn中,GaussianMixture对象具有实现贝叶斯信息标准的方法bic(X),以选择更适合数据的组件数量。 这是一个用法示例: 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)

scikit learn
中,
GaussianMixture
对象具有实现贝叶斯信息标准的方法
bic(X)
,以选择更适合数据的组件数量。 这是一个用法示例:

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)
我在一个有600k行和7列的数据集上安装了一个GMM。BIC值始终为负值,例如
[-2000,-3000,-3300,…]


在方法
bic()
的文档中,它表示“越低越好”。在我的例子中,如果是负值,那么
-3300
是最佳值,还是指绝对值中的最低值?

通常,目标是最小化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]))