gpt4 book ai didi

python - sklearn.mixture.GMM 将多条高斯曲线拟合成直方图,EM算法错误

转载 作者:行者123 更新时间:2023-11-30 09:21:55 27 4
gpt4 key购买 nike

我正在使用 sklearn.mixture.GMM 将两条高斯曲线拟合到一组数据,然后将其与数据直方图重叠(数据干扰是 2 条高斯曲线的混合)。

我的数据是 float 列表,这是我正在使用的代码行:

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

如果我将 n_components 设置为 1,则会收到以下错误:

“(或增加 n_init)或检查退化数据。”)RuntimeError:EM 算法永远无法计算给定初始参数的有效可能性。尝试不同的初始化参数(或增加 n_init)或检查退化数据。

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

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

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

尝试了一组随机数,代码运行得很好。我不知道可能是什么问题。

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

感谢您的帮助。

最佳答案

如果我理解正确的话 - 您希望用高斯拟合数据分布,并且每个元素只有一个特征。您应该将矢量 reshape 为列矢量:

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

否则,如果您的 listOffValues 对应于您想要用多个高斯拟合的某些曲线,那么您应该使用 curve_fit 。请参阅Gaussian fit for Python

关于python - sklearn.mixture.GMM 将多条高斯曲线拟合成直方图,EM算法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32721865/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com