matlab的常用数据预处理代码

声明:部分代码或描述可能不是很完美,希望理解并加以支持。

这里以红酒品质数据为例,加以说明:

第一部分:重复值剔除

使用 unique 函数,这里仅列出常用的两种使用方式:

第一种:直接删除重复行

red = readmatrix('winequality.xlsx','Sheet','winequality-red','Range','A2:L1600');
% 数据读取
dataRed = unique(red,'rows');
% 删除数据中重复行数据,默认对原有数据排序(这里剔除937组重复值)
dataRed = unique(red,'rows','stable');

第二种:按列删除重复行

[C,ia,ic] = unique(dataRed(:,1:2),'rows');
% 基于前两列的数据查找dataRed中的唯一行。
% 指定三个输出以返回索引向量 ia 和 ic。
uA = dataRed(ia,:)
使用 ia 对 dataRed 进行索引并检索包含前两列中元素的唯一组合的行。

第二部分:异常值处理

异常值处理的方式有很多,这里举例说明:

% 数据平滑
Amedian = smoothdata(dataRed,'movmedian');

补充说明几种平滑处理方法,指定为以下选项之一:

'movmean'  的每个窗口内的移动平均值。此方法对于减少数据中的周期性趋势很有用。

'movmedian' 的每个窗口内的移动中位数。当存在离群值时,此方法对于减少数据中的周期性趋势很有用。

'gaussian' 的每个窗口内的高斯加权移动平均值。

%% 查找离群值
TF = isoutlier(dataRed); 
%查找数据向量中的离群值。输出中的逻辑值 1 表示离群值的位置。
ind = find(TF) 
%查找非零元素
Aoutlier = dataRed(ind) 
%输出离群值

%% 离群数据填充
Afill = filloutliers(dataRed,'next'); 
%采用下一时刻数据进行填充,同样这里也可以使用均值、中心值等

2022年4月20日16:54:19

你可能感兴趣的:(数据预处理,matlab)