Метрики проверки чеков

тема: Метрики классификации · уровень: средний

Условие

Система проверки чеков супермаркета оценивает вероятность того, что чек требует дополнительной проверки. Для каждого чека известен истинный результат проверки, а во второй таблице хранится оценка риска системы.

Оценка риска от 0 до 1000 сравнивается с порогом T. Чек считается положительным прогнозом, если его оценка риска не меньше T. Если оценка риска равна порогу T, чек считается положительным прогнозом.

Чеки с оценкой -1 не были обработаны системой и не участвуют в подсчёте метрик. Требуется вычислить чувствительность и специфичность на обработанных чеках. Чувствительность равна TP / (TP + FN), а специфичность равна TN / (TN + FP), где TP — число правильно найденных чеков, требующих проверки, FN — число пропущенных таких чеков, TN — число правильно признанных безопасными чеков, FP — число безопасных чеков, ошибочно отправленных на проверку. Если знаменатель метрики равен нулю, значение этой метрики считается равным 0.

Формат ввода

В первой строке заданы три целых числа n, m и T: число строк в таблице результатов проверки, число строк в таблице оценок риска и порог классификации.

В следующих n строках задана первая таблица: идентификатор чека receipt_id и число actual. Значение actual равно 1, если чек действительно требует проверки, и 0 в противном случае.

В следующих m строках задана вторая таблица: идентификатор чека receipt_id и целая оценка риска risk. Значение risk = -1 означает пропуск оценки.

Идентификаторы внутри каждой таблицы не повторяются. Наборы идентификаторов в двух таблицах совпадают.

Формат вывода

Выведите через пробел чувствительность и специфичность в указанном порядке.

Каждое значение выводится с двумя знаками после десятичной точки. Значение округляется до ближайшей сотой; если оно находится ровно посередине между двумя сотыми, выбирается вариант с чётной последней цифрой.

Ограничения

1 ≤ n = m ≤ 2000.

0 ≤ T ≤ 1000.

actual равно 0 или 1.

risk равно -1 или целому числу от 0 до 1000.

Длина идентификатора receipt_id составляет от 1 до 20 символов. Идентификатор состоит из латинских букв, цифр и символа _.

Решить задачу с автопроверкой на Python →

Куда дальше