【机器学习】R语言标准化(归一化)之scale()函数、sweep()函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ARPOSPF/article/details/84979299

R语言标准化(归一化)之scale()函数、sweep()函数


#数据集
x<-cbind(c(1,2,3,4),c(5,5,10,20),c(3,6,9,12))

#自己写标准化
x_min_temp<-apply(x,2,min) 
x_min<-matrix(rep(x_min_temp,4),byrow=TRUE,ncol=3)        #需要输入行数和列数
abs(x-x_min)                                              #当前值减去均值
x_extreme_temp<-apply(x,2,max)-apply(x,2,min)
x_extreme<-matrix(rep(x_extreme_temp,4),byrow=TRUE,ncol=3)#需要输入行数和列数
abs(x-x_min)/x_extreme

#sweep函数
center <- sweep(x, 2, apply(x, 2, min),'-')     #在列的方向上减去最小值,不加‘-’也行
R <- apply(x, 2, max) - apply(x,2,min)          #算出极差,即列上的最大值-最小值
x_star<- sweep(center, 2, R, "/")               #把减去均值后的矩阵在列的方向上除以极差向量
#sweep函数更简洁、易懂,且不需要输入行数和列数,二者性能也差不多

#sweep再举一个例子
m<-matrix(c(1:9),byrow=TRUE,nrow=3)
#第一行都加1,第二行都加4,第三行都加7
sweep(m, 1, c(1,4,7), "+")  

#scale函数,这个比较简单,不多说
scale(x, center = TRUE, scale = TRUE)

猜你喜欢

转载自blog.csdn.net/ARPOSPF/article/details/84979299
今日推荐