【发布时间】:2017-05-09 19:04:42
【问题描述】:
我只是在测试 h2o,因为我听说过关于它的好消息。到目前为止,我一直在使用以下代码:
library(h2o)
h2o.removeAll() # Clean up. Just in case H2O was already running
h2o.init(nthreads = -1, max_mem_size="22G") # Start an H2O cluster with all threads available
train <- read.csv("TRAIN")
test <- read.csv("TEST")
target <- as.factor(train$target)
feature_names <- names(train)[1:(ncol(train)-1)]
train_h2o <- as.h2o(train)
test_h2o <- as.h2o(test)
prob <- test[, "id", drop = FALSE]
model_glm <- h2o.glm(x = feature_names, y = "target", training_frame = train_h2o)
h2o.performance(model_glm)
pred_glm <- predict(model_glm, newdata = test_h2o)
相关部分实际上是最后一行,我收到以下错误:
DistributedException from localhost/127.0.0.1:54321, caused by java.lang.ArrayIndexOutOfBoundsException
DistributedException from localhost/127.0.0.1:54321, caused by java.lang.ArrayIndexOutOfBoundsException
at water.MRTask.getResult(MRTask.java:478)
at water.MRTask.getResult(MRTask.java:486)
at water.MRTask.doAll(MRTask.java:390)
at water.MRTask.doAll(MRTask.java:396)
at hex.glm.GLMModel.predictScoreImpl(GLMModel.java:1198)
at hex.Model.score(Model.java:1030)
at water.api.ModelMetricsHandler$1.compute2(ModelMetricsHandler.java:345)
at water.H2O$H2OCountedCompleter.compute(H2O.java:1241)
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)
Caused by: java.lang.ArrayIndexOutOfBoundsException
以前有人遇到过这种情况吗?我可能会错过任何简单的解决方案吗?提前致谢。
【问题讨论】:
-
训练和测试数据集中的列名是否完全相同?如果没有,你会得到一个错误。
-
@PhilC 是的,没错,就是列名中的小错字。在发布之前应该更仔细地检查一下。
-
嘿@PhilC 你介意把你的回复写成答案,这样这个问题就可以结束了吗?如果没有,我很乐意,但我想你可能更喜欢自己写。
-
仅供参考,我刚刚打开了一张 JIRA 票证以创建一条信息更丰富的错误消息:0xdata.atlassian.net/browse/PUBDEV-4418