两个常⽤的数据标准化(归⼀化)及Matlab实现
⼀、Min-Max标准化
Min-Max标准化称也为离差标准化,是对原始数据的线性变换,使结果值映射到[min,max]之间。转换函数为:
x∗=(x−min)/(max−min)
,其中max为原始样本数据的最⼤值,min为原始样本数据的最⼩值。这种⽅法有个缺陷就是当有新数据加⼊时,可能导致max和min的变
化,需要重新定义。
⼆、Z-score标准化
这种⽅法基于原始数据的均值(mean)和标准差(standarddeviation)进⾏数据的标准化。经过处理的数据符合标准正态分布,即均值
为0,标准差为1。转化函数为:
x∗=(x−μ)/σ
,其中μ为原始样本数据的均值,σ为原始样本数据的标准差。
三、Matlab实现
在Matlab中,Min-Max标准化和Z-score标准化的函数分别是mapminmax和zscore,help查看⼀下⽂档吧。
⾃⼰实现:
%Min-Max标准化(Min=0,Max=1)
normalized_data=mapminmax(source_data',0,1)';
%Z-score标准化
normalized_data=zscore(source_data);
function[normalized_data]=normalize(source_data,kind)
%数据的标准化(归⼀化)处理
%参数source_data可⽤格式的源数据
%参数kind代表何种归⼀化,默认为1.1代表Min-Max标准化,2代表Z-score标准化.
%返回归⼀化后的数据
ifnargin<2%如果参数少于2个,默认进⾏Min-Max标准化
kind=1;
end;
[m,n]=size(source_data);
normalized_data=zeros(m,n);
%%Min-Max标准化(Min=0,Max=1)
ifkind==1
fori=1:n
ma=max(source_data(:,i));%Matlab中变量名不宜和函数名相同,所以不⽤max、min、mean等变量名
mi=min(source_data(:,i));
normalized_data(:,i)=(source_data(:,i)-mi)/(ma-mi);
end
end
%%Z-score标准化
ifkind==2
fori=1:n
mea=mean(source_data(:,i));
st=std(source_data(:,i));
normalized_data(:,i)=(source_data(:,i)-mea)/st;
end
end
本文发布于:2022-11-12 23:09:49,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/7247.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |