MATLAB - 数据归一化



Matlab 是一种强大的语言,它允许你使用它进行大量的解决问题、数据分析、矩阵和向量运算以及科学计算等工作。

Matlab 有丰富的库和软件资源,可以简化你的工作。在这里,我们将讨论 Matlab 中的数据归一化。

归一化处理指的是组织数据。我们将学习如何在 Matlab 中进行数据归一化,也就是组织数据。

归一化是数据分析中最常见的步骤,它将数据集的值缩放到特定范围,通常在 0 到 1 之间。在 Matlab 中,可以使用 `normalize` 函数对数据集进行归一化。`normalize` 函数具有多种选项,包括范围和可执行的归一化类型。

语法

N = normalize(X)
N = normalize(X,dim)
N = normalize(___,method)
N = normalize(___,method,methodtype)

让我们用描述和示例来理解每个语法。

N = normalize(X)

此函数将返回 X 的 z 分数数据,中心值为 0,标准差为 1。

Z 分数衡量的是数据点与平均值的标准差数。

Z 分数的公式为:

$$\mathrm{Z=\frac{(x\: -\:\mu )}{\sigma }}$$

其中 x = 观测值或数据点。

$\mathrm{\mu}$ 是平均值

$\mathrm{\sigma}$ 是标准差。

对于 `normalize` 方法,输入 X 可以是向量、矩阵、多维数组或表格。

以下是 `normalize` 函数根据输入进行操作的方式:

  • 如果给定的输入 X 是向量,则 `normalize` 函数将对 X 中的所有向量进行操作。
  • 如果给定的输入 X 是矩阵,则 `normalize` 函数将分别对 X 中的每一列进行操作。
  • 如果给定的输入 X 是多维数组,则 `normalize` 函数将首先对 X 的第一个大小不等于 1 的维度进行操作。
  • 如果给定的输入 X 是表格或时间表,则 `normalize` 函数将分别对 X 的每个变量进行操作。

让我们看几个使用 `normalize(X)` 函数的例子。

示例 1

在下面的示例中,我们将使用 X 作为向量

X = 1:10;
N = normalize(X)

在 Matlab 中执行后,输出如下:

>> X = 1:10;
N = normalize(X)

N =

   -1.4863   -1.1560   -0.8257   -0.4954   -0.1651    0.1651    0.4954    0.8257    1.1560    1.4863

>> 

示例 2

在下面的示例中,我们将使用 X 作为矩阵。

X = magic(3)

N = normalize(X)

在 Matlab 中执行后,输出如下:

>> X = magic(3)

N = normalize(X)

X =

     8     1     6
     3     5     7
     4     9     2


N =

    1.1339   -1.0000    0.3780
   -0.7559         0    0.7559
   -0.3780    1.0000   -1.1339

N = normalize(X,dim)

在上面的语法中,`dim` 是矩阵 X 的维度。根据给定的维度,`normalize` 函数将对该维度进行操作。例如,如果给定的维度是 2,则 `normalize` 函数将对每一行进行操作。

示例

X = magic(3)

N = normalize(X, 2)

在 Matlab 中执行后,输出如下:

>> X = magic(3)

N = normalize(X, 2)

X =

     8     1     6
     3     5     7
     4     9     2

N =

    0.8321   -1.1094    0.2774
   -1.0000         0    1.0000
   -0.2774    1.1094   -0.8321

>>

N = normalize(___,method)

在此语法中,归一化将根据给定的方法进行操作。可以使用的方法包括 center、scale、norm、range 和 zscore。

示例

在此示例中,我们将使用向量作为 X,并将方法设置为 `scale`。

X = 1:5;
N = normalize(X,"scale")

在 Matlab 中执行后,输出为

>> X = 1:5;
N = normalize(X,"scale")

N =

    0.6325    1.2649    1.8974    2.5298    3.1623

让我们尝试使用 range 方法进行相同的示例

>> X = 1:5;
N = normalize(X,"range")

N =

   0    0.2500    0.5000    0.7500    1.0000

>>

N = normalize(___,method,methodtype)

在这里,`normalize` 函数将根据给定的 method 和 methodtype 进行操作。

以下是 method 和 methodtype 的组合。

方法 方法类型 描述
zscore std (默认) 获取 z 分数值。将数据中心设置为平均值为 0,并将数据缩放为标准差为 1。
robust 计算 z 分数值,数据中心设置为平均值为 0,并将数据缩放为中位数绝对偏差为 1。
norm 正数值标量(默认为 2) 使用 p 范数作为归一化因子,其中 p 是正整数。
Inf 使用 p 范数作为归一化因子,其中 p 为无穷大。
scale std (默认) 将数据缩放为标准差为 1。
mad 在缩放数据的同时,将中位数绝对偏差设置为 1。
first 使用数据的第一个元素进行缩放。
iqr 使用四分位距范围缩放数据
数值数组 使用数值数组缩放数据。
表格 使用表格变量缩放数据。
range 2 元素行向量(默认为 [0 1]) 将数据的范围重新缩放为 [a b],其中 a < b。
center "mean" (默认) 将数据中心设置为平均值为 0。
"median" 将数据中心设置为平均值为 0。
数值数组 使用数值数组作为数据中心。
表格 使用表格变量作为数据中心。

示例 1

在此示例中,我们将使用 `norm` 方法和正整数作为 methodtype。

X = 1:5;
N = normalize(X,"norm",2)

在 Matlab 命令窗口中执行上述代码后,输出如下:

>> X = 1:5;
N = normalize(X,"norm",2)

N =

    0.1348    0.2697    0.4045    0.5394    0.6742

>> 

示例 2

在此示例中,我们将使用 `center` 作为方法,并将 `mean` 作为 methodtype。

X = 1:5;
N = normalize(X,"center","mean")

在 Matlab 命令窗口中执行后,输出如下:

>> X = 1:5;
N = normalize(X,"center","mean")

N =

    -2    -1     0     1     2

>> 
广告