我尝试在本地编译用H2o 3.8.1.3生成的GBM预测模型的POJO;我按照POJO课程中的说明进行操作:
将h2o-genmodel.jar下载到以下文件夹中:
curl http://myh2oinstancesurl:myh2oinstancesport/3/h2o-genmodel.jar > h2o-genmodel.jar
将名为154的成功训练的GBM模型下载到以下文件夹中:
curl http://myh2oinstancesurl:myh2oinstancesport/3/Models/154/java > 154.java
使用Max OSX 10.11.3或Fedora 23下的javac 1.8.0_45编译文件夹中的源:
javac -cp h2o-genmodel.jar 154.java
结果是一堆编译错误:
154.java:24: error: <identifier> expected
public class 154 extends GenModel {
^
154.java:24: error: illegal start of type
public class 154 extends GenModel {
^
154.java:24: error: ';' expected
public class 154 extends GenModel {
^
154.java:25: error: illegal start of expression
public hex.ModelCategory getModelCategory() { return hex.ModelCategory.Binomial; }
^
154.java:25: error: ';' expected
public hex.ModelCategory getModelCategory() { return hex.ModelCategory.Binomial; }
^
154.java:27: error: illegal start of expression
public boolean isSupervised() { return true; }
^
154.java:27: error: ';' expected
public boolean isSupervised() { return true; }
^
154.java:28: error: illegal start of expression
public int nfeatures() { return 14; }
^
154.java:28: error: ';' expected
public int nfeatures() { return 14; }
^
154.java:29: error: illegal start of expression
public int nclasses() { return 2; }
^
...
100 errors
我的手术有问题吗?或者这是我的设置错误?有没有人目前可以编译GBM POJO?感谢您的回复!
答案 0 :(得分:0)
解决:问题是POJO类名显然必须是一个有效的java类名;不允许使用纯数字名称。更改型号名称可以解决问题。
答案 1 :(得分:0)
[这不是对这个问题的直接回答,但希望对找到这个问题的任何人有用的指针...]
自从提出这个问题以来,H2O还增加了导出MOJO并将其用于预测的功能。
H2O POJO是模型的代码表示,H2O MOJO是模型的数据表示。
MOJO可以与POJO一样使用,并且不需要编译MOJO(而是解释它们)。这对于非常大的树模型尤其有用,在这些模型中,尝试编译它们会在千兆字节的代码大小范围内遇到各种技术挑战。因此,在许多情况下,解决编译问题的最佳方法是根本不进行编译。
H2O POJO和MOJO的在线文档可在此处找到:
我希望人们觉得这个(延迟的)答案很有帮助。