1 缺失值、异常值的检测和处理
1.1 缺失值处理
若对单个数据求均值(mean),如果数据中含有缺失值,MATLAB 会返回一个空值(NaN),此时即表示数据中存在缺失值:
(1)寻找缺失值(ismisssing/isnan)
TF=ismissing(A)
A为输入数组,可以是向量、矩阵或多维数组等
TF为输出的逻辑数组,指示数组或表中有哪些元素包含缺失值。TF 的大小与A的大小相同。”1“代表缺失值,‘0’则不是。
ismissing的用法和isnan相同
% ismissing 寻找缺失值案例
%随机生成6*4数据矩阵
A=randi(10,6,4);
%替换一些值为缺失值
A(3:4,2)=nan
%输出数据矩阵
disp(A)
%寻找缺失值,1代表缺失值所在的位置
ismissing(A)
对于缺失值处理,我们要分情况讨论。
如果某个变量或某个样本缺失了70%以上的数据,那么此时对数据进行填补的话会引入更多的噪声,反而会降低模型的性能,故此时一般直接将该变量或样本删除。
MATLAB 中删除缺失值的函数(另外补充)
如果缺失的不多,我们可以考虑对缺失值进行填补。
以下重点介绍MATLAB中删除和填补缺失值的两个函数:
(2)删除缺失值(rmmissing)
[R ,TF]=rimissing(A,dim)
A为输入数组,可以是向量、矩阵或多维数组等
dim:运算维度,默认为1,删除缺失值所在行,设为2则删除缺失值所在列
R为删除缺失值条目后的数据
TF为已删除条目的指示符。
rimissing 这个函数比较简单粗暴,只要把缺失值所在行善良,谨慎使用。
(3)填补缺失值
方法1:常数填充,如用常数1填充
F=fillmisssing(A,'constant',1)
方法2:F=fillmissing(A,method)
method 是一个字符型参数,指填充缺失值的方法,MATLAB提供以下几种方法:
method | 说明 |
‘previous' | 上一个非空值 |