R中,数据标准化方法

标准化方法(Normalization Method)
数据的标准化是将数据按比例缩放,使之落入一个小的特定区间。由于指标体系的各个指标度量单位是不同的,为了能够将指标参与评价计算,需要对指标进行规范化处理,通过函数变换将其数值映射到某个数值区间。一般常用的有以下几种方法。
(1) 最小-最大规范化对原始数据进行线性变换。假定MaxA与MinA分别表示属性A的最大与最小值。最小最大规范化通过计算将属性A的值映射到区间[a, b]上的v。一般来说,将最小-最大规范化在用于信用指标数据上,常用的有以下两种函数形式:
变换到[0,1],

变换到[-1,1],

(2) z-score规范化也称零-均值规范化。变换范围有正有负。

(3) 十进制规范化。十进制规范化变换后使最大值的绝对值小于1。

(4)Box-Cox变换。线性回归时,当残差项不满足正态分布或等方差假定时,可对被解释变量做Box-Cox变换。

(5)对数函数转换,表达式如下:
y=log10(x)
说明:以10为底的对数函数转换。
(6)反余切函数转换,表达式如下:
y=atan(x)*2/PI

## 数据变换:对数据进行规范化
# (1)最大值-最小值规范化
install.packages("caret")
library(caret)
# 将Loan数据中的loan_amnt转化到[0,1]
help(preProcess)
#先指定处理方法
trans = preProcess(select(Loan, loan_amnt), method = c("range"))
trans
#然后使用predict函数完成处理
transformed = predict(trans, select(Loan,loan_amnt))
head(transformed)
range(transformed)

# (2)标准化(x-mean(x))/var(x)
trans = preProcess(select(Loan, loan_amnt), method = c("center","scale"))
trans
transformed = predict(trans, select(Loan,loan_amnt))
head(transformed)
mean(transformed[[1]]);var(transformed[[1]])
# (3)十进制正规化
max(abs(loan$loan_amnt))
# (4)Box-Cox变换
install.packages("e1071")
library(e1071)
#计算偏度,发现是右偏
skewness(Loan$annual_inc,na.rm = T)
#选择Loan数据集中的数值型变量
Loan.num = select(Loan, loan_amnt,funded_amnt,funded_amnt_inv,installment,annual_inc,dti,total_pymnt)
# 对每列数值型变量都计算其偏度系数
apply(Loan.num,2,skewness,na.rm = T)
# 为了直方图显示效果,剔除年收入超过40万美元的客户
Loan.anin = Loan$annual_inc[-which(Loan$annual_inc>400000)]
library(caret)
# 使用样本数据估计λ,估计值为-0.1,但修正后的λ估计值为0
BoxCoxTrans(Loan$annual_inc,na.rm = T)
par(mfrow=c(1,2))
hist(Loan.anin,xlab="natural units of annual_inc", main="Histogram: Original Data")
# 估计的λ为0,使用log变换
hist(log(Loan$annual_inc),
xlab = "log units of annual_inc",
main = "Histogram: after log transformation"
)

时间: 2024-10-06 00:30:57

R中,数据标准化方法的相关文章

数据标准化方法及其Python代码实现

数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间.目前数据标准化方法有多种,归结起来可以分为直线型方法(如极值法.标准差法).折线型方法(如三折线法).曲线型方法(如半正态性分布).不同的标准化方法,对系统的评价结果会产生不同的影响,然而不幸的是,在数据标准化方法的选择上,还没有通用的法则可以遵循. 常见的方法有:min-max标准化(Min-max normalization),log函数转换,atan函数转换,z-score标准化(zero-mena n

R 中数据导入

R语言数据导入  数据导入 1.保存和加载R的数据(与R.data的交互:save()函数和load()函数) a <- 1:10 save(a, file = "data/dumData.Rdata")  #data文件为当前工作目录下的文件,必须存在 rm(a) load("data/dumData.Rdata") print(a) 2.导入和加载.csv文件(write.csv()函数和read.csv()函数) var1 <- 1:5 var2

R读写Excel文件中数据的方法

用R语言读写Excel的方法有很多,但每种方法都有让人头疼的地方,比如xlsx包的代码复杂,只支持Excel2007:RODBC不易理解,限制太多,程序不稳定,会出各种怪毛病.另存为csv格式的方法倒是比较通用比较稳定,但又存在操作麻烦,无法程序化处理多个文件的问题.提取xml也是个办法,但步骤太多代码太复杂,令人望而生畏.用剪贴板转换也不好,这同样需要人工参与,还不如存为csv. 相比之下,用gdata包来读取,配合WriteXLS写入Excel则可以很好的避开上述麻烦.这两个包都支持Exce

linux抓取top命令中数据的方法

top在linux中是一个非常直观的命令,可以清晰地看到各进程对资源的使用情况. ? 但是如果你想从top命令展示中提取某些数据出来,如果想当然地使用这句命令: top|grep xxx 就会被卡住,欲哭无泪. ? 我们不妨查一下top这个命令,看看是否有其他办法来把数据抓出来. ? 首先简单了解一下top这个命令. ? top是linux的一个性能分析工具,类似于windows的任务管理器.其最大特点有两个:动态.直观地显示进程占用资源情况. 执行top的时候,会在前台默认打开一个termin

删除表及删除表中数据的方法

本文介绍SQL Server中如何删除表,如何删除表中的数据.在删除表数据时有delete和truncate两种方法,delete和truncate有什么区别呢? SQL Server,我们现在基本上使用的最古老的版本应该是SQL Server 2000吧,应该没有更早的版本了吧?!从SQL Server 2000开始,到SQL Server 2005,2008,2012等,T-SQL的处理能力越来越强.今天我们就来说说如何使用T-SQL脚本来删除表,以及删除表中的数据. 删除表和删除表数据这是

筛选DataTable中数据的方法

当你从数据库里取出一些数据,然后要对数据进行整合,你很容易就会想到: 1 DataTable dt = new DataTable();//假设dt是由"SELECT C1,C2,C3 FROM T1"查询出来的结果 2 for (int i = 0; i < dt.Rows.Count; i++) 3 { 4 if (dt.Rows[i]["C1"].ToString() == "abc")//查询条件 5 { 6 //进行操作 7 }

R中数据的输入和数据的标注

数据的导入 默认情况下数据导入时,字符型变量将转化为因子.若不希望转化,可设置 stringsAsFactors=FALSE 从带分隔符的文本文件中导入数据 read.table() file -->  带分隔符的ASVII文本文件 header  -->  表面首行是否包含了变量名 sep  -->  指定分隔数据的分隔符 row.names  -->  指定一个或多个表示行标识符的变量 # 导入数据把结果存到数据框grade中 grades <- read.table(

[转] [机器学习] 常用数据标准化(正则化)的方法

数据正则化 目的:为了加快训练网络的收敛性,可以不进行归一化处理 源地址:http://blog.sina.com.cn/s/blog_8808cae20102vg53.html 而在多指标评价体系中,由于各评价指标的性质不同,通常具有不同的量纲和数量级.当各指标间的水平相差很大时,如果直接用原始指标值进行分析,就会突出数值较高的指标在综合分析中的作用,相对削弱数值水平较低指标的作用.因此,为了保证结果的可靠性,需要对原始指标数据进行标准化处理. 目前数据标准化方法有多种,归结起来可以分为直线型

清空SQL Server数据库中所有表数据的方法

其实删除数据库中数据的方法并不复杂,为什么我还要多此一举呢,一是我这里介绍的是删除数据库的所有数据,因为数据之间可能形成相互约束关系,删除操作可能陷入死循环,二是这里使用了微软未正式公开的sp_MSForEachTable存储过程. 也许很多读者朋友都经历过这样的事情:要在开发数据库基础上清理一个空库,但由于对数据库结构缺乏整体了解,在删除一个表的记录时,删除不了,因为可能有外键约束,一个常见的数据库结构是一个主表,一个子表,这种情况下一般都得先删除子表记录,再删除主表记录. 说道删除数据记录,