通过从现有分布中抽样来估算缺失值

Posted

技术标签:

【中文标题】通过从现有分布中抽样来估算缺失值【英文标题】:Impute missing values by sampling from the distribution of existing ones 【发布时间】:2017-04-05 20:14:36 【问题描述】:

缺失值是数据分析中的常见问题。一种常见的策略似乎是将缺失值替换为从现有值的分布中随机抽样的值。

是否有 Python 库代码可以方便地对数据框执行此预处理步骤?据我所知,sklearn.preprocessing 模块不提供这种策略。

【问题讨论】:

你可以使用sample来做到这一点 statsmodels 有 MICE(在 master 和 0.8rc 中),它实现预测均值匹配,它从邻居中选择估算的观察值,其中邻域由预测接近度定义。 【参考方案1】:

要从现有值的分布中采样,您需要了解分布。如果分布未知,您可以使用核密度估计来拟合它。这篇博文很好地概述了 Python 的内核密度估计实现:http://jakevdp.github.io/blog/2013/12/01/kernel-density-estimation/。

scikit-learn 中有一个实现(见http://scikit-learn.org/stable/modules/density.html#kernel-density); sklearn 的 KernelDensity 有 .sample() 方法。 statsmodels 中还有一个核密度估计器(http://statsmodels.sourceforge.net/devel/generated/statsmodels.nonparametric.kernel_density.KDEMultivariate.html);它支持分类特征。

另一种方法是选择随机的现有值,而不尝试生成数据集中没有的值。此解决方案的问题在于 value 可能取决于同一行中的其他值,而 random.sample 不考虑这一点可能会产生不切实际的示例。

【讨论】:

以上是关于通过从现有分布中抽样来估算缺失值的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中使用 ROLLING 平均值估算缺失值

在R语言中进行缺失值填充:估算缺失值

除了其他自变量之外,还使用因变量来估算其中一个自变量的缺失值?

使用预测模型估算缺失值

Spark Imputer 归因估算器 补全缺失值

Sklearn 或 Pandas,用简单的线性回归估算缺失值