R实战第九篇:数据标准化
数据标准化处理是数据分析的⼀项基础⼯作,不同评价指标往往具有不同的量纲,数据之间的差别可能很⼤,不进⾏处理会影响到数据分析的结果。为了消除指标之间的量纲和取值范围差异对数据分析结果的影响,需要对数据进⾏标准化处理,就是说,把数据按照⽐例进⾏缩放,使之落⼊⼀个特定的区域,便于进⾏综合分析。
在继续下⽂之前,先解释三个个术语:
(1)所谓量纲,简单来说,就是说数据的单位;有些数据是有量纲的,⽐如⾝⾼,⽽有些数据是没有量纲的,例如,男⼥⽐例。⽆量纲化,是指去除数据的单位限制,将其转化为⽆量纲的纯数值,便于不同单位或者量级的指标能够进⾏和加权。
(2)数据的标准化是指将数据按照⽐例缩放,使之落⼊⼀个特定的区间。
(3)归⼀化是数据标准化中最简单的⽅式,⽬的是把数变为(0,1)之间的⼩数,把有量纲的数据转换为⽆量纲的纯数量。
常⽤的归⼀化⽅法主要有离差标准化和标准差标准化,r的scale()可以实现标准差标准化,也可以指定标准化之后数据的均值和标准差。⼀,离差标准化
离差标准化是对原始数据进⾏线性变化,使数值映射到[0,1]区间中,转换公式是:
离差标准化保留了原来数据中存在的关系,是消除量纲和数据取值范围对数据分析产⽣影响的最简单⽅法,缺点是如果数据集中,且某个数值很⼤,那么标准化之后⼤部分值会接近于0,并且不会相差很⼤。
⼆,标准差标准化
经过该⽅法处理的数据的均值是0,标准差是1,转化公式是:
这种⽅法基于原始数据的均值(mean)和标准差(standard deviation)对数据进⾏标准化,是⽤的最多的数据的标准化⽅法,但是,均值和标准差受离群点的影响很⼤。
三,scale()标准化
R语⾔通常使⽤scale()函数对矩阵或数据框按列对数据进⾏标准化:
scale(x, center = TRUE, scale = TRUE)
参数注释:x是数值矩阵,当center=TRUE时,为数据对象x按列进⾏中⼼化;当scale=TRUE时,为数据对象x按列进⾏标准化。
中⼼化是把每个数据减去均值;
标准化是在中⼼化后的数据基础上再除以数据的标准差;
培根卷金针菇
默认情况下,center=TRUE,scale=TRUE,scale()函数⾸先把⼀组数的每个数都减去这组数的平均值,然后除以这组数的均⽅根。
如果scale=TRUE,⽽center=FALSE,那么,scale()函数不会把⼀组数中的每个数减去平均值,⽽直接处以这组数据的均⽅根。
1,scale()函数的中⼼化和标准化
例如,向量v是数值向量,均值是 3,标准差是 1.581139:
v <- c(1,2,3,4,5)
s <- sd(v)
北京税务网上办税服务厅使⽤scale()函数进⾏中⼼化操作,每个向量原始都减去均值3:
上英语课的英语> scale(v,center=TRUE,scale=FALSE)
[,1]
20年后的家乡作文350字[1,] -2
[2,] -1
[3,] 0
[4,] 1
[5,] 2
attr(,"scaled:center")
[1] 3
使⽤scale()函数进⾏标准化操作,先减去均值,后除以均⽅根:
> scale(v,center=TRUE,scale=TRUE)
[,1]
[1,] -1.2649111
[2,] -0.6324555
[3,] 0.0000000
[4,] 0.6324555
[5,] 1.2649111
attr(,"scaled:center")动态摄影
[1] 3
attr(,"scaled:scale")
两对半检查是什么[1] 1.581139
2,scale()函数的均值和标准差
路由器密码忘了默认情况下,使⽤scale()函数对矩阵或数据框的指定列进⾏均值为0,标准差为1的标准化操作:mydata <-scale(mydata)
要对每⼀列进⾏任意均值和标准差的标准化,可以使⽤以下代码,其中M是均值,SD是标准差:mydata <scale(mydata) *SD + M
参考⽂档: