Macro-F1 жанров фильмов
Условие
Онлайн-кинотеатр проверяет модель, которая определяет жанр фильма. Для каждого фильма известен истинный жанр и результат работы модели.
Входные данные состоят из двух таблиц. Первая таблица содержит истинные жанры, вторая — предсказания модели. Строки таблиц могут идти в разном порядке, поэтому сведения о фильме необходимо сопоставлять по идентификатору film_id.
Возможны три жанра: drama, comedy, documentary. Значение - во второй таблице означает, что модель не выдала предсказание. Такое значение не является жанром: оно увеличивает число ложных отрицаний истинного жанра, но не увеличивает число ложных срабатываний никакого жанра.
Для каждого жанра вычисляется F1-мера: F1 = 2 * TP / (2 * TP + FP + FN), где TP — число верных предсказаний этого жанра, FP — число фильмов, ошибочно предсказанных как этот жанр, а FN — число фильмов этого истинного жанра, не предсказанных как этот жанр. Если знаменатель равен нулю, F1 этого жанра считается равной 0. Требуется вывести macro-F1 — среднее арифметическое F1 для трёх жанров.
При равенстве значений F1 у нескольких жанров никакой один жанр не выбирается: в macro-F1 входят значения всех трёх жанров.
Формат ввода
В первой строке дано целое число n — число фильмов.
В следующих n строках дана первая таблица: film_id true_genre, где film_id — идентификатор фильма, а true_genre — его истинный жанр.
В следующих n строках дана вторая таблица: film_id predicted_genre, где film_id — идентификатор фильма, а predicted_genre — жанр, предсказанный моделью, либо -.
Каждый идентификатор из первой таблицы встречается во второй таблице ровно один раз.
Формат вывода
Выведите одно число — значение macro-F1, записанное ровно с тремя знаками после десятичной точки.
Ограничения
1 <= n <= 4000.
1 <= film_id <= 10^9.
Идентификаторы фильмов внутри каждой таблицы попарно различны.
Длина каждого жанрового значения составляет от 1 до 11 символов.
Истинный жанр равен одному из значений drama, comedy, documentary.
Предсказанный жанр равен одному из значений drama, comedy, documentary, -.
Решить задачу с автопроверкой на Python →
Куда дальше
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами
- БВИ и льготы при поступлении — какой диплом что даёт и сколько лет он действует
- Перечневые олимпиады по информатике — олимпиады перечня Минобрнауки, их уровни и что нужно к диплому