Я ищу прочный способ разделения набора данных без использования функции sample()
и надеемся получить некоторую обратную связь.Data Partition in R
В самом деле, я бы в идеале хотел бы избавиться от от random
собственности, присущие использованию sample()
samp<-data.frame(qldat) # convert zoo time-series object to data.frame
ind <- sample(2,nrow(samp),replace = TRUE, prob=c(0.8,0.2)) # splitting
#data series between training and test sets
tsamp<- samp[ind==1,] # training dataset
vsamp<- samp[ind==2,] # test set
После некоторых исследований, я понял, что subset()
мог бы помочь , но это может быть связано с набором данных hard-coding
. По жесткого кодирования я имею в виду для 80:20 раскола (%) с помощью nrow(samp)
, это возможно подмножество данных из row=1
в row= 0.8 * nrow(samp)
, например, признание того, что это может быть не очень эффективным решением.
Я также попытался createDataPartition()
, но это не соответствует моим ожиданиям, так как samp
не имеет какие-либо categorical data
, на котором я мог бы опереться для раскола (например createDataPartition(y=samp$categoricaldata,p=0.8, list=FALSE
)
PS: Что мне нравится в ind<-
- это включение prob=c(0.8,0.2)
, поэтому срез сортируется автоматически. Следовательно, любая аналогичная идея без случайного расщепления tsamp
& & vsamp
будет очень признательна.
Лучшие,
Если вы не производите, как вы хотите определить, какая часть данных проходит обучение и тестирование? Вы всегда хотите сделать это в последовательности, в которой строки отображаются в данных? Что произойдет, если «четкий» раскол не может быть выполнен (например, проблемы 0,2 и 0,8 и 101 наблюдение). – Heroka
@Heroka: с помощью 'nrow()'. Если конкретный столбец проиндексирован, скажем, '[1:10]', тогда рассмотрим первый раскол из '[round (1 * 80%): 8]' для 'tsamp'. Надеюсь, поможет. – owner