python均值插补法填补缺失值_使用python+sklearn实现处理缺失值

由于各种原因,许多真实世界中的数据集都包含缺失值,这些值通常被编码为空格、NaNs或其他占位符。然而,这些数据集与scikit-learn估计器(estimators)不兼容,scikit-learn估计器(estimators)假设数组中的所有值都是数值,并且所有值都具有意义。使用不完整数据集的基本策略是放弃包含缺失值的整行和/或列,然而,这是以丢失可能有价值的数据(即使不完整)为代价的。一个更好的策略是插补(imputation)缺失值,即从数据的已知部分推断缺失值。关于插补(imputation),见 通用术语汇编和API元素 条目。

1. 单变量与多变量插补

一种插补算法是单变量算法,它只使用第i个特征维度中的非缺失值(例如: impute.SimpleImputer )来插补第i个特征维度中的缺失值。相比之下,多变量插补算法使用一整套可用的特征来估计缺失值(例如, impute.IterativeImputer )。

2. 单变量特征插补

SimpleImputer 类提供了插补缺失值的基本策略。缺失值可以使用提供的常量值进行插补,也可以使用缺失值所在的每一列的统计数据(平均值、中值或最频繁值)。这个类还允许使用不同的缺失值编码方法。 以下代码段演示如何使用包含缺失值的列(axis 0)的平均值替换编码为 np.nan 的缺失值:
>>> import numpy as np>>> from sklearn.impute import SimpleImputer>>> imp = SimpleImputer(missing_values=np.nan, strategy='mean')>>> imp.fit([[1, 2], [np.nan, 3], [7, 6]])SimpleImputer()>>> X = [[np.nan, 2], [6, np.nan], [7, 6]]>>> print(imp.transform(X))[[4.          2.        ] [6.          3.666...] [7.          6.        ]]
SimpleImputer 类还支持稀疏矩阵:
>>> import scipy.sparse as sp>>> X = sp.csc_matrix([[1, 2], [0, -1], [8, 4]])>>> imp = SimpleImputer(missing_values=-1, strategy='mean')>>> imp.fit(X)SimpleImputer(missing_values=-1)>>> X_test = sp.csc_matrix([[-1, 2], [6, -1], [7, 6]])>>> print(imp.transform(X_test).toarray())[[3. 2.] [6. 3.] [7. 6.]]
请注意,此格式不能用于隐式存储矩阵中缺失的值,因为它会在转换时使其密集。编码为0的缺失值必须与密集输入一起使用。 当使用 'most_frequent''constant' 策略时, SimpleImputer 类还支持表示为string values或pandas categoricals的分类数据:
>>> import pandas as pd>>> df = pd.
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值