两个常用的数据标准化(归一化)及Matlab实现

您所在的位置:网站首页 标准化公式是什么 两个常用的数据标准化(归一化)及Matlab实现

两个常用的数据标准化(归一化)及Matlab实现

2024-07-14 21:34| 来源: 网络整理| 查看: 265

尊重原创: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