我想使用mlr3软件包创建的模型对以前未知的新数据进行预测。我通过使用AutoTuner功能训练了模型。
我阅读了mlr3书的“ 3.4.1.4预测”一章,但是该解决方案对于我想使用全新数据的示例没有用。
library("mlr3")
library("paradox")
library("mlr3learners")
library("mlr3tuning")
library("data.table")
set.seed(1)
x1 = 1:100
x2 = 2 * x1
y = x1^2 - x2 + rnorm(100)
data = data.table(
x1 = x1,
x2 = x2,
y = y
)
newdata = data.table(x1 = 101:150, x2 = 2 * 101:150)
task = TaskRegr$new("task", backend = data, target = "y")
lrn_xgb = mlr_learners$get("regr.xgboost")
ps = ParamSet$new(
params = list(
ParamInt$new(id = "max_depth", lower = 4, upper = 10)
))
at = AutoTuner$new(learner = lrn_xgb,
resampling = rsmp("cv", folds = 2),
measures = msr("regr.rmse"),
tune_ps = ps,
terminator = term("evals", n_evals = 1),
tuner = tnr("random_search"))
resampling_outer = rsmp("cv", folds = 2)
rr = resample(task = task, learner = at, resampling = resampling_outer)
at$train(task)
at$predict_newdata(task, newdata)
会话信息:
R version 3.6.1 (2019-07-05)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 8.1 x64 (build 9600)
Matrix products: default
attached base packages:
[1] stats graphics grDevices utils datasets methods
[7] base
other attached packages:
[1] mlr3learners_0.1.3 mlr3tuning_0.1.0 data.table_1.12.2
[4] paradox_0.1.0 mlr3_0.1.3
loaded via a namespace (and not attached):
[1] lgr_0.3.3 lattice_0.20-38 mlr3misc_0.1.4
[4] digest_0.6.21 crayon_1.3.4 grid_3.6.1
[7] R6_2.4.0 backports_1.1.4 magrittr_1.5
[10] stringi_1.4.3 uuid_0.1-2 Matrix_1.2-17
[13] checkmate_1.9.4 xgboost_0.90.0.2 tools_3.6.1
[16] compiler_3.6.1 Metrics_0.1.4
答案 0 :(得分:0)
您需要训练所选的学习者(如您在评论中指出的那样),然后使用predict_newdata()
:
at$train(task)
at$predict_newdata(task, newdata)