【发布时间】:2018-06-30 09:42:24
【问题描述】:
我正在尝试使用 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 和肯定的异常,我不知道为什么?这是错误的痕迹。
`
Traceback(最近一次调用最后一次):
文件“/home/madhur/anaconda3/lib/python3.6/site-packages/sklearn/mixture/gaussian_mixture.py”,第 318 行,在 _compute_precision_cholesky cov_chol = linalg.cholesky(协方差,较低=真)
文件“/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”,第 30 行,在 _cholesky
raise LinAlgError("%d-th 前导次要不是正定的"% info)
numpy.linalg.linalg.LinAlgError: 2-thleading minor not positive 确定在处理上述异常的过程中,又发生了一个异常:
回溯(最近一次通话最后一次):
文件“/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)
_initialize_parameters 中的文件“/home/madhur/anaconda3/lib/python3.6/site-packages/sklearn/mixture/base.py”,第 157 行 self._initialize(X, resp)
_initialize 中的文件“/home/madhur/anaconda3/lib/python3.6/site-packages/sklearn/mixture/gaussian_mixture.py”,第 643 行 协方差,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。
`
【问题讨论】:
-
这里的X是什么形状?
-
80*120*3 是 X 的形状,因为 GMM 需要
-
好的。您能否添加一些导致此问题的示例数据?
-
嗨,你解决了吗?
标签: python-3.x numpy image-processing scikit-learn gmm