【发布时间】:2017-08-09 01:54:21
【问题描述】:
我很惊讶sklearn.preprocessing.Imputer 没有提供以下填充缺失值的策略:对于任何缺失值,从给定值中随机均匀地采样一个值并替换。
我认为这是一个比用平均值、最频繁或中值替换更好的策略,因为它不会在值的分布中产生人为的尖峰。
我需要自己编写一个转换器吗?
ps。在更元级别的讨论中,当我在 scikit-learn 这样的库中找不到我认为简单、几乎标准的操作作为组件时,我总是有点困惑。让我想知道:这个库是不是非常未完成,还是我正在尝试做一些违反最佳实践的事情?有什么建议吗?
【问题讨论】:
-
您需要一个本地窗口来定义要从中采样的均匀分布,以防止尖峰?也许您正在搜索(线性)插值?
-
不确定我是否理解您所指的问题。插补策略在保持分布方面不需要是完美的,只需比均值、中值、最常见的差那么明显。随机抽样不能做到这一点吗?
-
我会说,这取决于您从中采样的分布。你想如何定义它?无论如何,您似乎正在对您正在操作的各个条目施加某种时间关系?在没有这种关系的情况下,估算平均值是一个很好的选择。但是,对于时间序列数据,可能有更好的方法。
-
这不是时间序列,没有时间关系。
-
当分类器具有某种区分性时,这些尖峰真的有问题吗?真的比添加噪音更好吗? (当它不在 sklearn 中时,我希望它对大多数用户来说不是那么重要和/或通过科学工作没有太多备份;当然这并不意味着它不是一个好的添加)
标签: python machine-learning scikit-learn data-science