Python sklearn.mixed.GMM将多条高斯曲线拟合到直方图中,这是一个EM算法错误

Python sklearn.mixed.GMM将多条高斯曲线拟合到直方图中,这是一个EM算法错误,python,machine-learning,scikit-learn,curve-fitting,gaussian,Python,Machine Learning,Scikit Learn,Curve Fitting,Gaussian,我使用sklearn.mixed.GMM将两条高斯曲线拟合到一个数据数组中,然后将其与数据直方图叠加(dat Distribution是两条高斯曲线的混合) 我的数据是一个浮点数列表,下面是我使用的代码行: clf = mixture.GMM(n_components=1, covariance_type='diag') clf.fit(listOffValues) 如果将n_components设置为1,则会出现以下错误: “(或增加n_init)或检查退化数据。”) 运行时错误:EM算

我使用sklearn.mixed.GMM将两条高斯曲线拟合到一个数据数组中,然后将其与数据直方图叠加(dat Distribution是两条高斯曲线的混合)

我的数据是一个浮点数列表,下面是我使用的代码行:

clf = mixture.GMM(n_components=1, covariance_type='diag')
clf.fit(listOffValues)  
如果将n_components设置为1,则会出现以下错误:

“(或增加n_init)或检查退化数据。”) 运行时错误:EM算法在给定初始参数的情况下永远无法计算有效的似然。尝试不同的初始化参数(或增加n_init)或检查退化数据。

如果我将n_分量用于2,则会出现以下错误:

(self.n_组件,X.shape[0])) ValueError:GMM估计有2个分量,但只得到1个样本。

对于第一个错误,我尝试更改GMM的所有init参数,但没有任何区别

尝试了一个随机数数组,代码运行得非常好。 我想不出可能是什么问题

是否存在我忽略的实现问题


谢谢您的帮助。

如果我理解正确,您希望使用高斯分布拟合数据分布,并且每个元素只有一个特征。然后,应将向量重塑为列向量:

listOffValues = np.reshape(listOffValues, (-1, 1))

否则,如果listOffValues对应于要用几个高斯拟合的某条曲线,则不应使用。如果我理解正确,请参见

——您希望用高斯分布拟合数据分布,并且每个元素只有一个特征。然后,应将向量重塑为列向量:

listOffValues = np.reshape(listOffValues, (-1, 1))
否则,如果listOffValues对应于要用几个高斯拟合的某条曲线,则不应使用。看