我使用sklearn.mixture.GMM将两条高斯曲线拟合成一组数据,然后用数据直方图覆盖它(dat扰动是2条高斯曲线的混合物)。
我的数据是浮点数的列表,下面是我使用的代码行:
clf = mixture.GMM(n_components=1, covariance_type='diag')
clf.fit(listOffValues) 如果我将n_components设置为1,则会得到以下错误:
“(或增加n_init)或检查退化数据。RuntimeError: EM算法无法计算给定初始参数的有效似然。尝试不同的init参数(或增加n_init)或检查是否有退化的数据.
如果我将n_components用于2,错误是:
(self.n_components,X.shape)) ValueError: GMM估计有2个分量,但只有1个样本,
对于第一个错误,我尝试更改GMM的所有init参数,但没有产生任何区别。
尝试了一组随机数,代码运行得非常好。我想不出这个问题可能是什么。
是否存在我忽略的实现问题?
谢谢你的帮助。
发布于 2015-12-15 09:09:27
如果我对你的理解是正确的--你想要用高斯来为你提供数据分布,而且你每个元素只有一个特性。比你应该把你的向量重塑成一个列向量:
listOffValues = np.reshape(listOffValues, (-1, 1))否则,如果您的listOffValues对应于一些曲线,您想要用几个高斯曲线来拟合它,那么您应该使用适合。请参阅Python的高斯拟合
https://stackoverflow.com/questions/32721865
复制相似问题