如何使用Seaborn使用的相同KDE

问题描述

我正在尝试使用内核密度估计器来获取数据的分布。使用seaborn,我可以简单地调用"kDirectionSetting",这将绘制kde或数据的分布。但是,对于seaborn,我无法获得新数据点的分数。但是,如果我使用的是sklearn库,则可以简单地调用sns.kdeplot(temp,shade=True)。因此,我如何才能与seaborn达成同一目标?或者,有什么方法可以退还从seaborn获得的kde吗?

非常感谢您的帮助!

解决方法

浏览文档https://github.com/mwaskom/seaborn/blob/a9577e705023873de7c7bbf3e9b6ae0dc1880b51/seaborn/distributions.py#L2641后,内核的带宽计算为:bw = stats.gaussian_kde(a).scotts_factor() * a.std(ddof=1)因此,我将sklearn的bw和kde用作:kde = KernelDensity(kernel='gaussian',bandwidth=bw).fit(temp.reshape(-1,1))。>

因此,现在我可以打电话:kde.score_samples(x_axis.reshape(-1,1))