【重新定义matlab强大系列十】函数normalize进行归一化数据

news2024/11/19 12:43:55

🔗 运行环境:Matlab

🚩 撰写作者:左手の明天

🥇 精选专栏:《python》

🔥  推荐专栏:《算法研究》

#### 防伪水印——左手の明天 ####

💗 大家好🤗🤗🤗,我是左手の明天!好久不见💗

💗今天开启新的系列——重新定义matlab强大系列💗

📆  最近更新:2023 年 05 月 25 日,左手の明天的第 286 篇原创博客

📚 更新于专栏:matlab

#### 防伪水印——左手の明天 ####


🔥函数说明

N = normalize(A) 按向量返回 A 中数据的z值(中心为 0、标准差为 1)。

  • 如果 A 是向量,则 normalize 对整个向量 A 进行运算。

  • 如果 A 是矩阵,则 normalize 分别对 A 的每列进行运算。

  • 如果 A 是多维数组,则 normalize 沿 A 的大小不等于 1 的第一个维度进行运算。

  • 如果 A 是表或时间表,则 normalize 分别对 A 的每个变量进行运算。

N = normalize(A,dim) 指定要沿其进行运算的 A 的维度。例如,normalize(A,2) 对每个行进行归一化。

N = normalize(___,method) 使用上述任一语法指定归一化方法。例如,normalize(A,'norm') 通过欧几里德范数(2-范数)对 A 中的数据进行归一化。

N = normalize(___,method,methodtype) 指定给定方法的归一化类型。例如,normalize(A,'norm',Inf) 使用无穷范数归一化 A 中的数据。

method — 归一化方法

归一化方法,指定为下列选项之一:

方法

描述

'zscore'

均值为 0、标准差为 1 的 z值。

'norm'

2-范数。

'scale'

按标准差缩放。

'range'

将数据范围重新缩放至 [0,1]。

'center'

对数据进行中心化以使其均值为 0。

'medianiqr'

中心化和缩放数据,使中位数为 0 且四分位差为 1。

要返回函数用于归一化数据的形参,请指定 C 和 S 输出实参。

methodtype — 方法类型

方法类型,指定为数组、表、二元素行向量或类型名称,具体取决于指定的方法:

方法

方法类型选项

描述

'zscore'

'std'(默认值)

中心化并缩放,使之均值为 0,标准差为 1。

'robust'

中心化并缩放,使之中位数为 0,中位数绝对偏差为 1。

'norm'

正数值标量(默认值为 2)

p-范数

Inf

无穷范数。

'scale'

'std'(默认值)

按标准差缩放。

'mad'

按中位数绝对偏差缩放。

'first'

按数据的第一个元素进行缩放。

'iqr'

按四分位差 缩放。

数值数组

按数值缩放。

使用表中的变量缩放。输入数据 A 中的每个表变量都使用缩放表中名称相似的变量的值进行缩放。

'range'

二元素行向量(默认为 [0 1])

将数据范围重新缩放至 [a b] 形式的区间,其中 a < b

'center'

'mean'(默认值)

中心化以使其均值为 0。

'median'

中心化以使其中位数为 0。

数值数组

按数值平移中心。该数组必须具有与输入 A 兼容的大小

使用表中的变量平移中心。输入数据 A 中的每个表变量使用中心化表中名称相似的变量中的值进行中心化。

要返回函数用于归一化数据的形参,请指定 C 和 S 输出实参。

N = normalize(___,'center',centertype,'scale',scaletype​​​​​​​) 同时使用 'center' 和 'scale' 方法。只有这两种方法可以一起使用。如果未指定 centertype 或 scaletype,则 normalize 将使用该方法的默认方法类型(中心化以使均值为 0 并按标准差缩放)。

此语法支持使用任意中心化和缩放类型同时执行这两个方法。例如,N = normalize(A,'center','median','scale','mad')。您也可以使用此语法指定以前计算的归一化的中心化和缩放值 C 和 S。例如,用 [N1,C,S] = normalize(A1) 归一化一个数据集并保存参数。然后,用 N2 = normalize(A2,'center',C,'scale',S) 对不同数据集重用这些参数。

N = normalize(___,Name,Value) 使用一个或多个名称-值参数指定用于平滑处理的其他参数。例如,当 A 是表或时间表时,normalize(A,'DataVariables',datavars) 对 datavars 指定的变量进行归一化。

[N,C,S] = normalize(___) 还返回用于执行归一化的中心化和缩放值 C 和 S。然后,您可以通过 N = normalize(A2,'center',C,'scale',S) 使用 C 和 S 中的值来归一化不同输入数据。

N — 归一化值

归一化值,以数组、表或时间表形式返回。

除非 ReplaceValues 的值为 false,否则 N 与 A 的大小相同。如果 ReplaceValues 的值是 false,则 N 的宽度是输入数据宽度和指定的数据变量数目之和。

normalize 通常对输入表和时间表的所有变量进行运算,以下情况除外:

  • 如果指定 DataVariables,则 normalize 只对指定的变量执行运算。

  • 如果您使用语法 normalize(T,'center',C,'scale',S) 来使用先前计算的参数 C 和 S 来归一化表或时间表 T,则 normalize 会自动使用 C 和 S 中的变量名称来确定要对其进行运算的 T 中的数据变量。

C — 中心化值

中心化值,以数组或表形式返回。

当 A 是数组时,normalize 将 C 和 S 以数组形式返回,满足 N = (A - C) ./ SC 中的每个值都是用于在指定维度上执行归一化的中心化值。例如,如果 A 是 10×10 数据矩阵,并且 normalize 在第一个维度上执行运算,则 C 是 1×10 向量,其中包含 A 中每列的中心化值。

当 A 是表或时间表时,normalize 以表形式返回 C 和 S,其中包含归一化的每个表变量的中心化值和缩放值的表,即 N.Var = (A.Var - C.Var) ./ S.VarC 和 S 的表变量名称与输入中对应的表变量匹配。C 中的每个变量都包含用于归一化 A 中名称相似的变量的中心化值。

S — 缩放值

缩放值,以数组或表形式返回。

当 A 是数组时,normalize 将 C 和 S 以数组形式返回,满足 N = (A - C) ./ SS 中的每个值都是用于在指定维度上执行归一化的缩放值。例如,如果 A 是 10×10 数据矩阵,并且 normalize 在第一个维度上执行运算,则 S 是 1×10 向量,其中包含 A 中每列的缩放值。

当 A 是表或时间表时,normalize 以表形式返回 C 和 S,其中包含归一化的每个表变量的中心化值和缩放值的表,即 N.Var = (A.Var - C.Var) ./ S.VarC 和 S 的表变量名称与输入中对应的表变量匹配。S 中的每个变量都包含用于归一化 A 中名称相似的变量的缩放值。

Z 值

z 值以标准差为单位测量数据点与均值的距离。标准化后的数据集均值为 0,标准差为 1,并保留原始数据集的形状属性(相同的偏斜度和峰度)。

对于具有均值 μ 和标准差 σ 的随机变量 X,值 x 的 z 值是 z=(x−μ)/σ.。对于具有均值 ‾‾X 和标准差 S 的采样数据,数据点 x 的 z 值是 z=(x−‾‾X)/S.

P-范数

具有 N 个元素的向量 v 的 p-范数的常规定义是

 

,其中 p 是任何正的实数值、Inf 或 -Inf。p 的一些常见值是 1、2 和 Inf

  • 如果 p 为 1,则所得的 1-范数是向量元素的绝对值之和。

  • 如果 p 为 2,则所得的 2-范数是向量的模或欧几里德长度。

  • 如果 p 为 Inf,则 ‖v‖∞=maxi(∣v(i)∣)。

重新缩放

重新缩放通过沿数字线拉伸或压缩点来更改数据集中最小值和最大值之间的距离。数据的 z 分数会保留,因此分布的形状保持不变。

将数据 X 重新缩放到任意区间 [a b] 的方程是

虽然 normalize 和 rescale 函数都可以将数据重新缩放到任意区间,但 rescale 还允许将输入数据裁剪到指定的最小值和最大值。

四分位差

数据集的四分位差 (IQR) 说明对值进行排序时中间 50% 的值的范围。如果数据的中位数为 Q2,数据下半部分的中位数为 Q1,数据上半部分的中位数为 Q3,则 IQR = Q3 - Q1。

当数据包含离群值(非常大或非常小的值)时,IQR 通常优于查看全部数据范围,因为 IQR 排除了数据中最大 25% 和最小 25% 的值。

中位数绝对偏差

数据集的中位数绝对偏差 (MAD) 是距数据中位数 ˜X 的绝对偏差的中位数值:MAD=median(∣∣x−˜X∣∣)。因此,MAD 说明数据相对于中位数的变异性。

当数据包含离群值(非常大或非常小的值)时,MAD 通常优于使用数据的标准差,因为标准差对距均值的偏差求平方,从而使离群值的影响过大。相反,少量离群值的偏差不会影响 MAD 的值。

 

🔥示例

向量和矩阵数据

通过计算 Z 分数来归一化向量和矩阵中的数据。

创建一个向量 v 并计算 Z 分数,从而将数据归一化,使其均值为 0,标准差为 1。

v = 1:5;
N = normalize(v)
N = 1×5

   -1.2649   -0.6325         0    0.6325    1.2649

创建一个矩阵 B 并计算每列的 Z 分数。然后,对每个行进行归一化。

B = magic(3)
B = 3×3

     8     1     6
     3     5     7
     4     9     2

N1 = normalize(B)
N1 = 3×3

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

N2 = normalize(B,2)
N2 = 3×3

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

缩放数据

对向量 A 按其标准差进行缩放。

A = 1:5;
Ns = normalize(A,'scale')
Ns = 1×5

    0.6325    1.2649    1.8974    2.5298    3.1623

对 A 进行缩放,使其范围在 [0,1] 区间内。

Nr = normalize(A,'range')
Nr = 1×5

         0    0.2500    0.5000    0.7500    1.0000

指定方法类型

创建向量 A 并用它的 1-范数对其进行归一化。

A = 1:5;
Np = normalize(A,'norm',1)
Np = 1×5

    0.0667    0.1333    0.2000    0.2667    0.3333

对 A 中的数据进行中心化,使其均值为 0。

Nc = normalize(A,'center','mean')
Nc = 1×5

    -2    -1     0     1     2

表变量

创建一个表,其中包含五个人的身高信息。

LastName = {'Sanchez';'Johnson';'Lee';'Diaz';'Brown'};
Height = [71;69;64;67;64];
T = table(LastName,Height)
T=5×2 table
    LastName     Height
    _________    ______

    'Sanchez'      71  
    'Johnson'      69  
    'Lee'          64  
    'Diaz'         67  
    'Brown'        64  

按最大身高对身高数据进行归一化。

N = normalize(T,'norm',Inf,'DataVariables','Height')
N=5×2 table
    LastName     Height 
    _________    _______

    'Sanchez'          1
    'Johnson'    0.97183
    'Lee'        0.90141
    'Diaz'       0.94366
    'Brown'      0.90141

用相同的参数归一化多个数据集

归一化数据集,返回计算出的参数值,并重用这些参数以对另一个数据集应用相同的归一化。

创建一个包含两个变量 Temperature 和 WindSpeed 的时间表。然后用同样的变量创建第二个时间表,但使用的采样是一年后收集的。

rng default 
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    

将第一个时间表归一化。指定三个输出:归一化后的表,以及函数用于执行归一化的中心化和缩放参数值 C 和 S

[T1_norm,C,S] = normalize(T1)
T1_norm=10×2 timetable
       Time        Temperature    WindSpeed
    ___________    ___________    _________

    01-Jan-2019      0.57687       -1.4636 
    02-Jan-2019        0.856       0.92885 
    03-Jan-2019      -1.4701       0.92885 
    04-Jan-2019        0.856       -0.4785 
    05-Jan-2019     0.018609       0.36591 
    06-Jan-2019      -1.4701       -1.6044 
    07-Jan-2019      -1.0049      -0.75997 
    08-Jan-2019     -0.26052       0.78812 
    09-Jan-2019      0.94905       0.36591 
    10-Jan-2019      0.94905       0.92885 

C=1×2 table
    Temperature    WindSpeed
    ___________    _________

       28.8          13.4   

S=1×2 table
    Temperature    WindSpeed
    ___________    _________

      10.748        7.1056  

现在使用第一个归一化的参数值来归一化第二个时间表 T2。此方法确保 T2 中的数据以与 T1 相同的方式中心化并缩放。

T2_norm = normalize(T2,"center",C,"scale",S)
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 

默认情况下,normalize 对 T2 中也存在于 C 和 S 中的全部变量进行操作。要归一化 T2 中的变量子集,请使用 DataVariables 名称-值参数指定要对其进行操作的变量。您指定的变量子集必须出现在 C 和 S 中。

将 WindSpeed 指定为要对其进行操作的数据变量。normalize 对该变量进行操作并原样返回 Temperature

T2_partial = normalize(T2,"center",C,"scale",S,"DataVariables","WindSpeed")
T2_partial=10×2 timetable
       Time        Temperature    WindSpeed
    ___________    ___________    _________

    01-Jan-2020        30         0.084441 
    02-Jan-2020        11          -1.8858 
    03-Jan-2020        36          -1.1822 
    04-Jan-2020        38          -1.8858 
    05-Jan-2020        31          -1.6044 
    06-Jan-2020        33          0.50665 
    07-Jan-2020        33         0.084441 
    08-Jan-2020        22          -1.0414 
    09-Jan-2020        30          0.78812 
    10-Jan-2020        15          -1.8858 



#### 防伪水印——左手の明天 ####

💗 大家好🤗🤗🤗,我是左手の明天!好久不见💗

💗今天开启新的系列——重新定义matlab强大系列💗

📆  最近更新:2023 年 05 月 25 日,左手の明天的第 286 篇原创博客

📚 更新于专栏:matlab

#### 防伪水印——左手の明天 ####

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/569160.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2. css表格属性、文本属性、列表属性、边距属性、尺寸属性

1. 表格属性 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width…

每日一题——四数之和(双指针解法)

每日一题 四数之和 注&#xff1a; 如果大家没做过题目两数之和、三数之和&#xff0c;强烈建议先去做做&#xff0c;也可以参考我之前写的博客&#xff0c;这样做这一题会事半功倍&#xff0c;且由于本题思路和三数之和十分类似&#xff0c;故对于解题思路&#xff0c;也不会…

涨点神器:注意力机制---多头上下文集成(Context Aggregation)的广义构建模块,助力小目标检测,暴力涨点

1.数据集性能验证 在crack道路缺陷检测任务中,多头上下文集成(Context Aggregation)的广义构建模块实现暴力涨点mAP50从0.954提升至0.992 🏆🏆🏆🏆🏆🏆Yolov5/Yolov7魔术师🏆🏆🏆🏆🏆🏆 ✨✨✨魔改网络、复现前沿论文,组合优化创新 🚀🚀🚀…

第一章.The Learning Problem

第一章.The Learning Problem 1.1 The Learning Problem 1.机器学习的概念&#xff1a; 机器学习就是机器从数据中总结经验。从数据中找出某种规律或者模型&#xff0c;并用他来解决某种实际问题。 2.机器学习的应用场景 1).事物本身存在某种潜在规律 2).某些问题难以使用普…

海豚调度器完全设置东八区

为了兼容全世界不同时区&#xff0c;默认情况下&#xff0c;海豚调度器使用的是 UTC 0 时区&#xff0c;包括保存到数据库表中的数据时区&#xff0c;以及展示到页面上的时区。 如果我们想在页面上看到东八区时间&#xff0c;则需要在页面上手动选择上海时区&#xff0c;如下图…

调优圣经:零基础精通Jmeter分布式压测,10Wqps+超高并发

高并发压测的场景 在40岁老架构师尼恩的读者社群&#xff08;50&#xff09;中&#xff0c;很多小伙伴拿不到offer&#xff0c;或者拿不到好的offer。 尼恩经常给大家 优化项目&#xff0c;优化简历&#xff0c;挖掘技术亮点。 在指导简历的过程中&#xff0c; Java 调优是一…

【Vue】一:Vue的基础

文章目录 1.第一个Vue程序1.1 创建Vue实例1.2 将Vue实例挂载到某个位置 2. 模板语句数据来源3. Vue实例的数据对象4. template配置项详解 1.第一个Vue程序 1.1 创建Vue实例 &#xff08;1&#xff09;创建Vue实例 创建一个Vue实例&#xff1a;new Vue() &#xff08;2&#x…

SpringCloud Sentinel集成Gateway和实时监控

目录 1 Sentinel集成Gateway1.1 Sentinel对网关支持1.2 GateWay集成Sentinel 2 Sentinel控制台2.1 Sentinel控制台安装2.2 接入控制台2.3 可视化管理2.3.1 实时监控2.3.2 流控规则2.3.3 降级规则2.3.4 热点数据 1 Sentinel集成Gateway 参看&#xff1a; https://github.com/al…

Linux网络编程——Day12 两种高效的并发模式

今天继续学习高性能服务器框架&#xff0c;上一篇关于高性能服务器的基础知识连接如下&#xff1a; Linux网络编程—Day11 高性能服务器程序框架_Jane_Librastar的博客-CSDN博客https://blog.csdn.net/qq_43797135/article/details/130834354建议先看上一篇哦~ 两种高效的并发…

就业内推 | 京东云专场,IP/NP以上证书,15薪,员工旅游

01 京东云 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1. 整体网络的部署和运维&#xff0c;包括网络新建、扩容、及变更等&#xff1b; 2. 保障网络及相关业务的稳定运行&#xff0c;对问题和故障进行跟踪并最终解决&#xff1b; 3. 与业务部门或客户密切配合&…

网络编程先导知识

目录 1.什么是网络协议 2.什么是Socket Socket主要类型 3.C/S和B/S架构 4.网络字节序和主机字节序 5.局域网和广域网 6.IP地址和端口的概念 1.什么是网络协议 为了在计算机网络中做到有条不紊地交换数据&#xff0c;就必须遵守一些事先约定好的规则。这些规则明确规定了所…

【P30】JMeter 事务控制器(Transaction Controller)

文章目录 一、事务控制器&#xff08;Transaction Controller&#xff09;参数说明二、测试计划设计2.2.1、勾选 Generate parent sample2.2.1、勾选 Include duration of timer and pre-post processors in generated sample 一、事务控制器&#xff08;Transaction Controlle…

Ubuntu22.04安装MySQL8

在 Ubuntu 22.04 上安装 MySQL 8&#xff0c;可以按照以下步骤进行&#xff1a; 安装MySQL需要在root用户下 sudo su -更新软件包列表&#xff1a; sudo apt update安装 MySQL 8&#xff1a; sudo apt install mysql-server安装过程中会提示设置 MySQL root 用户的密码。 确认…

STL-函数对象

目录 一、函数对象 1、基本概念 2、使用 二、谓词 1、基本概念 2、一元谓词 3、二元谓词 三、内建函数对象 1、基本概念 2、算数仿函数 3、关系仿函数 4、逻辑仿函数 一、函数对象 1、基本概念 概念&#xff1a; ①重载函数调用操作符的类&#xff0c;其对象常称…

关于Sql 中 on和where的粗略理解

先看到题&#xff1a;统计复旦用户8月练题情况 牛客中的 原地址 通过这个题我们来探讨where和on 描述 题目&#xff1a; 现在运营想要了解复旦大学的每个用户在8月份练习的总题目数和回答正确的题目数情况&#xff0c;请取出相应明细数据&#xff0c;对于在8月份没有练习过的…

【Ansys Fluent】All cell zones in Fluent may be automatically set to Fluid.

一、问题背景 在ansys meshing中保存划分完网格之后的结果时&#xff0c;弹出警报——All cell zones in Fluent may be automatically set to Fluid. 如果你忽视这个警报&#xff0c;打开fluent时。 接着就会将你想要设置为solid的区域识别成flow&#xff0c;从而生成一些错…

docker4_创建容器

docker4_搭建hadoop集群 1集群规划进入容器base_centos 2创建容器创建三个docker容器&#xff0c;分别作为三个结点(注意端口的设置)gpb_hdp_node3 容器gpb_hdp_node2 容器删除容器查看已经创好的容器gpb_hdp_node1容器&#xff08;最后创建&#xff09;问题1:容器名和 hostnam…

代码随想录算法训练营第十六天 | 104.二叉树的最大深度 559.n叉树的最大深度,111.二叉树的最小深度,222.完全二叉树的节点个数

代码随想录算法训练营第十六天 | 104.二叉树的最大深度 559.n叉树的最大深度&#xff0c;111.二叉树的最小深度&#xff0c;222.完全二叉树的节点个数 1.1 104.二叉树的最大深度 思路&#xff1a; 采用后序遍历确定递归函数的参数和返回值&#xff0c;确定终止条件&#xff…

AJAX 教程---菜鸟教程

文章目录 AJAX 简介AJAX 实例XHR 创建对象XHR 请求向服务器发送请求GET 还是 POST&#xff1f;GET 请求POST 请求url - 服务器上的文件 XHR 响应responseText 属性responseXML 属性 XHR readyState使用回调函数 AJAX 简介 AJAX 是一种在无需重新加载整个网页的情况下&#xff0…

CTR预估之DNN系列模型:FNN/PNN/DeepCrossing

前言 在上一篇文章中 CTR预估之FMs系列模型:FM/FFM/FwFM/FEFM&#xff0c;介绍了FMs系列模型的发展过程&#xff0c;开启了CTR预估系列篇章的学习。FMs模型是由线性项和二阶交互特征组成&#xff0c;虽然有自动学习二阶特征组合的能力&#xff0c;一定程度上避免了人工组合特征…