归一化数据
说明
使用归一化数据任务,您可以通过选择中心化和缩放方法(如 z 分数)以交互方式归一化数据。该任务会自动为您的实时脚本生成 MATLAB® 代码。
使用此任务,您可以:
自定义如何在工作区变量(如表或时间表)中中心化并缩放数据。
将输入数据与归一化后的数据进行可视化比较。
返回用于计算归一化的中心化和缩放值。
更多
相关函数
归一化数据生成使用 normalize
函数的代码。
打开任务
要在 MATLAB 编辑器中将归一化数据任务添加到实时脚本中,请执行以下操作:
在实时编辑器选项卡上,选择任务 > 归一化数据。
在脚本的代码块中,键入相关关键字,例如
normalize
、range
或scale
。从建议的命令自动填充项中选择归一化数据。对于某些关键字,任务会自动更新一个或多个对应的参数。
示例
用相同的参数归一化多个数据集
使用实时编辑器中的“归一化数据”任务以交互方式归一化一个数据集并返回计算出的参数值。然后,重用这些参数以对另一个数据集应用相同的归一化。
创建一个包含两个变量 Temperature
和 WindSpeed
的时间表。然后用同样的变量创建第二个时间表,但使用的采样是一年后收集的。
Time1 = (datetime(2019,1,1):days(1):datetime(2019,1,10))'; Temperature = randi([10 40],10,1); WindSpeed = randi([0 20],10,1); T1 = timetable(Temperature,WindSpeed,RowTimes=Time1)
T1=10×2 timetable
Time Temperature WindSpeed
___________ ___________ _________
01-Jan-2019 35 3
02-Jan-2019 38 20
03-Jan-2019 13 20
04-Jan-2019 38 10
05-Jan-2019 29 16
06-Jan-2019 13 2
07-Jan-2019 18 8
08-Jan-2019 26 19
09-Jan-2019 39 16
10-Jan-2019 39 20
Time2 = (datetime(2020,1,1):days(1):datetime(2020,1,10))'; Temperature = randi([10 40],10,1); WindSpeed = randi([0 20],10,1); T2 = timetable(Temperature,WindSpeed,RowTimes=Time2)
T2=10×2 timetable
Time Temperature WindSpeed
___________ ___________ _________
01-Jan-2020 30 14
02-Jan-2020 11 0
03-Jan-2020 36 5
04-Jan-2020 38 0
05-Jan-2020 31 2
06-Jan-2020 33 17
07-Jan-2020 33 14
08-Jan-2020 22 6
09-Jan-2020 30 19
10-Jan-2020 15 0
在实时编辑器中打开归一化数据任务。要归一化第一个时间表,请选择 T1
作为输入数据并归一化所有支持变量。
默认情况下,“归一化数据”任务返回归一化的数据。除了归一化的数据之外,通过选择任务的指定方法和参数部分中的返回中心化和缩放值,还会返回任务用于执行归一化的中心化和缩放参数值。
输出参量 newTable
、centerValue
和 scaleValue
分别表示归一化的值、中心化值和缩放值。
% Normalize Data [newTable,centerValue,scaleValue] = normalize(T1); % Display results figure tiledlayout(2,1); nexttile plot(T1.Time,T1.Temperature,"SeriesIndex",6,"DisplayName","Input data") legend ylabel("Temperature") xlabel("Time") nexttile plot(T1.Time,newTable.Temperature,"SeriesIndex",1,"LineWidth",1.5, ... "DisplayName","Normalized data") legend ylabel("Temperature") xlabel("Time")
set(gcf,"NextPlot","New")
您可以在后续代码中使用实时编辑器任务的输出参量。通过 normalize
函数,使用第一个归一化的参数值来归一化第二个时间表 T2
。此方法确保 T2
中的数据以与 T1
相同的方法中心化并缩放。
T2_norm = normalize(T2,"center",centerValue,"scale",scaleValue)
T2_norm=10×2 timetable
Time Temperature WindSpeed
___________ ___________ _________
01-Jan-2020 0.11165 0.084441
02-Jan-2020 -1.6562 -1.8858
03-Jan-2020 0.66992 -1.1822
04-Jan-2020 0.856 -1.8858
05-Jan-2020 0.2047 -1.6044
06-Jan-2020 0.39078 0.50665
07-Jan-2020 0.39078 0.084441
08-Jan-2020 -0.6327 -1.0414
09-Jan-2020 0.11165 0.78812
10-Jan-2020 -1.284 -1.8858
相关示例
参数
输入数据
— 来自工作区的有效输入数据
向量 | 表 | 时间表
此任务对包含在向量、表或时间表中的输入数据进行操作。数据的类型可以是 single
或 double
。
对于表或时间表输入数据,要清洗类型为 single
或 double
的所有变量,请选择所有支持变量。要选择要清洗的 single
或 double
变量,请选择指定的变量。
归一化方法
— 归一化数据的方法和参数
Z 分数 | 范数 | 范围 | ...
将用于归一化数据的方法和相关参数指定为以下选项之一。
方法 | 方法参数 | 描述 |
---|---|---|
| 中心化并缩放以使均值为 | |
| 中心化并缩放,使之中位数为 | |
| 正数值标量(默认值为 | 按 p-范数缩放数据。 |
| 范围上限和下限(下限默认为 | 将数据范围重新缩放至 [a, b] 形式的区间,其中 a < b 。 |
| 不适用 | 中心化和缩放数据,使中位数为 |
|
| 中心化以使其均值为 0 。 |
| 中心化以使其中位数为 0 。 | |
| 按指定的数值平移中心。 | |
| 使用数值数组中的值或表中其变量名称与输入数据中的指定表变量匹配的值来平移中心。 | |
|
| 按标准差缩放数据。 |
| 按中位数绝对偏差缩放数据。 | |
| 按数据的第一个元素缩放数据。 | |
| 按四分位差缩放数据。 | |
数值标量(默认值为 1) | 通过除以指定的数值来缩放数据。 | |
| 使用数值数组中的值或表中其变量名称与输入数据中的指定表变量匹配的值来缩放数据。 | |
Center and scale | 请参阅 Center 和 Scale 方法参数 | 使用指定的参数中心化并缩放数据。 |
详细信息
Z 值
对于具有均值 μ 和标准差 σ 的随机变量 X,值 x 的 z 值是 。对于具有均值 和标准差 S 的采样数据,数据点 x 的 z 值是
z 值以标准差为单位测量数据点与均值的距离。标准化后的数据集均值为 0,标准差为 1,并保留原始数据集的形状属性(相同的偏斜度和峰度)。
中位数绝对偏差
数据集的中位数绝对偏差 (MAD) 是距数据中位数 的绝对偏差的中位数值:。因此,MAD 说明数据相对于中位数的变异性。
当数据包含离群值时,MAD 通常优于使用数据的标准差。标准差对距均值的偏差求平方,从而导致离群值的影响过大。相反,少量离群值的偏差不会影响 MAD。
P-范数
具有 N 个元素的向量 v 的 p-范数的常规定义是
,其中 p 是任何正的实数值或 Inf
。对于 p 的常用值:
如果 p 为 1,则所得的 1-范数是向量元素的绝对值之和。
如果 p 为 2,则所得的 2-范数是向量的模或欧几里德长度。
如果 p 为
Inf
,则 。
重新缩放
重新缩放通过沿数字线拉伸或压缩点来更改数据集中最小值和最大值之间的距离。数据的 z 分数会保留,因此分布的形状保持不变。
将数据 X 重新缩放到任意区间 [a, b] 的方程是
四分位差
数据集的四分位差 (IQR) 说明对值进行排序时中间 50% 的值的范围。如果数据的中位数为 Q2,数据下半部分的中位数为 Q1,数据上半部分的中位数为 Q3,则 。
当数据包含离群值时,IQR 通常优于查看全部数据范围,因为 IQR 排除了数据中最大 25% 和最小 25% 的值。
版本历史记录
在 R2021b 中推出R2022b: 绘制多个表变量
在此实时编辑器任务的显示画面中同时绘制多个表变量。对于表或时间表数据,要在分块图布局中一次性可视化所有所选表变量,请设置要显示的变量字段。
R2022b: 追加归一化变量
用包含归一化数据的表变量追加输入表变量。对于表或时间表输入数据,要追加归一化的数据,请设置输出格式字段。
R2022a: 如果输入包含的元素超过一百万个,则实时编辑器任务不会自动运行
如果输入包含的元素超过一百万个,则此实时编辑器任务不会自动运行。在以前的版本中,对于任何大小的输入,该任务始终自动运行。如果输入包含大量元素,则由此任务生成的代码可能需要相当长的时间来运行(超过几秒)。
当任务不自动运行时,自动运行指示符会被禁用。您可以在需要时手动运行任务,也可以选择启用任务自动运行。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)