• 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"
    )

     

  • 相关阅读:
    Python初学者第十天 集合、十六进制
    Python初学者第九天 字符串、列表、字典练习
    Python初学者第八天 元组和字典
    Python初学者第七天 字符串及简单操作
    Python初学者第六天 列表操作练习
    Python初学者第五天 列表及简单操作
    Python初学者第四天 二进制运转换
    Python初学者第三天 运算符、while循环
    Python初学者第二天 用户输入和注释
    Python初学者第一天 Python安装及第一个Python程序
  • 原文地址:https://www.cnblogs.com/sydnia/p/7359975.html
Copyright © 2020-2023  润新知