2017-07-03 138 views
1

對不起,提出一個可能非常明顯的答案的問題,但我有點困惑,以至於如何調整我可以順利與KDE平滑。我的代碼看起來像這樣在Python:Python Scipy核心密度估計平滑問題

kde = scipy.stats.gaussian_kde(c) 
P_0 = kde(3) 
P_c = kde(c) 

其中c僅僅是一個數字列,我希望做一個整體與上述(這不是太重要了,我在這個問題)。我對於如何改變scipy中的scott/silverman方法以允許一些過度/不足感到困惑。

+1

這非常寬泛。你可以把float-values(作爲平滑參數)設置爲參數'''bw_method'''。除此之外,你不知道你想做什麼。使用一些替代方法,交叉驗證更容易使用(sklearn - > random和grid-search; statsmodels - > optimization-based)。 – sascha

回答

1

您似乎想要調整set_bandwidth參數。該鏈接包含簡單的示例代碼,這是我在這裏減少到最基本的元素:

kde = stats.gaussian_kde(c) 
kde.set_bandwidth(bw_method=.3) 
P = kde(c) 

所以基本上,帶寬通過kde.set_bandwidth(bw_method=X)通話,這樣X通常是浮動或方法silverman之一,scott設置。完整描述實際上指出bw_method

可以是'scott','silverman',一個標量常量或可調用的。如果是標量,這將直接用作kde.factor。如果可調用,則應該將gaussian_kde實例作爲唯一參數並返回標量。

+0

謝謝!有點奇怪,我不明白這一點,但現在它是有道理的! :) – TZJ21