我想用python将高斯混合模型拟合到一组加权数据点上。在
我试过了sklearn.mixture.GMM公司()它工作得很好,除了它对所有数据点的权重相等。有人知道在这种方法中给数据点分配权重的方法吗?我曾多次尝试使用数据点来“增加它们的权重”,但对于大型数据集来说,这似乎是无效的。在
我也考虑过自己实现EM算法,但这似乎比上面的GMM方法慢得多,并且会极大地增加大型数据集的计算时间。在
我刚刚发现了EM算法cv2.EM()的opencv方法。但问题还是一样的sklearn.mixture.GMM公司另外,似乎没有办法改变协方差允许的最小值。或者有没有办法将协方差最小值更改为0.001?我希望可以使用probe参数为数据分配权重,但这似乎只是一个输出参数,对拟合过程没有影响,不是吗?使用probs0和使用trainM以M步骤启动算法也没有帮助。对于probs0,我使用了一个(datapoint的数量)x(GMM组件的数量)矩阵,其列是相同的,而数据点的加权参数被写入数据点对应的行。这也没能解决问题。它只是产生了一个混合模型,其中所有都意味着0。在
有没有人知道如何操作上述方法,或者有人知道另一种方法,以便GMM可以拟合加权数据?在
谢谢, 简
如果您仍在寻找解决方案,石榴现在支持在加权数据上训练GMM。你需要做的就是在训练时传入一个权重向量,它会帮你处理的。这里有一个关于石榴GMMs的简短教程!在
https://github.com/jmschrei/pomegranate/blob/master/tutorials/Tutorial_2_General_Mixture_Models.ipynb
相关问题 更多 >
编程相关推荐