【问题标题】: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 中),它实现预测均值匹配,它从邻居中选择估算的观察值,其中邻域由预测接近度定义。

标签: python pandas machine-learning scikit-learn data-science


【解决方案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 不考虑这一点可能会产生不切实际的示例。

【讨论】:

    猜你喜欢
    • 2019-08-10
    • 2020-04-18
    • 2017-08-09
    • 2014-04-12
    • 2018-12-30
    • 2019-06-22
    • 1970-01-01
    • 2014-10-04
    相关资源
    最近更新 更多