我在R中使用H2O(版本3.14)构建了一个GLM模型。请注意,训练数据包含整数,还有许多NA,我使用MeanImputation来处理它们。
glm <- h2o.glm(
training_frame = train.truth,
x=getColNames(train.truth),
y="isFemale",
family = "binomial",
missing_values_handling = "MeanImputation",
seed = 1000000)
然后我使用验证数据集来查看perf,而Precision对我来说很好看:
h2o.performance(glm, newdata=valid.truth)%>% h2o.confusionMatrix()
Confusion Matrix (vertical: actual; across: predicted) for max f1 @ threshold = 0.529384526696015:
0 1 Error Rate
0 41962 300 0.007099 =300/42262
1 863 13460 0.060253 =863/14323
Totals 42825 13760 0.020553 =1163/56585
然后我将模型保存为MOJO:
h2o.download_mojo(glm, path="models/mojo", get_genmodel_jar=TRUE)
我将验证DF导出到CSV文件:
dt.valid <- data.table(as.data.frame(valid.truth))
write.table(dt.valid, row.names = F, na="", file="models/test.csv")
我尝试使用保存的mojo通过在我的Linux shell上运行来执行相同的预测:
java -cp h2o-genmodel.jar hex.genmodel.tools.PredictCsv \
--mojo GLM_model_R_1511161743608_15 \
--decimal --mojo GLM_model_R_1511161743608_15.zip \
--input ../test.csv --output output.csv
然而,结果很可怕。所有记录都被预测为0,这与我在R中运行模型时得到的记录非常不同。
我被困在这一天,但我无法弄清楚出了什么问题。任何人都可以对此有所了解吗?