旨在与一起使用。如果您想编译和运行MOJO,需要执行以下操作:
首先,假设您从GBM创建了一个MOJO:
library(h2o)
h2o.init(nthreads=-1)
path = "http://h2o-public-test-data.s3.amazonaws.com/smalldata/prostate/prostate.csv"
h2o_df = h2o.importFile(path)
h2o_df$RACE = as.factor(h2o_df$RACE)
model = h2o.gbm(y="CAPSULE",
x=c("AGE", "RACE", "PSA", "GLEASON"),
training_frame=h2o_df,
distribution="bernoulli",
ntrees=100,
max_depth=4,
learn_rate=0.1)
然后将 MOJO 和生成的 h2o-genmodel.jar 文件下载到一个新的实验文件夹中。请注意,h2o-genmodel.jar 文件是支持评分的库,包含所需的读取器和解释器。当 MOJO 模型部署到生产环境时,该文件是必需的。
modelfile = model.download_mojo(path="~/experiment/", get_genmodel_jar=True)
print("Model saved to " + modelfile)
Model saved to /Users/user/GBM_model_R_1475248925871_74.zip"
那么您需要打开一个新的终端窗口,并切换到实验目录,那里有MOJO文件的.zip和.jar文件。
$ cd experiment
接下来,您需要在实验文件夹中创建一个名为main.java的新文件(例如,使用“vim main.java”),作为主程序。请包含以下内容。请注意,该文件引用了上面使用R创建的GBM模型。
import java.io.*;
import hex.genmodel.easy.RowData;
import hex.genmodel.easy.EasyPredictModelWrapper;
import hex.genmodel.easy.prediction.*;
import hex.genmodel.MojoModel;
public class main {
public static void main(String[] args) throws Exception {
EasyPredictModelWrapper model = new EasyPredictModelWrapper(MojoModel.load("GBM_model_R_1475248925871_74.zip"));
RowData row = new RowData();
row.put("AGE", "68");
row.put("RACE", "2");
row.put("DCAPS", "2");
row.put("VOL", "0");
row.put("GLEASON", "6");
BinomialModelPrediction p = model.predictBinomial(row);
System.out.println("Has penetrated the prostatic capsule (1=yes; 0=no): " + p.label);
System.out.print("Class probabilities: ");
for (int i = 0; i < p.classProbabilities.length; i++) {
if (i > 0) {
System.out.print(",");
}
System.out.print(p.classProbabilities[i]);
}
System.out.println("");
}
}
然后在第二个终端窗口中编译并运行,以显示预测概率。
$ javac -cp h2o-genmodel.jar -J-Xms2g -J-XX:MaxPermSize=128m main.java
$ java -cp .:h2o-genmodel.jar main
h2o.predict_json()
方法更像是标准纯Java MOJO / POJO方法的便利包装器。在这种情况下,您不需要运行H2O集群,而且可以将模型编译到更大的Java项目中。 - Erin LeDell