欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

R語言交叉驗證的實現(xiàn)代碼

 更新時間:2021年03月11日 09:03:01   作者:bigdata老司機(jī)  
這篇文章主要介紹了R語言交叉驗證的實現(xiàn),本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

k-折交叉驗證

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

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

R語言實現(xiàn)

K折交叉驗證,隨機(jī)分組

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

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

結(jié)果輸出示例:

輸出示例

K折交叉驗證
第一種方法:循環(huán)語句寫驗證

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

結(jié)果輸出示例1:

輸出示例

結(jié)果輸出示例2:指標(biāo)分別為真實值、預(yù)測值、隨機(jī)森林樹數(shù)、預(yù)測組編號

這里寫圖片描述

第二種方法:apply家族lapply
當(dāng)測試的循環(huán)數(shù)較多或單任務(wù)耗時較多時,apply家族優(yōu)勢特別明顯

data <- iris
library(plyr)
library(randomForest)
k = 10
j <- seq(10,10000,by = 20)  #j樹的數(shù)量
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))
}

結(jié)果輸出示例3:指標(biāo)分別為真實值、預(yù)測值、隨機(jī)森林樹數(shù)、預(yù)測組編號

這里寫圖片描述

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

這里寫圖片描述

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

到此這篇關(guān)于R語言交叉驗證的文章就介紹到這了,更多相關(guān)R語言交叉驗證的實現(xiàn)代碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • R語言-如何循環(huán)讀取excel并保存為RData

    R語言-如何循環(huán)讀取excel并保存為RData

    這篇文章主要介紹了R語言循環(huán)讀取excel并保存為RData的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • R語言的特點總結(jié)

    R語言的特點總結(jié)

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于R語言的特點總結(jié)內(nèi)容,有需要的朋友們可以學(xué)習(xí)參考下。
    2021-03-03
  • R語言 實現(xiàn)list類型數(shù)據(jù)轉(zhuǎn)換

    R語言 實現(xiàn)list類型數(shù)據(jù)轉(zhuǎn)換

    這篇文章主要介紹了R語言 實現(xiàn)list類型數(shù)據(jù)轉(zhuǎn)換,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • R語言繪制line?plot線圖示例詳解

    R語言繪制line?plot線圖示例詳解

    這篇文章主要為大家介紹了R語言繪制line?plot線圖的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-02-02
  • R語言-在一張圖上顯示多條線的實現(xiàn)

    R語言-在一張圖上顯示多條線的實現(xiàn)

    這篇文章主要介紹了R語言-在一張圖上顯示多條線的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • R包ggtreeExtra繪制進(jìn)化樹

    R包ggtreeExtra繪制進(jìn)化樹

    這篇文章主要為大家介紹了R包ggtreeExtra繪制進(jìn)化樹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • R語言最簡單的向量賦值方法示例

    R語言最簡單的向量賦值方法示例

    這篇文章主要給大家介紹了關(guān)于R語言最簡單的向量賦值方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Rcpp入門R代碼提速方法過程

    Rcpp入門R代碼提速方法過程

    這篇文章主要為大家介紹了Rcpp入門如何讓R代碼更快的提速方法過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • R語言rmarkdown使用安裝教程

    R語言rmarkdown使用安裝教程

    markdown是文本處理的標(biāo)記語言,它的功能類似于word,但與word中各種排版、字體設(shè)置不同,markdown能使我們更專注于碼字這件事,用標(biāo)記語法來代替常見的排版格式,Rmarkdown基于R中的文本處理格式,這篇文章主要介紹了R語言rmarkdown使用安裝教程,需要的朋友可以參考下
    2024-02-02
  • R語言繪制雙坐標(biāo)圖的案例詳解

    R語言繪制雙坐標(biāo)圖的案例詳解

    這篇文章主要介紹了R語言繪制雙坐標(biāo)圖,下面就跟大家介紹plotrix包中的twoord.plot()函數(shù)和twoord.stackplot()函數(shù),它們可以實現(xiàn)雙坐標(biāo)軸圖形的繪制,需要的朋友可以參考下
    2023-01-01

最新評論