2016-04-07 11 views
2

トレーニングデータを70%のトレーニング、15%のテスト、15%の検証に分割したいと考えました。私はキャレットパッケージのcreateDataPartition()機能を使用しています。私は、次のデータパーティションをトレーニング、テスト、および検証に分割する - Rで分割する

train <- read.csv("Train.csv") 
test <- read.csv("Test.csv") 

split=0.70 
trainIndex <- createDataPartition(train$age, p=split, list=FALSE) 
data_train <- train[ trainIndex,] 
data_test <- train[-trainIndex,] 

のようにそれを分割しています以下のH2oアプローチのようなcreateDataPartition()を使用して、トレーニング、テストと検証に分割する方法はありますか?

data.hex <- h2o.importFile("Train.csv") 
splits <- h2o.splitFrame(data.hex, c(0.7,0.15), destination_frames = c("train","valid","test")) 
train.hex <- splits[[1]] 
valid.hex <- splits[[2]] 
test.hex <- splits[[3]] 
+1

は、2つの分割操作を行い、(1)テストおよび検証にトレーニング及びTEMP及び(2)温度に元のデータ。 – Gregor

+0

重複:http://stackoverflow.com/questions/36068963/r-how-to-split-a-data-frame-into-training-validation-and-test-sets – stackoverflowuser2010

+0

2017年8月:現在はrsample 'package in R https://topepo.github.io/rsample/ – alexpghayes

答えて

2

基地Rでsample()関数を用いる方法が

splitSample <- sample(1:3, size=nrow(data.hex), prob=c(0.7,0.15,0.15), replace = TRUE) 
train.hex <- data.hex[splitSample==1,] 
valid.hex <- data.hex[splitSample==2,] 
test.hex <- data.hex[splitSample==3,] 
+0

'> nrow(data.hex) [1] 25192 > nrow(train.hex) [1] 8398 > valid.hex < -> [1] 8397 > test.hex < - data.hex [splitSample == 3] > nrow(test.hex) [ 1] 8397'ですが、それらの違いは1だけです。これは正しいですか? – Mahsolid

+1

size引数を忘れてしまった。 – lmo

+0

これは(疑似)ランダムなので、サイズはほぼ0.7,0.15,0.15になりますが、正確には一致しないことに注意してください。レプリケーションの目的のために、最初の行の上にシードを設定したいでしょう: 'set.seed(ある整数)' – lmo

関連する問題