Я последовал примеру «Множество моделей» из R из книги по науке о данных и сумел вывести список model_list с помощью сообщества (@Ronak).
Однако я хотел бы получить прогнозывне модели и избегайте повторений в моем коде, используя цикл for или функцию карты.
У меня есть существующий код, который в основном перечисляет каждое название модели и выполняет предсказания на наборе проверки.Я попытался сделать цикл for следующим образом, но безрезультатно:
Существующий набор данных выглядит следующим образом:
> model_fit
# A tibble: 10 x 16
Location data data_2018 model_lab model_temp model_dep
<fct> <list> <list> <list> <list> <list>
1 Location1 <tibble> <tibble [1~ <list [3~ <list [3]> <list [3]
2 Location2 <tibble> <tibble [1~ <list [3~ <list [3]> <list [3]
3 Location3 <tibble> <tibble [1~ <list [3~ <list [3]> <list [3]
4 Location4 <tibble> <tibble [1~ <list [3~ <list [3]> <list [3]
Attempted Code:
model_list <- dplyr :: select(model_fit,model_lab:model_volume)
pred_names <- c('labour_pred','temp_pred','depre_pred','supplies_pred','salary_pred','expense_pred','train_pred',
'travel_pred','outside_pred','utilities_pred','repair_pred','hours_pred','volume_pred')
for (c in seq_along(pred_names)) {
model_pred <- model_fit %>%
mutate(pred_names[c] = map2(data_2018,model_list[c], function(x, y)
map(seq_along(y), function(i)
if (i == 3) predict(y[[i]], n.trees = y[[i]]$n.trees)
else as.numeric(predict(y[[i]])))))
}
Existing Code:
model_pred <- model_fit %>%
mutate(pred_lab= map2(data_2018,model_lab, function(x, y)
map(seq_along(y), function(i)
if (i == 3) predict(y[[i]], n.trees = y[[i]]$n.trees)
else as.numeric(predict(y[[i]])))))
model_pred <- model_pred %>%
mutate(pred_temp= map2(data_2018,model_temp, function(x, y)
map(seq_along(y), function(i)
if (i == 3) predict(y[[i]], n.trees = y[[i]]$n.trees)
else as.numeric(predict(y[[i]])))))
model_pred <- model_pred %>%
mutate(pred_dep= map2(data_2018,model_dep, function(x, y)
map(seq_along(y), function(i)
if (i == 3) predict(y[[i]], n.trees = y[[i]]$n.trees)
else as.numeric(predict(y[[i]])))))
model_pred <- model_pred %>%
mutate(pred_supplies= map2(data_2018,model_supplies, function(x, y)
map(seq_along(y), function(i)
if (i == 3) predict(y[[i]], n.trees = y[[i]]$n.trees)
else as.numeric(predict(y[[i]])))))
model_pred <- model_pred %>%
mutate(pred_salary= map2(data_2018,model_salary, function(x, y)
map(seq_along(y), function(i)
if (i == 3) predict(y[[i]], n.trees = y[[i]]$n.trees)
else as.numeric(predict(y[[i]])))))
model_pred <- model_pred %>%
mutate(pred_expense= map2(data_2018,model_expense, function(x, y)
map(seq_along(y), function(i)
if (i == 3) predict(y[[i]], n.trees = y[[i]]$n.trees)
else as.numeric(predict(y[[i]])))))
model_pred <- model_pred %>%
mutate(pred_train= map2(data_2018,model_train, function(x, y)
map(seq_along(y), function(i)
if (i == 3) predict(y[[i]], n.trees = y[[i]]$n.trees)
else as.numeric(predict(y[[i]])))))
model_pred <- model_pred %>%
mutate(pred_travel= map2(data_2018,model_travel, function(x, y)
map(seq_along(y), function(i)
if (i == 3) predict(y[[i]], n.trees = y[[i]]$n.trees)
else as.numeric(predict(y[[i]])))))
model_pred <- model_pred %>%
mutate(pred_outside= map2(data_2018,model_outside, function(x, y)
map(seq_along(y), function(i)
if (i == 3) predict(y[[i]], n.trees = y[[i]]$n.trees)
else as.numeric(predict(y[[i]])))))
model_pred <- model_pred %>%
mutate(pred_utilities= map2(data_2018,model_utilities, function(x, y)
map(seq_along(y), function(i)
if (i == 3) predict(y[[i]], n.trees = y[[i]]$n.trees)
else as.numeric(predict(y[[i]])))))
model_pred <- model_pred %>%
mutate(pred_hours= map2(data_2018,model_hours, function(x, y)
map(seq_along(y), function(i)
if (i == 3) predict(y[[i]], n.trees = y[[i]]$n.trees)
else as.numeric(predict(y[[i]])))))
model_pred <- model_pred %>%
mutate(pred_volume= map2(data_2018,model_volume, function(x, y)
map(seq_along(y), function(i)
if (i == 3) predict(y[[i]], n.trees = y[[i]]$n.trees)
else as.numeric(predict(y[[i]])))))