【发布时间】:2016-04-17 21:30:12
【问题描述】:
scipy 提供了一种拟合单个对数正态分布的好方法。我看到scikit-learn 具有拟合正常(高斯)混合物的能力。有没有一种简单的方法来拟合两个对数正态分布的混合?如果没有,是否有一种更好的方法可以直接使用 scipy.optimize 或通过将混合分布定义为 scipy.stats.rv_continuous 的子类来“手动”优化参数?
【问题讨论】:
-
您可以
log-转换您的数据并为其添加GMM,类似于X = np.log(X),但是...我相信没有easy 使用scikit-learn精确拟合对数正态分布的方法,但是,您始终可以查看GMMcode 并自己扩展它。你甚至可以将实现发回scikit-learn! -
scipy提供了适应对数正态分布位置的灵活性,这将在log转换中丢失 - 预先做出这个选择感觉有问题,但也许它不在实践。如果事实证明 location 参数确实是必要的,那么扩展GMM可能是最好的方法。感谢您的建议! -
是的,这就是数据对数转换的主要问题。您没有拟合对数正态混合,而是将高斯混合拟合到对数转换数据。它不一样,但取决于您的应用程序,它可能仍然有效。祝你好运扩展
GMM,如果这是要走的路!
标签: python numpy scipy scikit-learn