R中,數據標準化方法

標準化方法(Normalization Method)
數據的標準化是將數據按比例縮放,使之落入一個小的特定區間。因爲指標體系的各個指標度量單位是不一樣的,爲了可以將指標參與評價計算,須要對指標進行規範化處理,經過函數變換將其數值映射到某個數值區間。通常經常使用的有如下幾種方法。
(1) 最小-最大規範化對原始數據進行線性變換。假定MaxA與MinA分別表示屬性A的最大與最小值。最小最大規範化經過計算將屬性A的值映射到區間[a, b]上的v。通常來講,將最小-最大規範化在用於信用指標數據上,經常使用的有如下兩種函數形式:
變換到[0,1],app

 

變換到[-1,1],函數

(2) z-score規範化也稱零-均值規範化。變換範圍有正有負。spa

(3) 十進制規範化。十進制規範化變換後使最大值的絕對值小於1。orm

(4)Box-Cox變換。線性迴歸時,當殘差項不知足正態分佈或等方差假定時,可對被解釋變量作Box-Cox變換。blog

(5)對數函數轉換,表達式以下:
y=log10(x)
說明:以10爲底的對數函數轉換。
(6)反餘切函數轉換,表達式以下:
y=atan(x)*2/PIit

## 數據變換:對數據進行規範化
# (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)io

# (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"
)form

相關文章
相關標籤/搜索