sklearn.mix . gmm拟合多个高斯曲线成直方图,EM算法错误



我使用sklearn.mix . gmm将两条高斯曲线拟合到数据数组中,然后用数据直方图覆盖它(数据扰动是两条高斯曲线的混合物)。

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

clf = mixture.GMM(n_components=1, covariance_type='diag')
clf.fit(listOffValues)  

如果我设置n_components为1,我得到以下错误:

"(或增加n_init)或检查退化数据")RuntimeError:给定初始参数,EM算法无法计算有效的似然。尝试不同的初始化参数(或增加n_init)或检查退化数据

,如果我使用n_components到2,错误是:

(自我。n_components, X.shape [0]))

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

尝试了一个随机数数组,代码工作得很好。我想不出可能是什么问题。

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

谢谢你的帮助。

如果我理解正确的话——你想用高斯分布来拟合你的数据分布,并且每个元素只有一个特征。那么你应该将你的向量重塑为列向量:

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

否则,如果你的listOffValues对应于一些曲线,你想用几个高斯函数来拟合它,那么你应该使用curve_fit。参见Python的高斯拟合

相关内容

  • 没有找到相关文章

最新更新