2014-05-11 2 views
0

mydata에서 2673 개의 관측치와 23 개의 변수가있는 교육 및 테스트 데이터를 만들고 싶습니다. 그러나 훈련 데이터를 단순히 빼는 것만으로 테스트 세트를 만들 수는 없습니다. 나는 다음을 실행하면 훈련 및 테스트 데이터 세트 만들기 R

dim(mydata) 
## [1] 2673 23 
set.seed(1) 
train = mydata[sample(1:nrow(mydata), 1000, replace=FALSE), ] 
dim(train) 
## [1] 1000 23 

, 나는 19 경고를 얻었고, 그 결과는 20,062 관측이 : 내가 잘못 뭐하는 거지

test = mydata[!train, ] 
## There were 19 warnings (use warnings() to see them) 
dim(test) 
## [1] 20062 23 

를?

+0

관련 항목 http://stackoverflow.com/q/5963269/54964 –

답변

4

가능한 솔루션은 샘플링 된 인덱스를 별도의 명명 된 벡터에 저장하는 것입니다. data.frame 's이 (가) row.names 속성이 고유 한 값으로 구성해야한다는 것을 알고 또한

train_idx <- sample(1:nrow(mydata),1000,replace=FALSE) 
train <- mydata[train_idx,] # select all these rows 
test <- mydata[-train_idx,] # select all but these rows 

, 당신은 또한 예를 들어, 설정할 수 있습니다 microbenchmark() 의해 측정

test <- mydata[!(row.names(mydata) %in% row.names(train)), ] 

하지만 제 용액에 mydata <- data.frame(a=1:100000, b=rep(letters, len=100000)) 배 느리다.

+0

고마워요! 'train_idx'를 만들기 전에 seed를 설정해야합니다. – PMa

+0

재현 가능한 결과를 얻으려면'sample()'전에'set.seed (some_number)'를 호출하십시오. 그게 중요하지 않다면 시드를 그대로 두십시오 (시스템 시간과 다른 정보에 따라 자동으로 설정됩니다). – gagolews

관련 문제