在python中,有几种做核密度估计的方法,我想知道它们之间的差异,并做出一个很好的选择。
他们是:
scipy.stats.gaussian_kde, http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.gaussian_kde.html
sklearn.neighbors.KernelDensity,http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KernelDensity.html#sklearn.neighbors.KernelDensity
statsmodel http://statsmodels.sourceforge.net/stable/nonparametric.html#kernel-density-estimation
我认为我们可以与1d, 2d
,bandwidth selection
,Implementation
和performance
进行比较
我只有sklearn.neighbors.KernelDensity
的经验。这就是我所知道的:
速度通常很快,并且可以在多维上执行,但在决定带宽时没有帮助。
我查看scipy.kde
,似乎有一个带宽选择方法。
答案 0 :(得分:1)
" sklearn方式"选择模型超参数是网格搜索,通过交叉验证来选择最佳值。请查看http://mark-kay.net/2013/12/24/kernel-density-estimation/,了解如何将其应用于核密度估算。
答案 1 :(得分:1)
看起来Kernel Density Estimation in Python正是您所需要的:
在这里,我将专注于比较Python中当前可用的KDE的实际实现。 (...)我在SciPy / Scikits堆栈中了解的四个KDE实现:
- 在SciPy中:gaussian_kde。
- 在统计模型中:KDEUnivariate和KDEMultivariate。
- 在Scikit学习中:KernelDensity。
每个都有优点和缺点,并且每个都有其适用范围。