在Python中拟合对数正态分布的混合

时间:2016-01-13 03:00:27

标签: python numpy scipy scikit-learn

scipy提供了一种适合单个对数正态分布的好方法。我看到scikit-learn能够拟合普通(高斯)混合物。是否有一种直接的方法来拟合两个对数正态分布的混合?如果没有,是否有一种优越的方法可以直接用scipy.optimize或通过将混合物分布定义为scipy.stats.rv_continuous的子类来“手动”优化参数?

1 个答案:

答案 0 :(得分:0)

我偶然发现了这一点,它对我非常有用:

https://pomegranate.readthedocs.io/en/latest/GeneralMixtureModel.html

用法示例:

from pomegranate import *

x = np.array(df['foo']).reshape(-1, 1)

model = GeneralMixtureModel.from_samples(LogNormalDistribution, n_components=2, X=x)
model.fit(x)
pomegranate_clusters = model.predict(x)