對數據集做標准化處理的幾種方法——基於R語言


數據集——iris(R語言自帶鳶尾花包)

一、scale函數

scale函數默認的是對制定數據做均值為0,標准差為1的標准化。它的兩個參數center和scale:

1)center和scale默認為真,即T

2)center為真表示數據中心化

3)scale為真表示數據標准化

中心化:所謂數據的中心化是指數據集中的各項數據減去數據集的均值。

標准化:標准化就是數據在中心化之后再除以標准差。變換后值域為[0,1]。

# 標准化與中心化
data(iris) # 讀入數據
head(iris) #查看數據

Standard0<-scale(iris[1:4])
head(Standard0)
Standard1<-scale(iris[1:4],center=T)
head(Standard1)
Standard2<-scale(iris[1:4],center=F,scale=T)
head(Standard2)

二、用自建函數法

test <- iris
normalize <- function(x) {
return((x - min(x)) / (max(x) - min(x)))
}

test_n <- as.data.frame(lapply(test[1:4], normalize))
head(test_n)

三、caret包preProcess函數

preProcess函數可以對特征變量施行很多操作,包括中心化和標准化。preProcess函數每次操作都估計所需要的參數,並且由predict.preProcess 應用於指定的數據集。

相比自建函數,非數值型的變量是被允許的,但是將被忽略故夠保留數據集右邊的非數值變量。

standard4 <- preProcess(iris, method = 'range')  #化為0-1之間(x-min(x))/(max(x)-min(x)),其實range 的意義尚未理解
iris_s<- predict(standard4, iris)
iris_s

 

 參考資料:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM