3

我正在尝试使用 GaussianMixture 模型进行图像分割,所以我使用了 2 个组件,协方差矩阵 type="full" 并尝试使用 anaconda 附带的 Spyder3.6 运行。这是代码:

from scipy.misc import imread, imshow
from sklearn.mixture import GaussianMixture as GMM
import graph_tool.all as gt
from graph_tool.all import *

X=imread('2.jpg')
old=X.shape
X=X.reshape(-1,3)
gmm=GMM(covariance_type='full', n_components=2)
gmm.fit(X)
clusters=gmm.predict(X)
clusters=clusters.reshape(old[0],old[1])

但它显示 ValueError 和肯定的异常,我不知道为什么?这是错误的痕迹。

`

回溯(最近一次通话最后):

文件“/home/madhur/anaconda3/lib/python3.6/site-packages/sklearn/mixture/gaussian_mixture.py”,第 318 行,_compute_precision_cholesky cov_chol = linalg.cholesky(covariance, lower=True)
文件“/home/ madhur/anaconda3/lib/python3.6/site-packages/scipy/linalg/decomp_cholesky.py”,第 81 行,在 cholesky check_finite=check_finite)
文件“/home/madhur/anaconda3/lib/python3.6/site-packages /scipy/linalg/decomp_cholesky.py", line 30, in _cholesky
raise LinAlgError("%d-thleading minor not positive definite" % info)
numpy.linalg.linalg.LinAlgError: 2-th leading minor not positive

在处理上述异常的过程中,又出现了一个异常:

Traceback(最近一次调用最后):
文件“/home/madhur/Desktop/Project/graphcutmaterials/test.py”,第 19 行,在 gmm.fit(X)
文件“/home/madhur/anaconda3/lib/python3.6 /site-packages/sklearn/mixture/base.py”,第 207 行,适合 self._initialize_parameters(X, random_state)
文件“/home/madhur/anaconda3/lib/python3.6/site-packages/sklearn/mixture/ base.py”,第 157 行,在 _initialize_parameters self._initialize(X, resp)
文件“/home/madhur/anaconda3/lib/python3.6/site-packages/sklearn/mixture/gaussian_mixture.py”,第 643 行,在_initialize covariances, self.covariance_type)
文件“/home/madhur/anaconda3/lib/python3.6/site-packages/sklearn/mixture/gaussian_mixture.py”,第 320 行,在 _compute_precision_cholesky
引发 ValueError(estimate_precision_error_message)

ValueError:拟合混合模型失败,因为某些组件具有不明确的经验协方差(例如由单例或折叠样本引起)。尝试减少组件的数量,或增加 reg_covar。

`

4

1 回答 1

5

我认为原因已经在 ErrorInformation 中提出,这是“因为某些组件具有不明确的经验协方差(例如由单例或折叠样本引起)”。由于您将组件数设置为2,因此无法减少,因此建议您将参数“reg_covar”增加到1e-5(默认为1e-6)。

有关 GMM 参数的更多信息,请参见:https ://scikit-learn.org/stable/modules/generated/sklearn.mixture.GaussianMixture.html

于 2020-02-18T04:28:07.267 回答