Мне интересно использовать образец точек для построения 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)
Один недостаток с scipy.stats.gaussian_kde
заключается в том, что он предлагает ограниченный выбор для выбора полосы пропускания.Прочитав это , я указал на statsmodels.nonparametric.kernel_density.KDEMultivariate
(больше информации здесь ).Это позволяет мне использовать перекрестную проверку для оценки оптимальной полосы пропускания, которая более сложна, если базовый pdf, который вы пытаетесь аппроксимировать, не является унимодальным.Например, используя сумму двух гауссиан, я могу построить KDE, используя KDEMultivariate
следующим образом:
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')
Изучение данных более высокого измерения с произвольным базовым PDF, ясно, что KDEMultivariate
можетсоздать PDF, который является гораздо более представительным для оригинального PDF.Но есть большая проблема, с которой я сталкиваюсь - у KDEMultivariate
нет метода kde.resample()
, и поэтому я не могу пересчитать точки из моего нового KDE.Существует ли простой и эффективный способ повторной выборки из KDE, созданного с использованием statsmodels.nonparametric.kernel_density.KDEMultivariate
?