我正在使用gaussian_kde
SciPy 中的函数来生成核密度估计:
from scipy.stats.kde import gaussian_kde
from scipy.stats import norm
from numpy import linspace,hstack
from pylab import plot,show,hist
# creating data with two peaks
sampD1 = norm.rvs(loc=-1.0,scale=1,size=300)
sampD2 = norm.rvs(loc=2.0,scale=0.5,size=300)
samp = hstack([sampD1,sampD2])
# obtaining the pdf (my_pdf is a function!)
my_pdf = gaussian_kde(samp)
# plotting the result
x = linspace(-5,5,100)
plot(x,my_pdf(x),'r') # distribution function
hist(samp,normed=1,alpha=.3) # histogram
show()
上面的代码可以工作,但如果样本数量很大,速度可能会非常慢。
我没有将样本存储在数组中,而是有一个包含键/值对的字典value: counts
。例如,数组[1, 1, 1, 2, 2, 3]
将在此直方图字典中编码为:
{1:3, 2:2, 3:1}
.
我的问题是,如何使用字典数据结构生成内核密度估计?作为示例输入,考虑这个字典,其中 6 的值被看到了 2081 次:
samp = {1: 1000, 2: 2800, 3: 6900, 4: 4322:, 5: 2300, 6: 2081}
在此先感谢您的帮助。