2017-03-27 9 views
0

Rの各反復後にtestDataとtrainDataを保存したい場合、どうすればできますか?RでK倍になると、各反復後にどのように保存しますか?

#Create 10 equally size folds 
folds <- cut(seq(1,nrow(cre_card)),breaks=10,labels=FALSE) 

#Perform 10 fold cross validation 
for(i in 1:10){ 
    #Segement your data by fold using the which() function 
    testIndexes <- which(folds==i,arr.ind=TRUE) 
    testData <- cre_card[testIndexes, ] 
    trainData <- cre_card[-testIndexes, ] 
    #Use the test and train data partitions however you desire... 

} 

答えて

2

リストを使用してすべてのセットを保存することをお勧めします。

次のコードを使用できます。

folds <- cut(seq(1,nrow(cre_card)),breaks=10,labels=FALSE) 
test_sets <- list() 
train_sets <- list() 
#Perform 10 fold cross validation 
for(i in 1:10){ 
    #Segement your data by fold using the which() function 
    testIndexes <- which(folds==i,arr.ind=TRUE) 
    testData <- cre_card[testIndexes, ] 
    trainData <- cre_card[-testIndexes, ] 
    #Use the test and train data partitions however you desire... 
    test_sets <- c(test_sets,list(testData)) 
    train_sets <- c(train_sets,list(trainData)) 
} 

次にあなたがtest_sets[[i]]train_sets[[i]]で電車/テストデータセットのあなたのi番目のペアを使用することができます。

0

次の操作を行うことができmodelrパッケージを使用する:あなたが行うことができますモデルを訓練するために

# A tibble: 10 × 3 
      train   test .id 
      <list>   <list> <chr> 
1 <S3: resample> <S3: resample> 01 
2 <S3: resample> <S3: resample> 02 
... 

require(modelr) 
dat <- cars 
kcv <- crossv_kfold(dat, k = 10) 

kcvは次のようになります

models <- lapply(kcv$train, function(x) lm(dist ~ speed, data = x)) 

modelrrmse機能を使用してください。次のようにRMSEを計算する:

unlist(Map(rmse, models, kcv$test)) 

P.S:この例は?modelr::crossv_kfold

に基づいています
関連する問題