Python scikit学习:通过随机抽样填充缺失值

Python scikit学习:通过随机抽样填充缺失值,python,machine-learning,scikit-learn,data-science,Python,Machine Learning,Scikit Learn,Data Science,我很惊讶,它没有提供以下填充缺失值的策略:对于任何缺失值,从给定值中随机抽取一个值并替换 我认为这是一种比用平均值、最频繁值或中值替换更好的策略,因为它不会在值分布中产生人为尖峰 我需要自己写一个变压器吗 在一个更高层次的讨论中,当我没有发现我认为一个简单、几乎标准的操作是一个库中的一个组件,比如“代码> SCIKIT学习”时,我总是有点困惑。让我想知道:这个库是非常未完成的还是我正在试图做一些违背最佳实践的事情?有什么建议吗 我认为这是一种比用平均值、最频繁值或中值替换更好的策略,因为它不会在

我很惊讶,它没有提供以下填充缺失值的策略:对于任何缺失值,从给定值中随机抽取一个值并替换

我认为这是一种比用平均值、最频繁值或中值替换更好的策略,因为它不会在值分布中产生人为尖峰

我需要自己写一个变压器吗

在一个更高层次的讨论中,当我没有发现我认为一个简单、几乎标准的操作是一个库中的一个组件,比如“代码> SCIKIT学习”时,我总是有点困惑。让我想知道:这个库是非常未完成的还是我正在试图做一些违背最佳实践的事情?有什么建议吗

我认为这是一种比用平均值、最频繁值或中值替换更好的策略,因为它不会在值分布中产生人为尖峰

不幸的是,这是错误的。当你对连续变量的分布一无所知时,最好的猜测是总是均值,因为它不太可能在你的数据中引入偏差

如果您决定用任何分布的随机抽样来填充缺失的值,那么您总是假定该分布是生成观察值的分布。因此,在数据集中引入明确的偏差


但是,,您可以看看a,它提供了一种更复杂的插补方法。

对于离散数字系列,从现有值进行随机采样可能比使用均值或中位数更好,这将把所有缺失的值替换为一个数字,并肯定会给分布带来一个人工峰值。

您需要一个局部窗口为了防止出现尖峰现象,哪个定义了样本的均匀分布?也许你正在寻找(线性)插值?我不知道你指的问题是什么。插补策略不需要在保持分布方面是完美的,只是比平均数、中位数和最频繁数的差得多。随机抽样难道不能做到这一点吗?我想这取决于你抽样的分布。你想如何定义它?不管怎么说,你似乎在对你操作的各个条目施加某种时间关系?如果不存在这种关系,则插补平均值是一个很好的选择。然而,对于时间序列数据,可能有更好的方法。它不是时间序列,没有时间关系。当分类器具有某种辨别性时,这些尖峰真的有问题吗?这真的比增加噪音好吗?(当它不在sklearn中时,我希望它对大多数用户来说并不重要,并且/或者通过科学工作没有太多的备份;当然,这并不意味着它不是一个好的补充)你能通过链接到文献来证明你的观点吗?就我所记得的,最好的插补策略在很大程度上取决于你想做什么。如果你想估计平均数,是的,平均数插补是一种方法。如果你想估计协方差。。。。我有疑问。