F-мера для предупреждений парковки

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

Условие

На въездах и выездах парковки торгового центра камера отмечает события, которые могут требовать проверки оператором. После проверки для каждого события известен правильный признак тревоги: 1, если тревога действительно требовалась, и 0 иначе.

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

Требуется вычислить F-меру с параметром beta = 2. Пусть TP — число событий, для которых и правильный признак, и прогноз равны 1; FP — число событий с прогнозом 1 и правильным признаком 0; FN — число событий с прогнозом 0 и правильным признаком 1. Тогда

F_2 = 5 * TP / (5 * TP + 4 * FN + FP).

Если знаменатель формулы равен нулю, значение F-меры считается равным 0. При совпадении идентификаторов в двух таблицах записи относятся к одному и тому же событию. Внутри каждой таблицы одинаковые идентификаторы не встречаются, а наборы идентификаторов в таблицах совпадают.

Формат ввода

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

В следующих n строках записаны результаты ручной проверки в формате:

event_id actual_alert

где event_id — идентификатор события, а actual_alert равен 0 или 1.

В следующих m строках записаны прогнозы системы в формате:

event_id predicted_alert

где event_id — идентификатор события, а predicted_alert равен 0 или 1.

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

Выведите значение F-меры с beta = 2 ровно с тремя знаками после десятичной точки.

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

Ограничения

1 <= n = m <= 2000.

Общее число строк двух таблиц не превосходит 4000.

Длина event_id составляет от 1 до 16 символов. Идентификатор состоит только из строчных латинских букв, цифр и символа -.

actual_alert и predicted_alert принадлежат множеству {0, 1}.

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

Куда дальше