#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. Первая версия довольно громоздка. Придерживайтесь второго.