前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >shell脚本中的各种表达式介绍和使用

shell脚本中的各种表达式介绍和使用

作者头像
老油条IT记
发布于 2020-03-20 13:06:51
发布于 2020-03-20 13:06:51
1K00
代码可运行
举报
运行总次数:0
代码可运行

#前言:在shell脚本中,有各种的表达式,包括有条件测试表达式,文件表达式,字符串表达式,整数表达式,接下来我们来了解一下他们的使用方法

1.条件测试表达式

#首先来看一下条件测试语法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#条件测试语法                        #说明
1.test <测试表达式>       test命令和后面<内容>之间至少有一个空格
2.[ <测试表达式> ]        单中括号进行条件测试表达式,[]的边界和内容之间至少要有一个空格
3.[[ <测试表达式> ]]      双括号,[[]]的边界和内容也是要有空格
4.((<测试表达式>))        双小括号,两端不用空格

#注意点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1、语法1中的test命令和语法2中的[]是等价的。语法3中的[[]]为扩展的test命令,语法4中的(())常用于计算

2、在[[]](双中括号)中可以使用通配符等进行模式匹配,这是其区别其他集中语法格式的地方

3&&||><等操作符可以应用于[[]]中,但不能应用于[]中,在[]中一般用-a、-o、-gt(用于整数)、-lt(用于整数)代替上述操作符

4、对于整数的关系运算,也可以使用shell的算术运算符(())

#详解

1.1.test条件测试的语法和使用

#查看帮助:man test

#介绍:test - check file types and compare values(检查文件类型和比较值)

#语法格式: test <测试表达式>

#test的帮助文档

[root@shell ~]# man test > 1.txt

[root@shell ~]# cat 1.txt

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
TEST(1)                               User Commands                               TEST(1)



NAME
       test - check file types and compare values

SYNOPSIS
       test EXPRESSION
       test

       [ EXPRESSION ]
       [ ]
       [ OPTION

DESCRIPTION
       Exit with the status determined by EXPRESSION.

       --help display this help and exit

       --version
              output version information and exit

       An  omitted  EXPRESSION defaults to false.  Otherwise, EXPRESSION is true or false
       and sets exit status.  It is one of:

       ( EXPRESSION )
              EXPRESSION is true

       ! EXPRESSION
              EXPRESSION is false

       EXPRESSION1 -a EXPRESSION2
              both EXPRESSION1 and EXPRESSION2 are true

       EXPRESSION1 -o EXPRESSION2
              either EXPRESSION1 or EXPRESSION2 is true

       -n STRING
              the length of STRING is nonzero

       STRING equivalent to -n STRING

       -z STRING
              the length of STRING is zero

       STRING1 = STRING2
              the strings are equal

       STRING1 != STRING2
              the strings are not equal

       INTEGER1 -eq INTEGER2
              INTEGER1 is equal to INTEGER2

       INTEGER1 -ge INTEGER2
              INTEGER1 is greater than or equal to INTEGER2

       INTEGER1 -gt INTEGER2
              INTEGER1 is greater than INTEGER2

       INTEGER1 -le INTEGER2
              INTEGER1 is less than or equal to INTEGER2

       INTEGER1 -lt INTEGER2
              INTEGER1 is less than INTEGER2

       INTEGER1 -ne INTEGER2
              INTEGER1 is not equal to INTEGER2

       FILE1 -ef FILE2
              FILE1 and FILE2 have the same device and inode numbers

       FILE1 -nt FILE2
              FILE1 is newer (modification date) than FILE2

       FILE1 -ot FILE2
              FILE1 is older than FILE2

       -b FILE
              FILE exists and is block special

       -c FILE
              FILE exists and is character special

       -d FILE
              FILE exists and is a directory

       -e FILE
              FILE exists

       -f FILE
              FILE exists and is a regular file

       -g FILE
              FILE exists and is set-group-ID

       -G FILE
              FILE exists and is owned by the effective group ID

       -h FILE
              FILE exists and is a symbolic link (same as -L)

       -k FILE
              FILE exists and has its sticky bit set

       -L FILE
              FILE exists and is a symbolic link (same as -h)

       -O FILE
              FILE exists and is owned by the effective user ID

       -p FILE
              FILE exists and is a named pipe

       -r FILE
              FILE exists and read permission is granted

       -s FILE
              FILE exists and has a size greater than zero

       -S FILE
              FILE exists and is a socket

       -t FD  file descriptor FD is opened on a terminal

       -u FILE
              FILE exists and its set-user-ID bit is set

       -w FILE
              FILE exists and write permission is granted

       -x FILE
              FILE exists and execute (or search) permission is granted

       Except for -h and -L, all FILE-related tests dereference symbolic  links.   Beware
       that  parentheses  need  to be escaped (e.g., by backslashes) for shells.  INTEGER
       may also be -l STRING, which evaluates to the length of STRING.

       NOTE: [ honors the --help and --version options, but test does not.   test  treats
       each of those as it treats any other nonempty STRING.

       NOTE:  your  shell may have its own version of test and/or [, which usually super‐
       sedes the version described here.  Please refer to your shell's documentation  for
       details about the options it supports.

       GNU  coreutils  online  help: <http://www.gnu.org/software/coreutils/> Report test
       translation bugs to <http://translationproject.org/team/>

AUTHOR
       Written by Kevin Braunsdorf and Matthew Bradburn.

COPYRIGHT
       Copyright © 2013 Free Software Foundation, Inc.  License GPLv3+: GNU GPL version 3
       or later <http://gnu.org/licenses/gpl.html>.
       This  is  free  software: you are free to change and redistribute it.  There is NO
       WARRANTY, to the extent permitted by law.

SEE ALSO
       The full documentation for test is maintained as a Texinfo manual.   If  the  info
       and test programs are properly installed at your site, the command

              info coreutils 'test invocation'

       should give you access to the complete manual.



GNU coreutils 8.22                     August 2019                                TEST(1)

#使用

#例一:判断如果file文件存在且为一个文件,就输出true,否则输出false

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@shell ~]# test -f file && echo true || echo false
false

#讲解:因为file这个文件不存在,所以输出false,&&是并且的意思,||表示前面一个执行失败才会执行后面

#例二:使用-z选项(如果测试字符串的长度为0,则表达式成立)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@shell ~]# test -z "guoke" && echo 1 || echo 0
0  #因为测试的字符串为guoke,不为空值,所以为假输出0
[root@shell ~]# char="guoke"
[root@shell ~]# test -z "$char" && echo 1 || echo 0
0  #因为guoke赋值给了char,所以也不是空值,输出0
[root@shell ~]# char=""
[root@shell ~]# test -z "$char" && echo 1 || echo 0
1  #char为空值,所以长度为0,表达式成立输出1

1.2.[]中括号条件测试语法和使用

#语法格式:[ <测试表达式> ]

#注意点:中括号内部的两端都要有空格,[]和test用法一样,test的判断选项也可以在[]中用

#输入两端都有空格的技巧:先输入一对中括号,然后退一个格,输入两个空格,再退一个格

#例子:利用[]加-f选项(如果文件存在且为普通文件则表达式就成立)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@shell ~]# [ -f /tmp/guoke.txt ] && echo 1 || echo 0
0  #文件不存在所以输出0
[root@shell ~]# touch /tmp/guoke.txt
[root@shell ~]# [ -f /tmp/guoke.txt ] && echo 1 || echo 0
1  #文件存在且为一个普通文件,则输出1
[root@shell ~]# [ -f /tmp/guoke.txt ] && echo 1
1

1.3.[[]] 双中括号条件测试语法及使用

#语法格式:[[ <测试表达式> ]]

#注意点:双中括号的两端需要有空格

#例子:判断文件存在且为一个普通文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@shell ~]# [[ -f /tmp/test.txt ]] && echo 1 || echo 0
0  #文件不存在所以条件不成立,输出0
[root@shell ~]# touch /tmp/test.txt
[root@shell ~]# [[ -f /tmp/test.txt ]] && echo 1 || echo 0
1  #文件存在且为普通文件,条件成立,输出1
[root@shell ~]# [[ -f /tmp/test.txt ]] && echo 1
1

1.4.特殊条件测试表达式例子

#判断条件测试表达式的条件成立或不成立后,还需要执行多条命令语句的语法,不用if测试表达式的格式

#当条件1成立时,同时执行多条命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
test 条件1 && {

}

[ 条件1 ] && {
    命令1
    命令2  

}
[[ 条件1 ]] && {

}

#例子:当条件成立的时候就执行后面的命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@shell ~]# cat test.sh 
#!/bin/bash
[ $1 -eq 3 ] && {
    echo 1
    echo 2
    echo 3
}

[root@shell ~]# sh test.sh 3 #传参
1
2
3

#上面的判断相当于下面if语句的效果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if [ 条件1 ];then
    命令1
    命令2
fi

#关于条件测试表达式的总结

#1.test和[]、[[]]的功能有所重合,因此在工作中选择一种适合自己的一种用,其他的可以看懂别人的写的脚本就好了,可以同man test查看更多参数用法

#2.测试表达式test、[]、[[]]、(())区别总结

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
测试表达式符号            test             []             [[]]          (())
边界是否需要空格          需要              需要            需要         不需要
逻辑操作符              !-a、-o        !-a、-o       !&&||     !&&||
整数比较操作符            -eq -gt -lt -ge -le(test,[],[[]])          = < > >= <=
字符串比较操作符           ===!= (全部支持)
是否支持通配符匹配        不支持          不支持            支持         不支持

2.文件表达式

#常用的文件测试操作符

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#常用操作符                        #说明
-f 文件,全称file            #文件存在且为普通文件则为真,表达式成立
-d 文件,全称directory       #文件存在且为目录则为真,表达式成立
-s 文件,全称size            #文件存在且大小不为0为真
-e 文件,全称exist           #文件存在则为真
-r 文件,全称read            #文件存在且为可读则为真,表达式成立
-w 文件,全称write           #文件存在且可写为真,表达式成立
-x 文件,全称executable      #文件存在且可执行为真
-L 文件,全称link            #文件存在且为链接文件为真
f1 -nt f2,英文newer than    #文件f1比文件f2新则为真,根据文件修改时间计算
f1 -ot f2,英文older than    #文件f1比文件f2旧为真,根据修改时间计算

#提示:这些操作符对于test,[],[[]]几乎是通用的,可以使用man test查看更多的操作符

#例子:

#1.-f,判断文件是否存在且为普通文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@shell ~]# touch test
[root@shell ~]# ls -l test
-rw-r--r-- 1 root root 0 Mar 18 16:02 test
[root@shell ~]# [ -f test ] && echo 1 || echo 0
1   #解析:因为文件存在且为普通文件,所以为真输出1

#2.-d,判断文件是否存在且为目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@shell ~]# mkdir test1
[root@shell ~]# [ -d test1 ] && echo 1 || echo 0
1  #因为文件存在且为目录,所以为真输出1,如果不存在就输出0

#3.测试文件属性:r,w,x

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@shell ~]# ls -ld test
-rw-r--r-- 1 root root 0 Mar 18 16:02 test
[root@shell ~]# [ -r test ] && echo 1 || echo 0
1   #文件存在且可读,为真,输出1
[root@shell ~]# [ -w test ] && echo 1 || echo 0
1   #文件存在且可写,为真,输出1
[root@shell ~]# [ -x test ] && echo 1 || echo 0
0  #文件不可执行,不为真,所以输出0
[root@shell ~]# chmod +x test
[root@shell ~]# [ -x test ] && echo 1 || echo 0
1   #加了可执行权限就为真成立了

#提示:测试文件的读、写、执行等属性,不光是根据文件属性rwx的标识来判断,还要看当前执行测试的用户是否真的可以按照对应的权限操作该文件

#测试时变量的特殊写法及问题

#用[]测试变量时,如果被测试的变量不加双引号,那么测试结果可能会是不正确的

#例子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@shell ~]# echo $test  #不存在的变量

[root@shell ~]# [ -f $test ] && echo 1 || echo 0 #不加引号返回的结果时错误的
1
[root@shell ~]# [ -f "$test" ] && echo 1 || echo 0 #添加以后返回的结果是正确的
0 

#注意点:做测试判断时,不一定非要按照前面的如果成立了输出什么,不成立输出什么,可以直接做部分判断

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@shell ~]# [ -x test ] && echo 1  #如果test文件可执行,就输出1,否则不做任何输出
[root@shell ~]# [ -f /etc ] || echo 0  #如果前面执行失败就输出0,否则不做任何输出
0

3.字符串表达式

#字符串表达式作用:比较两个字符串是否相同、测试字符串的长度是否为0、字符串是否为null等

#常用的字符串测试操作符

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#常用字符串操作符                #说明
-z "字符串"                    如果字符串长度为0则为真,
-n "字符串"                    如果字符串长度不为0则为真,
"字符串1" = "字符串2"           如果字符串1等于字符串2则为真,可以使用==代替=
"字符串1" != "字符串2"          如果字符串1不等于字符串2则为真,不能使用!==代替!=

#提示:

#1.上面的字符串测试操作符必须要有""引起来

#2.比较符号两端要有空格

#3.-n 比较字符串长度是否不为0,如果不为0则为真,用法 [ -n "$my" ]

#4.-z 比较字符串长度是否为0,如果为0则为真,用法 [ -z "$my" ]

#例1:-n,-z参数应用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@shell ~]# [ -n "abc" ] && echo 1 || echo 0
1    #-n是不为空则为真,字符串长度为abc,所以长度不是为0,为真输出1
[root@shell ~]# test -n "aa" && echo 1 || echo 0
1    
[root@shell ~]# test -n "" && echo 1 || echo 0
0    #字符串为空,不为真,数以输出0
[root@shell ~]# var="test"
[root@shell ~]# [ -n "$var" ] && echo 1|| echo 0
1
[root@shell ~]# [ -z "$var" ] && echo 1|| echo 0
0    #-z是为空值为真,不为空值为假,所以输出0[root@shell ~]# [ "aa" = "aa" ] && echo 1 || echo 0
1    #字符串相等,所以长度为0,为真

#例二:进行字符串比较时,如果等号两端没有空格带来的问题

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@shell ~]# [ "abc"="1" ]&& echo 1 || echo 0 
1     #等号两边没有空格,明显是不成立的也输出了1
[root@shell ~]# [ "abc" = "1" ]&& echo 1 || echo 0 
0    #正常现象

#总结:字符串比较时若等号两端没有空格,则会导致判断出现逻辑错误,即使语句没有问题,但是结果依然可能不对

#例三:字符串不加引号可能带来的问题

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@shell ~]# var=""    #将变量内容设置为空
[root@shell ~]# [ -n "$var" ] && echo 1 || echo 0
0    #-n是值不为空则为真,因为变量内容为0,为空值,所以不为真,输出0
[root@shell ~]# [ -n $var ] && echo 1 || echo 0
1    #不加双引号导致返回结果错误
[root@shell ~]# [ -z "$var" ]&& echo 1 || echo 0
1    #-z是字符串长度为0,则为真

#查看有关双引号和等号两端空格的生产系统标准

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@shell ~]# sed -n '30,31p' /etc/init.d/network 
# Check that networking is up.
[ "${NETWORKING}" = "no" ] && exit 6

4.整数表达式

#整数二元比较操作符

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
在test及[]中使用的比较符号    在[[]](())中使用的比较符号        说明
-eq                            ===                 相等,全称equal
-ne                              !=                   不相等,全称not qeual
-gt                               >                   大于,全称greater than
-ge                               >=                  大于等于,全称为greater equal
-lt                               <                   小于,全称less than
-le                               <=                  小于等于,全称less equal                              

#提示:如果选择整数比较的时候,要确保两边是整数,如[ 2 -eq 1 ]

#注意:"<"和">"在[]中括号里面需要转义,对于数字不转义的结果可能不会报错,但是结果可能不对,=和!=在[]不用转义

#例子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@shell ~]# [ 2 > 3 ] && echo 1 || echo 0
1 #结果应该返回0,但是不转义返回了1是错误的
[root@shell ~]# [ 2 \> 3 ] && echo 1 || echo 0
0 #进行转义之后输出正确
[root@shell ~]# [ 2 < 1 ] && echo 1 || echo 0
1
[root@shell ~]# [ 2 \< 1 ] && echo 1 || echo 0
0

#整数比较的推荐用法,使用-eq,-lt,-gt

#例子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@shell ~]# [ 13 -lt 24 ] && echo 1
1  #13小于24结果为真就输出1

5.逻辑操作符

#常用的逻辑操作符

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
在test及[]中使用的比较符号    在[[]](())中使用的比较符号        说明
    -a                              &&                     and,且,两端都为真,则结果为真
    -o                              ||                     or,或,两端有一个为真,则结果为真
     !                               !                     not,非,两端相反,则结果为真

#提示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1、逻辑操作符前后的表达式是否成立,一般用真假来表示
2、“!”的中文意思是反,即与一个逻辑值相反的逻辑值
3-a的中文意思是“与”(and或&&),前后两个逻辑值都为“真”,综合返回值才为真,否则为假
4-o的中文意思是“或”(or或||),前后两个逻辑值只要有一个为真,返回值就为真
5、连接两行[]、test或[[]]的表达式可用&&||

#提示:中括号里面不能使用&&字符串,否则报错,在[[]]和(())里面就可以用,可参考上面列出的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@shell ~]# [ -f "$f1" && -f "$f2" ] && echo 1 || echo 0
-bash: [: missing `]'
0

#例一:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@shell ~]# f1=/etc/rc.local
[root@shell ~]# f2=/etc/services
[root@shell ~]# [ -f "$f1" -a -f "$f2" ] && echo 1 || echo 0
1  #判断如果f2和f2变量的文件存在且为文件的话,就为真,输出1,如果一个不为真,那么久不为真,就输出0
[root@shell ~]# [[ -f "$f1" && -f "$f2" ]] && echo 1 || echo 0 
1  #在[[]]双中括号中就可以使用&&
[root@shell ~]# [ -f "$f1" ]&&[ -f "$f2" ] && echo 1 || echo 0
1  #或者在两个[]之间使用&&也可以

#例二:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@shell ~]# a=1
[root@shell ~]# b=2
[root@shell ~]# [ "$a" -eq 2 -a "$b" -eq 2 ] && echo 1 || echo 0
0    #如果变量a等于2且变量b也等于2,则为真,否则为假,输出0
[root@shell ~]# [ "$a" -eq 1 -a "$b" -eq 2 ] && echo 1 || echo 0
1
[root@shell ~]# [ "$a" -eq 1 -o "$b" -eq 2 ] && echo 1 || echo 0
1    #如果变量a等于或变量b等于2,则为真,输出1-o是或,有一个条件成立则为真    
[root@shell ~]# [ "$a" -eq 2 -o "$b" -eq 3 ] && echo 1 || echo 0
0
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
深度学习基础入门篇[七]:常用归一化算法、层次归一化算法、归一化和标准化区别于联系、应用案例场景分析。
那么什么是量纲,又为什么需要将有量纲转化为无量纲呢?具体举一个例子。当我们在做对房价的预测时,收集到的数据中,如房屋的面积、房间的数量、到地铁站的距离、住宅附近的空气质量等,都是量纲,而他们对应的量纲单位分别为平方米、个数、米、AQI等。这些量纲单位的不同,导致数据之间不具有可比性。同时,对于不同的量纲,数据的数量级大小也是不同的,比如房屋到地铁站的距离可以是上千米,而房屋的房间数量一般只有几个。经过归一化处理后,不仅可以消除量纲的影响,也可将各数据归一化至同一量级,从而解决数据间的可比性问题。
汀丶人工智能
2023/04/22
2.1K0
深度学习基础入门篇[七]:常用归一化算法、层次归一化算法、归一化和标准化区别于联系、应用案例场景分析。
机器学习笔记之数据缩放 标准化和归一化
使用单一指标对某事物进行评价并不合理,因此需要多指标综合评价方法。多指标综合评价方法,就是把描述某事物不同方面的多个指标综合起来得到一个综合指标,并通过它评价、比较该事物。由于性质不同,不同评价指标通常具有不同的量纲和数量级。当各指标相差很大时,如果直接使用原始指标值计算综合指标,就会突出数值较大的指标在分析中的作用、削弱数值较小的指标在分析中的作用。为消除各评价指标间量纲和数量级的差异、保证结果的可靠性,就需要对各指标的原始数据进行特征缩放。
Jetpropelledsnake21
2021/03/03
2.6K0
工业数据分析之数据归一化 | 冰水数据智能专题 | 2nd
归一化就是要把需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。首先归一化是为了后面数据处理的方便,其次是保证程序运行时收敛加快。归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在某个区间上是统计的坐标分布。归一化有同一、统一和合一的意思。
用户7623498
2020/08/04
7460
工业数据分析之数据归一化 | 冰水数据智能专题 | 2nd
特征归一化!!
特征归一化是数据预处理中的一项重要任务,旨在将不同特征的数据范围和分布调整到相似的尺度,以确保机器学习模型能够更好地训练和收敛。
Python编程爱好者
2023/10/24
2990
特征归一化!!
归一化还是标准化?如何为你的数据选择最佳缩放方法
想象一下,如果你在篮球队里同时安排了姚明(2.29米)和"小土豆"姜山(1.65米)一起打球,结果会怎样?显然,姚明会"主宰"比赛节奏。机器学习算法中的特征也是如此,不同量级的特征若不加处理,"身高优势"明显的特征就会霸占算法的"注意力"。
martinzh7
2025/06/03
1610
归一化还是标准化?如何为你的数据选择最佳缩放方法
归一化方法总结_实例归一化
http://blog.csdn.net/zbc1090549839/article/details/44103801
全栈程序员站长
2022/11/10
1.6K0
归一化方法总结_实例归一化
归一化函数normalize详解_求归一化常数A
首先归一化是为了后面数据处理的方便,其次是保证程序运行时收敛加快。归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在某个区间上是统计的坐标分布。归一化有同一、统一和合一的意思。
全栈程序员站长
2022/11/07
2.3K0
归一化函数normalize详解_求归一化常数A
算法 - PNPoly解决点和多边形问题
计算点到多边形最短距离的基本原理是:依次计算点到多边形每条边的距离,然后筛选出最短距离。
用户2987604
2020/06/15
2.6K0
算法 - PNPoly解决点和多边形问题
GEE 教程:如何实现对指定矢量集合的归一化操作(以北京市各区县面积和边长为例)
数据归一化处理是指将数据按照一定的规则进行变换,使数据落入一个特定的区间范围内。数据归一化处理的目的是消除数据之间的量纲差异,同时保留数据的分布特征,以便更好地进行数据分析和建模。
此星光明
2024/09/02
2640
GEE 教程:如何实现对指定矢量集合的归一化操作(以北京市各区县面积和边长为例)
特征工程:归一化、特征组合、高维特征降解
当然这是针对单个特征而言的,采用batch训练的归一化还有Batch Normalization、Layer Normalization、Weight Normalization等。
Steve Wang
2023/10/12
4720
特征工程:归一化、特征组合、高维特征降解
python归一化函数_机器学习-归一化方法
引入归一化,是由于在不同评价指标(特征指标)中,其量纲或是量纲单位往往不同,变化区间处于不同的数量级,若不进行归一化,可能导致某些指标被忽视,影响到数据分析的结果。
全栈程序员站长
2022/11/10
1.5K0
python归一化函数_机器学习-归一化方法
Spark ML 正则化 标准化 归一化 ---- 基本概念简介
正则化是为了防止过拟合, 正则化也可以叫做或者译成“规则项”,规则化就是说给需要训练的目标函数加上一些规则(限制),让他们不要自我膨胀。
流川疯
2021/12/06
5680
Spark ML 正则化 标准化 归一化 ---- 基本概念简介
归一化、标准化、正则化公式相关小记「建议收藏」
作者:RayChiu_Labloy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处
全栈程序员站长
2022/11/10
2K0
归一化、标准化、正则化公式相关小记「建议收藏」
特征工程|连续特征的常见处理方式(含实例)
连续特征离散化可以使模型更加稳健,比如当我们预测用户是否点击某个商品时,一个点击该商品所属类别下次数为100次和一个点击次数为105次的用户可能具有相似的点击行为,有时候特征精度过高也可能是噪声,这也是为什么在LightGBM中,模型采用直方图算法来防止过拟合。
石晓文
2020/08/21
1.4K0
特征工程|连续特征的常见处理方式(含实例)
Scaling与Normalization的区别
scale与normalize,是我们在做前期数据处理的时候经常做的操作,但是它们经常会被混淆,现在网上的一些讨论也比较混乱。
生信编程日常
2020/10/26
2K0
Scaling与Normalization的区别
如何使用java一步步讲解Z-score 算法
Z-score 归一化(也称为标准化)是一种常用的数据预处理技术,用于将数据转换为具有零均值(mean)和单位方差(variance)的分布。这在很多机器学习算法中特别有用,因为某些算法在数据标准化后表现更好。 以下是 Z-score 归一化的 Java 实现步骤,并附带实际可使用的代码: 步骤: 计算均值(mean):遍历数据集,计算所有数值的平均值。 计算标准差(standard deviation):遍历数据集,计算每个数值与均值之差的平方的平均值(即方差),然后取方差的平方根得到标准差。 应用 Z-score 公式:对于数据集中的每个数值,使用公式 (数值 - 均值) / 标准差 进行转换。 Java 代码: import java.util.Arrays;
jack.yang
2025/04/05
1530
归一化 完全总结!!
数据归一化是一种预处理步骤,就是想要将不同尺度和数值范围的数据转换到统一的尺度上。
Python编程爱好者
2024/06/27
7770
归一化 完全总结!!
数据处理中的标准化、归一化,究竟是什么?
今天说一个比较重要的内容,无论是在算法建模还是在数据分析都比较常见:数据归一化和标准化。
小一不二三
2021/02/18
6.3K0
数据处理中的标准化、归一化,究竟是什么?
数据归一化和两种常用的归一化方法
数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。以下是两种常用的归一化方法:
全栈程序员站长
2022/09/10
2.9K0
数据归一化和两种常用的归一化方法
备战机器学习面试001|为什么需要对数值类型的特征做归一化?
对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内。最常用的方法主要有以下两种。
Ai学习的老章
2019/07/15
6410
备战机器学习面试001|为什么需要对数值类型的特征做归一化?
推荐阅读
相关推荐
深度学习基础入门篇[七]:常用归一化算法、层次归一化算法、归一化和标准化区别于联系、应用案例场景分析。
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档