Разделение данных на обучение и тестирование - PullRequest
0 голосов
/ 18 ноября 2018

Я разделил данные на тренировку и тестирование, но для этого нужны полные данные, а не размер, который я тоже установил - я установил размер 250, но все равно получаю полный около 900000

set.seed(321)       
SplitIndex <- sample(x = c("Train", "Test"),size = 250,replace = TRUE, prob = c(0.75,0.25))

TrainData <- loanfilev2[SplitIndex == "Train", ]
TestData <- loanfilev2[SplitIndex == "Test", ]

table(TrainData$loan_status)
table(TestData$loan_status)

set.seed(27)

KnnModel <- train(form = loan_status ~., data = TrainData, method = 'knn')  
KnnModel

plot(KnnModel)

В принципе, я хочу, чтобы TrainData составляла около 150 наблюдений, но вместо этого я получаю полные 900000 наблюдений

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018

Это должно дать вам то, что вы хотите.

set.seed(321)  # set the seed to get reproducable results 
train_index <- sample(seq_len(nrow(loanfilev2)), size = 150) # train data indices

trainData<- loanfilev2[train_index, ] # train dataset
testData <- loanfilev2[-train_index, ] # test dataset

Вы также можете установить размер в процентах от набора данных

sample_size <- floor(0.10 * nrow(loanfilev2)) # or whatever percent you desire
0 голосов
/ 18 ноября 2018

Причина, по которой ваше решение не сработало, как минимум, двоякая: (1) неверный индекс поднабора и (2) размер маски не равен количеству записей (т. Е. Строк) в исходном кадре данных (если вы пытаетесьдля подмножества кадра данных, используя маску, меньшую, чем количество записей, R просто переработает маску).

В вызове, который создает маску подмножества с именем SplitIndex, попробуйте заменить c("Train", "Test") на c(TRUE, FALSE),

SplitIndex <- sample(x = c(TRUE, FALSE), size = nrow(loanfilev2), replace = TRUE, prob = c(0.75,0.25))

У вас будет вектор размером, равным количеству строк в вашем кадре данных, заполненный TRUE (75% от значений) и FALSE (25% от значений).Таким образом, вам даже не нужно проверять равенство строк "Train" или "Test";вы просто создадите подмножество данных, где строки соответствуют значению TRUE в маске.Следовательно, остальная часть кода становится:

loanfilev2[SplitIndex, ] #Train
loanfilev2[!SplitIndex, ] #Test
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...