R: как делать прогнозы с помощью gamboost

#r #machine-learning #prediction #boosting

Вопрос:

 library(mboost)
### a simple two-dimensional example: cars data
cars.gb <- gamboost(dist ~ speed, data = cars, dfbase = 4,
                    control = boost_control(mstop = 50))
set.seed(1)
cars_new <- cars   rnorm(nrow(cars))
> predict(cars.gb, newdata = cars_new$speed)
Error in check_newdata(newdata, blg, mf) : 
  ‘newdata’ must contain all predictor variables, which were used to specify the model.
 

Я подгоняю модель, используя пример на help(gamboost) странице. Я хочу использовать эту модель для прогнозирования на новом наборе данных cars_new , но столкнулся с вышеуказанной ошибкой. Как я могу это исправить?

Комментарии:

1. Вы определили dist ~ speed в своей gamboost функции. Разве предсказание не должно быть predict(cars.gb, newdata = cars_new) таким ?

2. По моему опыту, для этого newdata варианта требуется только предиктор (т. Е. скорость), а не как предиктор, так и результат (скорость и отклонение).

3. В этом случае попробуйте cars_new["speed"] вместо cars_new$speed этого . Первая версия сохраняет структуру data.frame, последняя возвращает вектор.

Ответ №1:

predict функция ищет вызываемую переменную speed , но когда вы подмножествуете ее $ знаком, у нее больше нет имени.

итак, этот вариант прогнозирования работает;

 predict(cars.gb, newdata = data.frame(speed = cars_new$speed))
 

или сохраните исходное имя как есть;

 predict(cars.gb, newdata = cars_new['speed'])
 

Комментарии:

1. Первая версия довольно громоздка. Придерживайтесь второго.