缺失值会发生。请准备好应对实际数据集中的这个常见挑战。
在本教程中,你将学习三种处理缺失值的方法。然后,你将比较这些方法在一个真实世界数据集上的效果。
本课程所需数据集夸克网盘下载链接:https://pan.quark.cn/s/9b4e9a1246b2
提取码:uDzP
数据可能因多种原因而存在缺失值。例如:
大多数机器学习库(包括scikit-learn)在尝试使用带有缺失值的数据构建模型时会报错。因此,你需要选择以下其中一种策略。
最简单的选项是删除缺少值的列。
除非删除的列中的大多数值都丢失了,否则模型将无法访问许多(可能很有用!)用这种方法获取信息。作为一个极端的例子,考虑一个有10,000行的数据集,其中一个重要的列缺少一个条目。这种方法将完全删除该列!
插补是用一些数字填充缺失的值。例如,我们可以沿着每一列填写平均值。
估算值在大多数情况下不会完全正确,但它通常会导致比完全删除列所得到的模型更准确。
在列后添加一列记录是否缺失值。插补法是标准的方法,通常效果很好。但是,输入值可能系统地高于或低于其实际值(数据集中未收集)。
或者缺少值的行在其他方面可能是唯一的。在这种情况下,通过考虑最初缺少的值,您的模型可以做出更好的预测。
在这种方法中,我们像以前一样输入缺失的值。另外,对于原始数据集中缺少条目的每一列,我们添加一个新列,显示输入条目的位置。
在某些情况下,这将有意义地改善结果。在其他情况下,这根本没有帮助。
在这种方法中,我们像前面一样估算缺失的值。此外,对于原始数据集中缺少项的每个列,我们添加一个新列,显示估算项的位置。
在某些情况下,这将有很好的改善结果,而在另一些情况下,这根本没有帮助。
在本例中,我们将使用墨尔本住房数据集。我们的模型将使用房间数量和土地面积等信息来预测房价。
我们将不关注数据加载步骤。相反,您可以想象您已经拥有了 X _ train、 X _ valid、 y _ train 和 y _ valid
中的训练和验证数据。
In [1]:
import pandas as pd
from sklearn.model_selection import train_test_split
#加载数据
data = pd.read_csv('../input/melbourne-housing-snapshot/melb_data.csv')
#选择目标
y = data