h2o ValueError: нет метрики tpr

При попытке получить оценку отзыва с помощью, например,

rf_model.recall()

Я получаю сообщение об ошибке:

h2o ValueError: No metric tpr

Я могу получить другие показатели, такие как точность, AUC, точность и F1, но не могу вспомнить ... Вероятно, это ошибка.

Если я бегу:

from h2o.model.metrics_base import H2OBinomialModelMetrics as bmm
reporter = bmm(rf_model.metric)
rf_model.metric('recall')

Я получил:

Could not find exact threshold 0.0; using closest threshold found 0.0.

Что здесь происходит?

Я использую версию h2o 'h2o-3.15.0.3990'.

Я следил за учебником по h2o:

https://github.com/h2oai/h2o-tutorials/blob/master/training/h2o_algos/src/py/decision_tree_ensembles.ipynb

и, используя свой собственный набор данных, я получаю описанную выше ошибку.

Любая помощь?

Кроме того, как построить кривую точности / полноты с помощью H2O?

Спасибо


person EB88    schedule 12.08.2017    source источник
comment
Пожалуйста, не отправляйте сообщения через список рассылки. (StackOverflow - лучшее место для такого рода вопросов.)   -  person Darren Cook    schedule 14.08.2017


Ответы (1)


Начиная со второго вопроса, у Flow есть кривая точности / отзыва (и она интерактивна). Поток всегда работает на порту 54321 каждого узла, то есть http://127.0.0.1:54321, если вы используете h2o локально.

Я полагаю, что с вашими данными или моделью есть что-то интересное и что, когда вы посмотрите на кривую точности / отзыва, это станет ясно.

В R, если вы сделаете str(m) (где m - ваша модель), вы увидите все данные модели. m@training_metrics@metrics$thresholds_and_metric_scores$recall содержит номера отзыва для каждого порога.

Я пока не могу понять, как заглянуть внутрь объекта Python, но ваш вызов был правильным. В моем быстром тесте (набор данных iris с добавленным столбцом перечисления с двумя категориями):

m.metric("recall")

дал:

[[0.8160852636726422, 1.0]]

И если мне нужны все значения, это будет примерно так:

mDL.metric("recall",thresholds=[x/100.0 for x in range(1,100)])

давая:

Could not find exact threshold 0.01; using closest threshold found 0.010396965719556233.
Could not find exact threshold 0.02; using closest threshold found 0.016617060110009896.
...
Could not find exact threshold 0.92; using closest threshold found 0.9469528904679438.
Could not find exact threshold 0.93; using closest threshold found 0.9469528904679438.
Could not find exact threshold 0.94; using closest threshold found 0.9469528904679438.
Could not find exact threshold 0.95; using closest threshold found 0.9469528904679438.
Could not find exact threshold 0.96; using closest threshold found 0.9469528904679438.
Could not find exact threshold 0.97; using closest threshold found 0.9760293572153097.
Could not find exact threshold 0.98; using closest threshold found 0.9787491606489236.
Could not find exact threshold 0.99; using closest threshold found 0.9909817370067531.

[[0.01, 1.0],
 [0.02, 1.0],
 [0.03, 1.0],
 ...
 [0.87, 1.0],
 [0.88, 1.0],
 [0.89, 0.9850746268656716],
 [0.9, 0.9850746268656716],
 [0.91, 0.9850746268656716],
 [0.92, 0.9850746268656716],
 [0.93, 0.9850746268656716],
 [0.94, 0.9850746268656716],
 [0.95, 0.9850746268656716],
 [0.96, 0.9850746268656716],
 [0.97, 0.9701492537313433],
 [0.98, 0.9552238805970149],
 [0.99, 0.8955223880597015]]

(Я получаю такой необычный результат, поскольку он почти идеально изучил мой набор данных - я подозреваю, что именно это и произошло с вами?) (Я по глупости сделал свой двоичный столбец прямой функцией одного из входных столбцов, без шума!)

person Darren Cook    schedule 14.08.2017