使用 H2O R 模型进行预测时使用 optim 包时出错
Error using optim package while predicting with an H2O R model
在R中,有一个非常方便的优化包,叫做"optim"。你可以给它一个函数,一个初始位置,有时还有其他控制输入,它会优化你的函数。
我正在尝试通过以下方式将其与 h2o.ai 模型一起使用:
make_model <- h2o.stuff(x,y,training, parameters)
f <- function(x,make_model){ h2o.predict() %>% ...}
f2 <- function(x){f(x,make_model)}
optim(start, function=f2, ...)
当我 运行 测试用例时它们起作用:
f2(start_point)
f2(known_values)
这些 return 正是我要找的。他们 return 他们应该有的价值观。
当我尝试 运行 函数的优化时,它不想工作,并给出了这个错误:
java.lang.IllegalArgumentException: Test/Validation dataset has no columns in common with the training set
java.lang.IllegalArgumentException: Test/Validation dataset has no columns in common with the training set
at hex.Model.adaptTestForTrain(Model.java:1383)
at hex.Model.adaptTestForTrain(Model.java:1222)
at hex.Model.score(Model.java:1509)
at water.api.ModelMetricsHandler.compute2(ModelMetricsHandler.java:396)
at water.H2O$H2OCountedCompleter.compute(H2O.java:1557)
at jsr166y.CountedCompleter.exec(CountedCompleter.java:468)
at jsr166y.ForkJoinTask.doExec(ForkJoinTask.java:263)
at jsr166y.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:974)
at jsr166y.ForkJoinPool.runWorker(ForkJoinPool.java:1477)
at jsr166y.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)
Error: java.lang.IllegalArgumentException: Test/Validation dataset has no columns in common with the training set
Called from: doTryCatch(return(expr), name, parentenv, handler)
现在在我看来,基于 C 的 optim 和基于 Java 的 h2o.ai 不想一起玩。函数有点非线性,但是对已知点的求值直接正确
有没有一种不改变架构就能解决这个问题的好方法?
我认为这个错误与使用 optim 包没有任何关系。这是来自 H2O 包的错误,只是 "Test/Validation dataset has no columns in common with the training set"
.
所以你应该检查你的测试集的列名(或者你传递给 h2o.predict()
函数的任何数据集)以确保它看起来像你的训练集(所有训练列应该出现在测试集)。如果你能 post 一个可重现的例子,我可能会更有帮助。
在R中,有一个非常方便的优化包,叫做"optim"。你可以给它一个函数,一个初始位置,有时还有其他控制输入,它会优化你的函数。
我正在尝试通过以下方式将其与 h2o.ai 模型一起使用:
make_model <- h2o.stuff(x,y,training, parameters)
f <- function(x,make_model){ h2o.predict() %>% ...}
f2 <- function(x){f(x,make_model)}
optim(start, function=f2, ...)
当我 运行 测试用例时它们起作用:
f2(start_point)
f2(known_values)
这些 return 正是我要找的。他们 return 他们应该有的价值观。
当我尝试 运行 函数的优化时,它不想工作,并给出了这个错误:
java.lang.IllegalArgumentException: Test/Validation dataset has no columns in common with the training set
java.lang.IllegalArgumentException: Test/Validation dataset has no columns in common with the training set
at hex.Model.adaptTestForTrain(Model.java:1383)
at hex.Model.adaptTestForTrain(Model.java:1222)
at hex.Model.score(Model.java:1509)
at water.api.ModelMetricsHandler.compute2(ModelMetricsHandler.java:396)
at water.H2O$H2OCountedCompleter.compute(H2O.java:1557)
at jsr166y.CountedCompleter.exec(CountedCompleter.java:468)
at jsr166y.ForkJoinTask.doExec(ForkJoinTask.java:263)
at jsr166y.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:974)
at jsr166y.ForkJoinPool.runWorker(ForkJoinPool.java:1477)
at jsr166y.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)
Error: java.lang.IllegalArgumentException: Test/Validation dataset has no columns in common with the training set
Called from: doTryCatch(return(expr), name, parentenv, handler)
现在在我看来,基于 C 的 optim 和基于 Java 的 h2o.ai 不想一起玩。函数有点非线性,但是对已知点的求值直接正确
有没有一种不改变架构就能解决这个问题的好方法?
我认为这个错误与使用 optim 包没有任何关系。这是来自 H2O 包的错误,只是 "Test/Validation dataset has no columns in common with the training set"
.
所以你应该检查你的测试集的列名(或者你传递给 h2o.predict()
函数的任何数据集)以确保它看起来像你的训练集(所有训练列应该出现在测试集)。如果你能 post 一个可重现的例子,我可能会更有帮助。