两个常用的数据标准化(归一化)及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
### 回答1: 在Matlab中对三维数据进行归一化可以通过以下步骤实现。首先,将三维数据转换为矩阵形式。可以使用Matlab中的reshape函数将三维数据矩阵化。接下来,计算每个维度的最小值和最大值。可以使用Matlab中的min和max函数计算每个维度的最小值和最大值。然后,使用公式将每个维度的数值映射到[0,1]的范围内。公式为 X_norm = (X - min(X)) / (max(X) - min(X)) 其中X表示原始的三维数据,X_norm表示经过归一化之后的数据。最后,将矩阵形式的归一化后的数据重新转换为三维数据形式。可以使用Matlab中的reshape函数将矩阵转换成三维数据形式。这样就完成了对三维数据归一化。值得注意的是,归一化后的数据更有利于后续数据处理和分析,但是需要注意不要过度归一化,以免损失数据的信息。 ### 回答2: 三维数据归一化实际上是将三维数组中的数据转换为0到1的范围内。这种转换对于许多机器学习算法来说非常有用,因为它可以提高算法的性能和准确性。 在matlab实现三维数据归一化可以使用matlab内置的函数进行操作。具体的操作步骤如下: 1. 将三维数组数据reshape为二维数组 2. 使用matlab内置的min和max函数计算出所有数据的最小值和最大值 3. 对数据进行归一化,具体的计算公式为: normalized_data = (data - min_value) / (max_value - min_value) 其中,data为原始的三维数据数组,min_value为计算出的最小值,max_value为计算出的最大值,normalized_data为归一化后的数据数组。 4. 将归一化后的数据reshape为原始的三维数据数组格式 通过以上步骤,就可以在matlab实现三维数据归一化操作了。需要注意的是,在该操作过程中,数据的最小值和最大值是关键的参数,需要根据具体的数据进行计算。 ### 回答3: 对三维数据归一化是指将三维数据中各个数据之间的差异统一化,使其在同一尺度下进行比较。Matlab提供了多种方式来完成三维数据归一化,以下是其中两种常用的方式: 1. 使用normalize函数归一化三维数据 normalize函数可以将一个矩阵按列向量归一化,也可以将一个三维矩阵按照第三个维度进行归一化。考虑一个形状为m*n*p的三维矩阵data,其中第三个维度表示样本个数,可以通过以下方式进行归一化: ```matlab normalized_data = normalize(data, 3); ``` 2. 使用zscore函数归一化三维数据 zscore函数可以将一个矩阵按列向量进行标准化,也可以将一个三维矩阵按照第三个维度进行标准化标准化是一种归一化方式,通过将数据的均值设为0,标准差设为1,来统一数据的尺度。考虑一个形状为m*n*p的三维矩阵data,其中第三个维度表示样本个数,可以通过以下方式进行标准化: ```matlab normalized_data = zscore(data, 0, 3); ``` 上述代码中,第二个参数0表示不将样本个数p减去1进行无偏估计,第三个参数3表示按照第三个维度进行标准化。 通过使用上述两种方式,可以方便地对三维数据进行归一化,从而更好地进行分析和处理。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值