处理机器学习模型中的缺失数据
介绍
处理不同大小的数据集时,数据丢失是最令人烦恼的问题之一。数据集中数据丢失的原因有很多。一些常见原因如下:
- 数据来自各种来源:一组数据没有捕捉到某些值,另一组数据没有其他值。因此,数据中会有缺口。
- 数据随着时间的推移变得更加丰富:按时间顺序首先收集的数据可能不具有稍后收集的数据的属性。
- 不再收集数据:由于某些原因(道德、政治),可能不会收集某些属性的数据,例如政府可能决定不再收集与宗教、种族和民族有关的数据。
- 在调查过程中,有些人无法回答所有问题。
用于描述缺失数据的术语
根据缺失数据的来源,使用以下术语来描述它:
- 随机缺失 (MAR):此类缺失数据是指由于调查设计方式而无法回答的属性。例如,考虑调查中的以下问题:
a. 您抽烟吗?是,否
b. 如果是,频率是多少?每周一次、每天一次、每天两次、每天两次以上
可以看出,只有当问题 a 的答案为“是”时,才能给出问题 b 的答案。数据集中这种缺失值是由于一个属性对另一个属性的依赖而产生的。
完全随机缺失 (MCAR):此类缺失数据是真正缺失的数据或由于疏忽或其他原因而未捕获的数据。在调查中,一个人可能会在填写问卷时休息一下,回来后,他可能会从下一页开始,而前一页上的一些问题没有回答。
非随机缺失 (MNAR):此类缺失数据取决于数据本身的值。例如,一项调查需要人们透露他们的 10 年级化学成绩。分数较低的人可能会选择不透露成绩,因此您只会在数据样本中看到高分。
如何处理缺失数据
我们可以用两种主要方式来处理缺失的数据。
删除数据
在这种处理缺失数据的方法中,用户从数据集中删除缺少数据的记录或列。
让我们考虑以下数据集:
import pandas as pd
df = pd.read_csv('household_data_missing.csv')
print(df)
输出:
Item_Category Gender Age Salary Purchased satisfaction
0 Fitness Male 20 NaN Yes NaN
1 Fitness Female 50 70000.0 No NaN
2 Food Male 35 50000.0 Yes NaN
3 Kitchen Male 22 NaN No NaN
4 Kitchen Female 30 35000.0 Yes NaN
删除所有值为 NA 的列。
print(df.dropna(axis='columns', how='all'))
输出:
Item_Category Gender Age Salary Purchased
0 Fitness Male 20 NaN Yes
1 Fitness Female 50 70000.0 No
2 Food Male 35 50000.0 Yes
3 Kitchen Male 22 NaN No
4 Kitchen Female 30 35000.0 Yes
保留至少包含五个值的所有行。
print(df.dropna(axis='rows', thresh=5))
输出:
Item_Category Gender Age Salary Purchased satisfaction
1 Fitness Female 50 70000.0 No NaN
2 Food Male 35 50000.0 Yes NaN
4 Kitchen Female 30 35000.0 Yes NaN
插值
建议尽可能保留数据而不删除它。为此,用户可以利用可用的数据点,通过使用称为插值的技术来估计未知数据的值。pandas 插值函数中提供了多种方法可用于获取数据值。
print(df.interpolate(method='linear'))
输出:
Item_Category Gender Age Salary Purchased satisfaction
0 Fitness Male 20 25000.000000 Yes NaN
1 Fitness Female 50 70000.000000 No NaN
2 Food Male 35 58333.333333 Yes NaN
3 Kitchen Male 22 46666.666667 No NaN
4 Kitchen Female 30 35000.000000 Yes NaN
print(df.interpolate(method='quadratic'))
输出:
Item_Category Gender Age Salary Purchased satisfaction
0 Fitness Male 20 25000.000000 Yes NaN
1 Fitness Female 50 70000.000000 No NaN
2 Food Male 35 86666.666667 Yes NaN
3 Kitchen Male 22 75000.000000 No NaN
4 Kitchen Female 30 35000.000000 Yes NaN
其他方法
还提供了许多其他方法可用于不同情况:
- 样条曲线:如果估计值超出已知的最小值和最大值范围。
- 克里金法:该模型使用所有现有数据点的相关性来预测缺失数据的值。
- 二次:当数据值以更快的速率变化时。
- Akima:如果目的是从一个点到另一个点的平滑移动,那么应该使用 Akima 插值。
结论
用户可以使用多种方法来处理缺失数据,从删除缺失数据的数据点到插值。然而,在选择方法之前,需要了解每种策略涉及的许多因素和风险。如上所述,用户应尽可能利用手头可用的数据,但对稀疏的数据使用插值可能会导致数据过度拟合,从而导致不可预测的结果。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~