久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

R語言交叉驗證的實現代碼

這篇文章主要介紹了R語言交叉驗證的實現,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

k-折交叉驗證

k-折交叉驗證(K-fold cross-validation)是交叉驗證方法里一種。它是指將樣本集分為k份,其中k-1份作為訓練數據集,而另外的1份作為驗證數據集。用驗證集來驗證所得分類器或者模型的錯誤率。一般需要循環k次,直到所有k份數據全部被選擇一遍為止。

有關交叉驗證的介紹可參考作者另一博文:
http://blog.csdn.net/yawei_liu1688/article/details/79138202

R語言實現

K折交叉驗證,隨機分組

數據打折-數據分組自編譯函數:進行交叉檢驗首先要對數據分組,數據分組要符合隨機且平均的原則


library(plyr)
CVgroup <- function(k,datasize,seed){
 cvlist <- list()
 set.seed(seed)
 n <- rep(1:k,ceiling(datasize/k))[1:datasize]  #將數據分成K份,并生成的完成數據集n
 temp <- sample(n,datasize)  #把n打亂
 x <- 1:k
 dataseq <- 1:datasize
 cvlist <- lapply(x,function(x) dataseq[temp==x]) #dataseq中隨機生成k個隨機有序數據列
 return(cvlist)
}

k <- 10
datasize <- nrow(iris)
cvlist <- CVgroup(k = k,datasize = datasize,seed = 1206)
cvlist

結果輸出示例:

輸出示例

K折交叉驗證
第一種方法:循環語句寫驗證


data <- iris
pred <- data.frame()  #存儲預測結果
library(plyr)
library(randomForest)
m <- seq(60,500,by = 20) #如果數據量大盡量間隔大點,間隔過小沒有實際意義
for(j in m){  #j指的是隨機森林的數量
 progress.bar <- create_progress_bar("text") #plyr包中的create_progress_bar函數創建一個進度條,
 progress.bar$init(k)  #設置上面的任務數,幾折就是幾個任務
 for (i in 1:k){
  train <- data[-cvlist[[i]],] #剛才通過cvgroup生成的函數
  test <- data[cvlist[[i]],]
  model <-randomForest(Sepal.Length~.,data = train,ntree = j)  #建模,ntree=j 指的樹數
  prediction <- predict(model,subset(test,select = -Sepal.Length))  #預測
  randomtree <- rep(j,length(prediction))  #隨機森林樹的數量
  kcross <- rep(i,length(prediction))  #i是第幾次循環交叉,共K次
  temp <- data.frame(cbind(subset(test,select = Sepal.Length),prediction,randomtree,kcross))#真實值、預測值、隨機森林樹數、預測組編號捆綁在一起組成新的數據框tenp
  pred <- rbind(pred,temp)  #temp按行和pred合并
  print(paste("隨機森林:",j)) #循環至樹數j的隨機森林模型
  progress.bar$step() #輸出進度條。告知完成了這個任務的百分之幾
 }
}

結果輸出示例1:

輸出示例

結果輸出示例2:指標分別為真實值、預測值、隨機森林樹數、預測組編號

這里寫圖片描述

第二種方法:apply家族lapply
當測試的循環數較多或單任務耗時較多時,apply家族優勢特別明顯


data <- iris
library(plyr)
library(randomForest)
k = 10
j <- seq(10,10000,by = 20)  #j樹的數量
i <- 1:k  #K折
i <- rep(i,times = length(j))
j <- rep(j,each = k)  #多少折,each多少
x <- cbind(i,j)
cvtest <- function(i,j){
 train <- data[-cvlist[[i]],]
 test <- data[cvlist[[i]],]
 model <- randomForest(Sepal.Length~.,data = train,ntree = j)
 prediction <- predict(model,subset(test,select = -Sepal.Length))
 temp <- data.frame(cbind(subset(test,select = Sepal.Length),prediction))
}

結果輸出示例3:指標分別為真實值、預測值、隨機森林樹數、預測組編號

這里寫圖片描述


system.time(pred <- mdply(x,cvtest))  

這里寫圖片描述

mdyly在plyr包中:輸出三個指標:“用戶”“系統”“流逝”。其中“流逝”應該是這段代碼從開始到結束的真正時間。對于一般單線程的程序來說這個時間近似于用戶時間和系統時間之和,可以看出共運行了1386秒。

到此這篇關于R語言交叉驗證的文章就介紹到這了,更多相關R語言交叉驗證的實現代碼內容請搜索html5模板網以前的文章希望大家以后多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

主站蜘蛛池模板: 香蕉大人久久国产成人av | 久久久久亚洲精品国产 | av国产精品 | h视频免费观看 | 久久久国产一区二区 | 在线观看h视频 | 久久影院一区 | 日日人人 | 国产一区二区成人 | 在线精品一区二区三区 | aaaaaaa片毛片免费观看 | 国产精品久久久久久久岛一牛影视 | 国产福利在线播放麻豆 | 热久色 | 综合九九 | 亚洲手机视频在线 | 国产精品久久久久久久久 | 亚洲精品www| 中文字幕亚洲精品 | 精品国产一区二区三区日日嗨 | 久久久精品在线 | 欧美区日韩区 | 日韩av高清在线 | a爱视频 | 国产98色在线 | 日韩 | 国产精品黄视频 | 日韩看片| 欧美精品一二三 | 色资源av| 成人av电影网 | 91精品久久久 | 日韩精品免费在线观看 | 国产美女自拍视频 | 亚洲成人午夜电影 | 成人欧美一区二区三区1314 | 蜜月aⅴ国产精品 | 婷婷福利视频导航 | 久久精品福利 | 国产视频精品在线观看 | 成人免费观看视频 | 精精精精xxxx免费视频 |