我需要一个具有固定带宽和高斯核的简单核密度估计。
唉,scipy.stats.gaussian_kde
我只看到了一个自动带宽选择。set_bandwidth
据我所知,该方法仅将自动选择的值与一些校正比率相乘。我只需要设置我想要设置的带宽。
我不想在 KDE 中使用我手写的 Python 代码:它运行起来有点太慢了。
你不知道有什么替代品scipy.stats.gaussian_kde
吗?
我需要一个具有固定带宽和高斯核的简单核密度估计。
唉,scipy.stats.gaussian_kde
我只看到了一个自动带宽选择。set_bandwidth
据我所知,该方法仅将自动选择的值与一些校正比率相乘。我只需要设置我想要设置的带宽。
我不想在 KDE 中使用我手写的 Python 代码:它运行起来有点太慢了。
你不知道有什么替代品scipy.stats.gaussian_kde
吗?
You can also try the KDE's in scikit-learn (sklearn): http://scikit-learn.org/stable/modules/density.html It has a variety of different kernels you can try, and lets you directly set bandwidth, but apparently (!) has no methods for automatic bandwidth selection.
在scipy.stats.gaussian_kde中,您可以为bw_method
选项提供标量。这将设置kde.factor
变量。kde.factor
是协方差矩阵乘以的数字,因此它应该与带宽相同。
您可以在 OpenTURNS 中使用KernelSmoothing类。非参数分布拟合中提供了一个示例,此处描述了该理论。有自动多维带宽规则,但带宽可由用户设置。此外,该库还提供了 Sheather 和 Jones “求解方程”插件规则,该规则对多模态分布和混合规则非常有效(与前者相比 CPU 消耗更少)。