Разделение фрейма данных для изучения дерева решений с использованием стратифицированной выборки - PullRequest
1 голос
/ 20 марта 2020

Я хотел бы создать обучающую и тестовую выборку с использованием стратифицированной выборки. Я попытался осмотреться, но все пакеты, которые я нашел, возвращают фрейм данных вместо выражения. Пакет дерева, который я использую для построения дерева, требует, чтобы подмножество было задано как выражение.

Пример кода:

library(tree)
library(ISLR)
library(dplyr)

Carseats <- Carseats %>% mutate(High = factor(ifelse(Sales <= 8, "No", "Yes")))

set.seed(2)
train_sample <- sample(nrow(Carseats), nrow(Carseats) * 0.7)
carseats_test <- Carseats[-train_sample,]

tree.carseats <- tree(High~ . -Sales, Carseats, subset = train_sample)

Можно ли изменить приведенный выше код так, чтобы выборка была сделано с использованием стратификации?

1 Ответ

0 голосов
/ 20 марта 2020

Вы можете сделать:

library(tree)
library(ISLR)
library(dplyr)

Carseats <- Carseats %>% mutate(High = factor(ifelse(Sales <= 8, "No", "Yes")))

mean(Carseats$High == "Yes")
[1] 0.41

train_sample <- Carseats %>%
tibble::rownames_to_column() %>% 
group_by(High) %>%
sample_n(0.7*n()) %>%
mutate(rowname = as.numeric(rowname)) %>%
pull(rowname) 

carseats_test <- Carseats[-train_sample,]
mean(carseats_test$High == "Yes")
[1] 0.4132231

tree.carseats <- tree(High~ . -Sales, Carseats, subset = train_sample)
...