r语言 如何将数据标准化

Python0162

r语言 如何将数据标准化,第1张

您好,这个语句就可以:

scale(data, center=T,scale=T),由于默认值均为T,简写成scale(data)即可标准化,data就是你导入的数据集的名称

基于R语言的数据标准化处理脚本

数据标准化(Normalization)

将数据按比例缩放,使之落入一个小的特定区间。去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。

数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。

数据同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑改变逆指标数据性质,使所有指标对测评方案的作用力同趋化,再加总才能得出正确结果。

数据无量纲化处理主要解决数据的可比性。数据标准化的方法有很多种,常用的有“最小—最大标准化”、“Z-score标准化”和“按小数定标标准化”等。经过上述标准化处理,原始数据均转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,可以进行综合测评分析。

min-max标准化(Min-max normalization)

也叫离差标准化,是对原始数据的线性变换,使结果落在[0,1]区间,转换函数如下:

正向指标:(x-min)/(max-min)

负向指标:(max-x)/(max-min)

其中max为样本数据的最大值,min为样本数据的最小值。这种方法有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

R语言实现

# 标准化处理

min.max.norm <- function(x){

((x-min(x))/(max(x)-min(x)))

} #正向指标

max.min.norm <- function(x){

((max(x)-x)/(max(x)-min(x)))

} #负向指标

data_1 <- apply(data[,-c(3,4)],2,min.max.norm) #正向指标处理

data_2 <- apply(data[,c(3,4)],2,max.min.norm) #负向指标处理

#注意array只能用在二维及以上

data_t <- cbind(data_1,data_2)

使用apply函数apply(mat, 2, function(x)x/(mean(x)))

测试运行结果:

>ma <- matrix(c(1:4, 1, 6:8), nrow = 2)

>ma

[,1] [,2] [,3] [,4]

[1,]1317

[2,]2468

>apply(ma, 2, function(x)x/(mean(x)))

[,1] [,2] [,3] [,4]

[1,] 0.6666667 0.8571429 0.2857143 0.9333333

[2,] 1.3333333 1.1428571 1.7142857 1.0666667

apply函数参数帮助。

apply(X, MARGIN, FUN, ...)

Arguments

X

an array, including a matrix.

MARGIN

a vector giving the subscripts which the function will be applied over. E.g., for a matrix 1 indicates rows, 2 indicates columns, c(1, 2) indicates rows and columns. Where X has named dimnames, it can be a character vector selecting dimension names.

FUN

the function to be applied: see ‘Details’. In the case of functions like +, %*%, etc., the function name must be backquoted or quoted.

...

optional arguments to FUN.