两个常用的数据标准化(归一化)及Matlab实现 |
您所在的位置:网站首页 › 标准化公式是什么 › 两个常用的数据标准化(归一化)及Matlab实现 |
尊重原创:https://blog.csdn.net/shengchaohua163/article/details/78784984#comments 数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果。为了消除指标(特征)之间的量纲影响,数据集需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。以下是两种常用的归一化方法: 一、 Min-Max标准化 Min-Max标准化称也为离差标准化,是对原始数据的线性变换,使结果值映射到[min, max]之间。转换函数为: x ∗ =(x−min)/(max−min) ,其中max为原始样本数据的最大值,min为原始样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。 二、Z-score标准化 这种方法基于原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为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标准化. % 返回归一化后的数据 if nargin < 2 % 如果参数少于2个,默认进行Min-Max标准化 kind = 1; end; [m, n] = size(source_data); normalized_data = zeros(m, n); %% Min-Max标准化(Min=0,Max=1) if kind == 1 for i = 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标准化 if kind == 2 for i = 1:n mea = mean( source_data(:, i) ); st = std( source_data(:, i) ); normalized_data(:, i) = ( source_data(:, i)-mea ) / st; end end |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |