совет по использованию dplyr :: do vs purrr: map, tidy :: nest, для прогнозов
Я только что наткнулся на пакет purrr, и я думаю, что это немного помогло бы мне с точки зрения того, что я хочу сделать - я просто не могу собрать его вместе.
Я думаю, что это будет сделано после публикации, но будет рассмотрен случай общего использования, я думаю, что многие другие сталкиваются с такой надеждой, что это также им пригодится.
Вот к чему я стремлюсь:
Из одного большого набора данных запустите несколько моделей в каждой из разных подгрупп.Сделайте эти модели легкодоступными, чтобы я мог их проверить - для коэффициентов, точности и т. Д.Из этого сохраненного списка моделей для каждой из различных групп можно применить соответствующую модель к соответствующей группе наборов тестов.grouping_vals = c("cyl", "vs")
library(purrr)
library(dplyr)
set.seed(1)
train=mtcars
noise = sample(1:5,32, replace=TRUE)
test = mtcars %>% mutate( hp = hp * noise) # just so dataset isn't identical
models = train %>%
group_by_(grouping_vals) %>%
do(linear_model1 = lm(mpg ~hp, data=.),
linear_model2 = lm(mpg ~., data=.)
)
Я дошел до этого далеко, но я не знаю, как «сопоставить» соответствующие модели с "тестовое заданиеmsgstr "набор данных для соответствующих сгруппированных значений.Теперь я также могу пытаться получить остатки от обучения linear_model1 или linear_model2 с данными обучения для соответствующих групп.остатки модели $ linear_model1 [[2]] $ покажут мне остатки для 2-й группировки модели1. Я просто не знаю, как переместить все остатки моделей $ linear_model1 $ в набор данных поезда.
Насколько я понимаю, функция nid () tidyr делает то же самое, что и при создании моделей do ().
models_with_nest = train %>%
group_by_(grouping_vals) %>%
nest() %>%
mutate( linear_model2 = purrr::map(data, ~lm(mpg~., data=.)),
linear_model1 = purrr::map(data, ~lm(mpg~ hp+disp, data=.))
)
Опять же, просто найдите способ легко «отобразить» эти остатки / прогнозы обучения на набор обучающих данных и применить, а затем применить соответствующую модель к невидимому тестовому набору данных, подобному тому, который я создал выше.
Я надеюсь, что это не сбивает с толку, так как я вижу много обещаний здесь, я просто не могу понять, как это собрать.
Я полагаю, что это задача, которую тонна людей хотела бы выполнить более «автоматизированным» способом, но вместо этого это то, что люди делают очень медленно и шаг за шагом.