【发布时间】:2017-02-26 20:09:24
【问题描述】:
正如标题所说,我想将高斯混合模型拟合到给定的 PDF。所以,假设我知道我的数据的概率密度分布,假设它是这样离散的:
import numpy as np
import matplotlib.pyplot as plt
def gaussian(gx, amp, mu, sig):
return amp * np.exp(-np.power(gx - mu, 2.) / (2 * np.power(sig, 2.)))
x = np.linspace(-10, 10, 1000)
g1 = gaussian(gx=x, amp=2, mu=-3, sig=1)
g2 = gaussian(gx=x, amp=1, mu=4, sig=0.5)
pdf = (g1 + g2) / np.nansum(g1 + g2)
plt.scatter(x, pdf)
plt.show()
这为我们提供了一个带有两个分离的高斯峰的漂亮 pdf。现在我只想将高斯混合模型拟合到 pdf 中。我理解 scikit 的工作方式是您不适合模型到 pdf,而是适合数据样本。所以,原则上我必须获取 pdf,从中抽取样本,然后拟合高斯混合模型,但我已经有了 pdf,只想用高斯混合来描述它......
有什么想法吗?
【问题讨论】:
-
你是什么意思“现在我只是想将高斯混合模型拟合到 pdf”?您创建的 pdf 已经是高斯的混合体。您是在问如何从中抽取样本吗?
-
我有兴趣解决同样的问题(使用 PDF 而不是样本)。由于我的“PDF”是离散的(实际上它就像一个直方图),我考虑通过根据其频率注入每个 bin 的中心值来从中生成样本(例如,如果我有一个像 1:3、2:6、3 这样的直方图:5, 4: 2 然后我可以生成序列 [1,1,1,2,2,2,2,2,2,3,3,3,3,3,4,4]) 但我认为可能是一种“更聪明”/更好的方式。你介意发布一个答案来说明你最终做了什么吗?
-
我遇到了同样的问题。你解决了吗?
标签: python scikit-learn