我正在尝试将三个正态分布的混合拟合到我的对数转换数据上,但我有些困惑如何做。我尝试了scikit learn python中的gmm函数,但似乎它不能正确工作。
g = mixture.GMM(n_components=3)
g.fit(lines)
f1 = arange(0, 13, 0.01)
f2 = arange(0, 13, 0.01)
f3 = arange(0, 13, 0.01)
f = arange(0, 13, 0.01)
for x in arange(0, 13, 0.01):
f1[x] = numpy.round(g.weights_[0],5) * numpy.exp(-numpy.power(x - means[0], 2) / 2 * numpy.power(covars[0], 2)) * (1 / (covars[0] * numpy.power(2 * pi, 0.5)))
f2[x] = numpy.round(g.weights_[1],5) * numpy.exp(-numpy.power(x - means[1], 2) / 2 * numpy.power(covars[1], 2)) * (1 / (covars[1] * numpy.power(2 * pi, 0.5)))
f3[x] = numpy.round(g.weights_[2],5) * numpy.exp(-numpy.power(x - means[2], 2) / 2 * numpy.power(covars[2], 2)) * (1 / (covars[2] * numpy.power(2 * pi, 0.5)))
f=f1+f2+f3
plt.plot(f)
plt.show()
最终我希望得到一个包含三个组件的PDF图,即f=f1+f2+f3。但是它不能正常工作。
这是因为我试图将正态混合分布拟合到对数正态数据上吗?
请问您能否解释我的错误并/或建议一个用于拟合对数正态混合分布的软件包?
g.fit(lines)
这行代码中的lines
是什么?你是怎么生成它们的? - Al.Sal