Я пытаюсь использовать модель GaussianMixture для сегментации изображения, поэтому я использовал 2 компонента, ковариационную матрицу type = "full", и попытался запустить с помощью Spyder3.6, который поставляется с anaconda. Вот код:
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)
File " /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
поднять LinAlgError ("% d-й ведущий минор не положительно определен "% info)
numpy.linalg.linalg. LinAlgError: 2-й ведущий минор не положительно определенныйВо время обработки вышеуказанного исключения произошло другое исключение:
Отслеживание (последний вызов последним):
Файл "/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, соответственно)
Файл" /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 (valu_precision_error_message)ValueError: Подбор модели смеси не удалось, потому что некоторые компоненты имеют плохо определенную эмпирическую ковариацию (например, вызванную одиночными или свернутыми выборками). Попробуйте уменьшить количество компонентов или увеличить reg_covar.
`