對不起,提出一個可能非常明顯的答案的問題,但我有點困惑,以至於如何調整我可以順利與KDE平滑。我的代碼看起來像這樣在Python:Python Scipy核心密度估計平滑問題
kde = scipy.stats.gaussian_kde(c)
P_0 = kde(3)
P_c = kde(c)
其中c僅僅是一個數字列,我希望做一個整體與上述(這不是太重要了,我在這個問題)。我對於如何改變scipy中的scott/silverman方法以允許一些過度/不足感到困惑。
對不起,提出一個可能非常明顯的答案的問題,但我有點困惑,以至於如何調整我可以順利與KDE平滑。我的代碼看起來像這樣在Python:Python Scipy核心密度估計平滑問題
kde = scipy.stats.gaussian_kde(c)
P_0 = kde(3)
P_c = kde(c)
其中c僅僅是一個數字列,我希望做一個整體與上述(這不是太重要了,我在這個問題)。我對於如何改變scipy中的scott/silverman方法以允許一些過度/不足感到困惑。
您似乎想要調整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實例作爲唯一參數並返回標量。
謝謝!有點奇怪,我不明白這一點,但現在它是有道理的! :) – TZJ21
這非常寬泛。你可以把float-values(作爲平滑參數)設置爲參數'''bw_method'''。除此之外,你不知道你想做什麼。使用一些替代方法,交叉驗證更容易使用(sklearn - > random和grid-search; statsmodels - > optimization-based)。 – sascha