【问题标题】:H2OGeneralizedLinearEstimator() - Prediction ErrorH2OGeneralizedLinearEstimator() - 预测误差
【发布时间】:2017-07-08 02:06:16
【问题描述】:

我正在尝试使用 H2OGeneralizedLinearEstimator 函数预测 Kaggle 组合中的测试时间。模型在第 3 行正常训练,指标都合理。然而,当我进入预测步骤时,尽管测试数据帧与训练数据帧匹配,但我得到了一个错误。

以前有人见过这个错误吗?

 h2o_glm = H2OGeneralizedLinearEstimator()

 h2o_glm.train(training_frame=train_h2o,y='y')

 h2o_glm_predictions = h2o_glm.predict(test_data=test_h2o).as_data_frame()

 test_pred = pd.read_csv('test.csv')[['ID']]
 test_pred['y'] = h2o_glm_predictions
 test_pred.to_csv('h2o_glm_predictions.csv',index=False)

glm 模型构建进度:|█████████████████████████████████████████ ██████| 100%

glm prediction progress: | (failed)

OSError Traceback (most recent call last) in () 3 h2o_glm.train(training_frame=train_h2o,y='y') 4 ----> 5 h2o_glm_predictions = h2o_glm.predict(test_data=test_h2o).as_data_frame() 6 7 test_pred = pd.read_csv('test.csv')[['ID']]

/Applications/anaconda/lib/python3.6/site-packages/h2o/model/model_base.py in predict(self, test_data) 130 j = H2OJob(h2o.api("POST /4/Predictions/models/%s/frames/%s" % (self.model_id, test_data.frame_id)), 131 self._model_json["algo"] + " prediction") --> 132 j.poll() 133 return h2o.get_frame(j.dest_key) 134

/Applications/anaconda/lib/python3.6/site-packages/h2o/job.py in poll(self) 71 if (isinstance(self.job, dict)) and ("stacktrace" in list(self.job)): 72 raise EnvironmentError("Job with key {} failed with an exception: {}\nstacktrace: " ---> 73 "\n{}".format(self.job_key, self.exception, self.job["stacktrace"])) 74 else: 75 raise EnvironmentError("Job with key %s failed with an exception: %s" % (self.job_key, self.exception))

OSError: 带有密钥的作业 $03017f00000132d4ffffffff$_868312f4c32f683871930a1145c1476a 失败 有一个例外:来自/127.0.0.1:54321的DistributedException:'null', 由 java.lang.ArrayIndexOutOfBoundsException 堆栈跟踪引起: 来自 /127.0.0.1:54321 的 DistributedException:'null',由 java.lang.ArrayIndexOutOfBoundsException 在 water.MRTask.getResult(MRTask.java:478) 在 water.MRTask.getResult(MRTask.java:486) 在 water.MRTask.doAll(MRTask.java:390) 在 water.MRTask.doAll(MRTask.java:396) 在 hex.glm.GLMModel.predictScoreImpl(GLMModel.java:1215) 在 hex.Model.score(Model.java:1077) 在 water.api.ModelMetricsHandler$1.compute2(ModelMetricsHandler.java:351) 在 water.H2O$H2OCountedCompleter.compute(H2O.java:1349) 在 jsr166y.CountedCompleter.exec(CountedCompleter.java:468) 在 jsr166y.ForkJoinTask.doExec(ForkJoinTask.java:263) 在 jsr166y.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:974) 在 jsr166y.ForkJoinPool.runWorker(ForkJoinPool.java:1477) 在 jsr166y.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104) 引起 作者:java.lang.ArrayIndexOutOfBoundsException

【问题讨论】:

  • 这看起来与我在此处发布的错误相同:stackoverflow.com/questions/44901421/… 作为一种解决方法,请尝试添加假响应列(例如,将常量列“y”添加到 test_data)
  • 这立即奏效了 - 谢谢!希望这个错误在以后的更新中得到修复。谢谢
  • 你能告诉我这是哪个版本的 H2O,以便我可以在错误报告中跟踪它吗?谢谢。
  • 它是 H2O 版本 3.12.0.1。当我尝试使用 h2o xgboost 估计器执行网格搜索时,我也遇到了 H2o 3.12.0.1 中的 xgboost 问题。这是一个已知问题吗?谢谢

标签: java python glm h2o


【解决方案1】:

总结上面的 cmets,目前的解决方案是在test_data 框架中添加一个响应列(如果不存在则使用假数据)。但是,这是一个应该修复的错误。 JIRA 是here

【讨论】:

  • 我可以确认这个错误也存在于 R(h2o 3.10.3.3 和 3.12.0.1)中,并且它似乎不是 GLM 特定的,而是与显式的一个热编码有关 -请参阅我在 cmets 中链接到的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-29
  • 1970-01-01
  • 1970-01-01
  • 2019-10-05
  • 1970-01-01
相关资源
最近更新 更多