详解Matlab的mapminmax函数

发布时间:2023-05-24

一、是什么以及它的作用

Matlab的mapminmax函数是一种数据归一化和标准化的工具。归一化是一种将数据缩放到 [0,1] 范围内的方法。标准化是一种将数据缩放到零均值和单位方差之间的方法。 正常情况下,我们在训练和使用模型时需要使用归一化或标准化的数据。这是因为归一化和标准化可以帮助加速模型的收敛,并且可以减少不同特征之间的尺度差异对模型的影响。 通过使用mapminmax函数,我们可以将数据归一化到 [0,1] 范围内并进行标准化。这个函数可以应用于单个变量或包含多个变量的矩阵。

二、怎么实现

1、输入格式

mapminmax函数的输入可以是一个行向量、列向量或矩阵。如果输入是一个行向量,则函数将默认将其重构为列向量并返回一个列向量。如果输入是一维向量,则函数将默认将其重构为 n×1 的矩阵,并在Waterloo在线模拟器的输出栏中返回。如果输入是 n×m 的矩阵,则函数将将每列重构为一维向量并对每个向量应用相同的变换。

2、输出格式

输出的格式与输入格式相同。输出的结果矩阵的每一列的最小值被映射到0,最大值被映射为1,其余值根据输入数据点进行缩放。输出的结果矩阵每列之间的均值和标准差等于输入矩阵各自列之间的均值和标准差。

3、语法

mapminmax 函数的语法如下所示:

[ Y , settings ] = mapminmax( X )
[ Y , settings ] = mapminmax( X , ymin , ymax )
[ Y , settings ] = mapminmax( X , settings )

这里X是输入数据,Y是输出数据。yminymax是期望输出范围的最小和最大值,默认值为 [0,1]。设置参数包含最小值、范围和归一化系数。

三、实例演示

1、单变量归一化的实现

以下代码将一个行向量归一化为列向量,最小值映射到0,最大值映射到1:

X = [1 2 3 4 5 6];
Y = mapminmax(X);

将得到以下结果:

Y =
   0.0000
   0.1667
   0.3333
   0.5000
   0.6667
   0.8333

2、多变量归一化的实现

以下代码将一个包含两个变量的矩阵归一化为行向量,并将最小值映射到0,最大值映射到1:

X = [1 2; 3 4; 5 6];
Y = mapminmax(X);

将得到以下结果:

Y =
   0.0000    0.0000
   0.5000    0.5000
   1.0000    1.0000

3、调整范围值和应用到测试数据的实现

以下代码将一个向量归一化为列向量,并将最小值映射到-1,最大值映射到1。然后将该变换应用到另一个向量(测试数据)上:

X = [1; 2; 3; 4; 5; 6];
[y,settings] = mapminmax(X,-1,1);
testData = [1; 2; 3];
Y = mapminmax('apply',testData,settings);

将得到以下结果:

y =
  -1.0000
  -0.3333
   0.3333
   1.0000
Y =
  -1.0000
  -0.3333
   0.3333

四、总结

在机器学习和深度学习中,数据归一化和标准化是非常重要的步骤,可以简化模型,减少调试时间,同时还可以增强算法的鲁棒性。Matlab的mapminmax函数提供了方便且易于使用的工具,可以将变量缩放到特定的范围内,从而加速模型的收敛并提高算法的效率。