一文搞懂机器学习中的缺失值处理(超详细)

缺失值处理

数据缺失的原因

缺失值的产生的原因多种多样,主要分为机械原因和人为原因。机械原因是由于机械原因导致的数据收集或保存的失败造成的数据缺失,比如数据存储的失败,存储器损坏,机械故障导致某段时间数据未能收集(对于定时数据采集而言)。人为原因是由于人的主观失误、历史局限或有意隐瞒造成的数据缺失,比如,在市场调查中被访人拒绝透露相关问题的答案,或者回答的问题是无效的,数据录入人员失误漏录了数据


数据缺失的类型

将数据集中不含缺失值的变量称为 完全变量 ,数据集中含有缺失值的变量称为 不完全变量

完全随机缺失(MCAR)

指的是数据的缺失是随机的,不依赖于任何不完全变量或完全变量,不影响样本的无偏性,如家庭地址缺失

随机缺失(MAR)

指的是数据的缺失不是完全随机的,即该类数据的缺失依赖于其他完全变量,如财务数据缺失情况与企业的大小有关

非完全随机缺失(MNAR)

指的是数据的缺失依赖于不完全变量自身,如高收入人群不愿意提供家庭收入


数据缺失的处理方法

一、不处理

有一些模型自身能够处理数据缺失的情况(如随机森林、xgboost),在这种情况下不需要对缺失数据做任何的处理,这种做法的缺点是在模型的选择上有局限

二、删除

import pandas as pd
import numpy as np
from sklearn.impute import KNNImputer
from sklearn.ensemble import RandomForestClassifier
df = pd.read_csv('person.csv')
df

在这里插入图片描述

删除有缺失数据的样本
df = pd.read_csv('person.csv')
df = df.dropna(how='any')
df

在这里插入图片描述

删除有过多缺失数据的特征
df = pd.read_csv('person.csv')
df = df.drop(['height','weight'], axis=1)
df

在这里插入图片描述

三、填充

固定值填充
df = pd.read_csv('person.csv')
df['sex'] = df['sex'].fillna('female')
df

在这里插入图片描述

均值填充
df = pd.read_csv('person.csv')
df['height'] = df['height'].fillna(df['height'].mean())
df

在这里插入图片描述

中位数填充
df = pd.read_csv('person.csv')
df['height'] = df['height'
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值