Matlab-数据清洗

发布时间:2024-07-02 18:01

文章目录

    • 1.缺失值
      • (1)查找缺失值
      • (2)插入标准缺失值
      • (3)替换缺失值
      • (4)移除缺失值
    • 2.离群值
      • (1)查找离群值
      • (2)替换离群值
      • (3)移除离群值

1.缺失值

(1)查找缺失值

A = [3    NaN    7
    NaN  999.99  1];
id = [NaN 999.99];
TF = ismissing(A,id);

结果:

TF = [ 0   1   0
       1   1   0 ]

(2)插入标准缺失值

A = [0   1  -99
     1  -99  3];
B = standardizeMissing(A,-99);

结果:

B = [0     1   NaN
     1   NaN     3]

(3)替换缺失值

3.1 填充方法

% \'previous\':上一个非缺失值
% \'next\':下一个非缺失值
% \'nearest:距离最近的非缺失值
% \'linear\':相邻非缺失值的线性插值

% 替换包含缺失值的列
A = [1   2 
    NaN  3 
    4   NaN];
F = fillmissing(A,\'previous\',1);

结果:

F = [1     2
     1     3
     4     3]

3.2 移动方法

% \'movmean\':窗口长度为 window 的移动均值
% \'movmedian\':窗口长度为 window 的移动中位数

% 替换包含缺失值的列
A = [1   2 
    NaN  3 
    4   NaN];
F = fillmissing(A,\'movmean\',4,1);

结果:

F = [1.0000    2.0000
     2.5000    3.0000
     4.0000    2.5000]

(4)移除缺失值

% 移除包含缺失值的行
A=[NaN 1 2 3
    3  4 5 6];
R = rmmissing(A,1);

结果:

R = [3     4     5     6]

2.离群值

(1)查找离群值

A = [1   2    300  1 
     1   300   1   2];
% 寻找每行的离群值,参数有\'mean\'、\'median\'|\'movmean\'、\'movmedian\'
TF = isoutlier(A,\'median\',2); 
TF = isoutlier(A,\'movmedian\',4,2)

结果:

TF = [0   0   1   0
      0   1   0   0]

(2)替换离群值

% \'previous\':上一个非缺失值
% \'next\':下一个非缺失值
% \'nearest:距离最近的非缺失值
% \'linear\':相邻非缺失值的线性插值 

% \'movmean\':窗口长度为 window 的移动均值
% \'movmedian\':窗口长度为 window 的移动中位数

% 替换包含离群值的列
A = [1   2 
    300  3 
    4   300];
B = filloutliers(A,\'linear\',\'movmedian\',4,1)

结果:

B = [1.0000    2.0000
     2.5000    3.0000
     4.0000    4.0000]

(3)移除离群值

% 删除包含离群值的行
A = magic(5);
A(4,4) = 500;
A(5,5) = 500;
B = rmoutliers(A,\'median\',1)
B = rmoutliers(A,\'movmedian\',4,1)

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号