如何在 H2O 随机森林或其他二元分类器中指定正类?

den*_*son 0 python classification h2o

我正在使用 Python 在 H2O 中构建二进制分类模型。我的 'y' 值是 'ok' 和 'bad'。我需要使用 ok = negative class = 0 和 bad = positive class = 1 来计算指标。但是,我看不到在 H2O 中设置它的任何方法。例如,这里是预测和混淆矩阵的输出:

confusion matrix
        bad    ok  Error              Rate
  bad  3859   631 0.1405    (631.0/4490.0)
   ok   477  1069 0.3085    (477.0/1546.0)
Total  4336  1700 0.1836   (1108.0/6036.0)


>>> predictions.head(10)
  predict       bad        ok
0     bad  0.100604  0.899396
1     bad  0.100604  0.899396
2     bad  0.112232  0.887768
3      ok  0.068917  0.931083
4      ok  0.089706  0.910294
5      ok  0.089706  0.910294
6      ok  0.089706  0.910294
7     bad  0.126182  0.873818
8     bad  0.126182  0.873818
9      ok  0.092306  0.907694
Run Code Online (Sandbox Code Playgroud)

H2O 似乎根据标签之间的字母顺序任意决定。如果我将标签更改为“ok”和“sad”,这就是我得到的:

confusion matrix
         ok   sad  Error             Rate
   ok   798   732 0.4784   (732.0/1530.0)
  sad   211  4381 0.0459   (211.0/4592.0)
Total  1009  5113 0.1540   (943.0/6122.0)


>>> predictions.head(10)
  predict        ok       sad
0     sad  0.215206  0.784794
1     sad  0.211073  0.788927
2     sad  0.211073  0.788927
3      ok  0.236190  0.763810
4      ok  0.241641  0.758359
5      ok  0.241641  0.758359
6      ok  0.236099  0.763901
7     sad  0.162072  0.837928
8     sad  0.162072  0.837928
9     sad  0.206146  0.793854
Run Code Online (Sandbox Code Playgroud)

必须有一种方法来以编程方式设置哪个标签是正类,哪个是负类?

小智 5

如果df是您的 H2O 框架,df['y'] = df['y'].relevel('ok')则应将“确定”设置为 0 级。请参阅http://docs.h2o.ai/h2o/latest-stable/h2o-py/docs/frame.html#h2o.frame.H2OFrame.relevel