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}
助けてくれてありがとう。