Python sklearn.mixed.GMM将多条高斯曲线拟合到直方图中,这是一个EM算法错误
我使用sklearn.mixed.GMM将两条高斯曲线拟合到一个数据数组中,然后将其与数据直方图叠加(dat Distribution是两条高斯曲线的混合) 我的数据是一个浮点数列表,下面是我使用的代码行: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算
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对应于要用几个高斯拟合的某条曲线,则不应使用。看