python缺失数据处理_python缺失值处理的⽅法(Imputation)⼀、缺失值的处理⽅法
由于各种各样的原因,真实世界中的许多数据集都包含缺失数据,这些数据经常被编码成空格、nans或者是其他的占位符。但是这样的数据集并不能被scikit - learn算法兼容,因为⼤多数的学习算法都会默认数组中的元素都是数值,因此素偶有的元素都有⾃⼰的代表意义。
使⽤不完整的数据集的⼀个基本策略就是舍弃掉整⾏或者整列包含缺失值的数值,但是这样处理会浪费⼤量有价值的数据。下⾯是处理缺失值的常⽤⽅法:
unknown怎么处理1.忽略元组
当缺少类别标签时通常这样做(假定挖掘任务涉及分类时),除⾮元组有多个属性缺失值,否则该⽅法不是很有效。当每个属性缺少值的百分⽐变化很⼤时,它的性能特别差。
2.⼈⼯填写缺失值
⼀般该⽅法很费时,并且当数据集很⼤,缺少很多值时,该⽅法可能⾏不通。
3.使⽤⼀个全局常量填充缺失值
将缺失的属性值⽤同⼀个常数(如“Unknown”或 负⽆穷)替换。如果缺失值都⽤“unknown”替换,则挖掘程序可能会认为它们形成⼀个有趣的概念,因为它们都具有相同的值“unknown”。因此,虽然该⽅法很简单,但是它⼗分不可靠。
4.使⽤与给定元组属同⼀类的所有样本的属性均值
例如:将顾客按照credit_risk分类,则使⽤具有相同信⽤度的给定元组的顾客的平均收⼊替换income中的缺失值。
5.使⽤最可能的值填充缺失值
可以⽤回归、使⽤贝叶斯形式化的基于推理的⼯具或决策树归纳确定。例如,利⽤数据集中其他顾客的属性,可以构造⼀颗决策树来预测income的缺失值。
注意:缺失值并不总是意味着数据的错误
⼆、缺失值处理的代码实现
class:`Imputer`类提供了缺失数值处理的基本策略,⽐如使⽤缺失数值所在⾏或列的均值、中位数、众数来替代缺失值。该类也兼容不同的缺失值编码。
1、使⽤均值填充缺失值
import numpy as np
from sklearn.preprocessing import Imputer
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
import numpy as np
from sklearn.preprocessing import Imputer
###1.使⽤均值填充缺失值
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit([[1, 2], [np.nan, 3], [7, 6]])
X = [[np.nan, 2], [6, np.nan], [7, 6]]
ansform(X))
[[4. 2. ]
[6. 3.66666667]
[7. 6. ]]
2、Imputer 类也⽀持稀疏矩阵:
import scipy.sparse as sp
X = sp.csc_matrix([[1, 2], [0, 3], [7, 6]])
imp = Imputer(missing_values=0, strategy='mean', axis=0)
imp.fit(X)
X_test = sp.csc_matrix([[0, 2], [6, 0], [7, 6]])
ansform(X_test))
#注意,在这⾥,缺失数据被编码为0, 这种⽅式⽤在当缺失数据⽐观察数据更多的情况时是⾮常合适的。以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持脚本之家。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论