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