我是靠谱客的博主 甜蜜高跟鞋,最近开发中收集的这篇文章主要介绍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)

有些地方说归一化,有些地方说标准化,万能的CSDN,谁能告诉我归一化和标准化的区别?

2019年补充,

归一化一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。
z-score适用于属性A的最大值和最小值未知的情况(此时归一化已经不合适了,哈哈),或有超出取值范围的离群数据的情况(此时归一化的效果也不好了,哈哈);该种方式要求原始数据的分布可以近似为高斯分布,否则归一化的效果会变得很糟糕【这一条我也不是很确认】。

最后

以上就是甜蜜高跟鞋为你收集整理的R语言标准化(归一化)之scale()函数、sweep()函数的全部内容,希望文章能够帮你解决R语言标准化(归一化)之scale()函数、sweep()函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部