我对使用点样本构建KDE感兴趣,然后使用该KDE对点进行重采样。scipy.stats.gaussian_kde提供了一种非常简单的方法来执行此操作。例如,从高斯分布中采样:
import numpy as np
from scipy.stats import gaussian_kde, norm
sampled = np.random.normal(loc = 0, scale = 1, size = 1000)
kde = gaussian_kde(sampled, bw_method = 'silverman')
resampled = kde.resample(1000)
Run Code Online (Sandbox Code Playgroud)
它的一个缺点scipy.stats.gaussian_kde是它提供有限的带宽选择选项。通过阅读此内容,我被指向statsmodels.nonparametric.kernel_density.KDEMultivariate(在此处有更多信息)。这使我可以使用交叉验证来估计最佳带宽,如果您要近似估算的基础pdf不是单峰的,则带宽更为复杂。例如,使用两个高斯之和,我可以使用KDEMultivariate以下方法构造一个KDE :
from statsmodels.nonparametric.kernel_density import KDEMultivariate
sampled = np.concatenate((np.random.normal(loc = -3, scale = 1, size = 1000), \
np.random.normal(loc = 3, scale = 1, size = 1000)))
kde = KDEMultivariate(sampled, 'c', bw = 'cv_ml')
Run Code Online (Sandbox Code Playgroud)
通过使用任意基础的pdf探索更高维度的数据,很明显,KDEMultivariate它能够生成一个更能代表原始PDF的PDF。但是我遇到了一个大问题- KDEMultivariate …