數據集——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