Macro-F1 по заявкам выбранного региона

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

Условие

Провайдер распределяет заявки в службу поддержки по трём категориям: billing — вопросы оплаты, connection — проблемы с подключением, equipment — неисправности оборудования. Для каждой заявки известны фактическая категория, категория, предсказанная классификатором, и регион клиента.

Необходимо оценить работу классификатора только для региона из запроса, указанного в последней строке входа. Для каждой категории рассматривается задача «эта категория против всех остальных». Для категории c обозначим через TP_c число заявок региона, у которых фактическая и предсказанная категории равны c; через FP_c — число заявок, предсказанных как c, но фактически относящихся к другой категории; через FN_c — число заявок категории c, предсказанных как другая категория.

F1-мера категории вычисляется по формуле F1_c = 2 * TP_c / (2 * TP_c + FP_c + FN_c). Если знаменатель этой формулы равен нулю, значение F1_c считается равным нулю. Требуется вывести macro-F1: (F1_billing + F1_connection + F1_equipment) / 3.

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

Формат ввода

В первой строке дано целое число n — количество заявок.

В следующих n строках содержатся три строки через пробел: фактическая категория заявки, категория, предсказанная классификатором, и регион клиента.

В последней строке содержится строка region_query — регион из запроса. Macro-F1 вычисляется только по заявкам этого региона.

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

Выведите одно число — macro-F1 для региона из запроса с тремя знаками после десятичной точки.

Ограничения

1 <= n <= 4000.

Фактическая и предсказанная категории имеют одно из значений: billing, connection, equipment.

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

Регион из последней строки встречается хотя бы в одной из n заявок.

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

Куда дальше