POJO编译失败(Algo:GBM,H2o-Version 3.8.1.3,Javac:1.8.0_45,Mac OSX 10.11.3 / Fedora 23)

时间:2016-03-17 11:46:15

标签: javac pojo h2o

我尝试在本地编译用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?感谢您的回复!

2 个答案:

答案 0 :(得分:0)

解决:问题是POJO类名显然必须是一个有效的java类名;不允许使用纯数字名称。更改型号名称可以解决问题。

答案 1 :(得分:0)

[这不是对这个问题的直接回答,但希望对找到这个问题的任何人有用的指针...]

自从提出这个问题以来,H2O还增加了导出MOJO并将其用于预测的功能。

H2O POJO是模型的代码表示,H2O MOJO是模型的数据表示。

MOJO可以与POJO一样使用,并且不需要编译MOJO(而是解释它们)。这对于非常大的树模型尤其有用,在这些模型中,尝试编译它们会在千兆字节的代码大小范围内遇到各种技术挑战。因此,在许多情况下,解决编译问题的最佳方法是根本不进行编译。

H2O POJO和MOJO的在线文档可在此处找到:

我希望人们觉得这个(延迟的)答案很有帮助。