在h2o(python)中的多个测试集上的ROC

时间:2017-03-23 16:04:35

标签: h2o

我有一个用例,我认为它很简单,但找不到用h2o做的方法。我以为你可能知道。

我想训练我的模型一次,然后在几个不同的测试集上评估它的ROC(例如验证集和测试集,但实际上我有2个以上),而不必重新训练模型。我现在知道这样做的方法需要每次都重新训练模型:

train, valid, test = fr.split_frame([0.2, 0.25], seed=1234)
rf_v1 = H2ORandomForestEstimator( ... )
rf_v1.train(features, var_y, training_frame=train, validation_frame=valid)
roc = rf_v1.roc(valid=1)

rf_v1.train(features, var_y, training_frame=train, validation_frame=test) # training again with the same training set - can I avoid this?
roc2 = rf_v1.roc(valid=1)

我也可以使用model_performance(),它给出了一些没有重新训练的任意测试集的指标,但不是ROC。有没有办法让ROC退出H2OModelMetrics对象?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用h2o流检查模型性能。只需转到:http://localhost:54321/flow/index.html(如果您更改了默认端口,请在链接中更改它);输入" getModel" rf_v1""在一个单元格中,它将显示流程中多个单元格中模型的所有测量值。它非常方便。 如果您使用的是Python,则可以在IDE中找到性能:

rf_perf1 = rf_v1.model_performance(test)

然后像这样打印ROC:

print (rf_perf1.auc())

答案 1 :(得分:0)

是的,间接的。从H2OModelMetrics对象获取TPR和FPR:

out = rf_v1.model_performance(test)
fprs = out.fprs
tprs = out.tprs
roc = zip(fprs, tprs)

(顺便说一下,我的H2ORandomForestEstimator对象似乎根本没有roc()方法,因此我不能100%确定此输出的格式完全相同。我正在使用h2o版本3.10.4.7。)