Матрица ошибок отзывов приложения

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

Условие

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

Автоматическая модель получает те же отзывы и выдаёт предсказания. Иногда модель не смогла обработать отзыв. В таблице предсказаний это обозначается символом -.

Необходимо сопоставить строки двух таблиц по идентификатору отзыва и вывести четыре числа матрицы ошибок только для отзывов с предсказанием 0 или 1: TP, FP, FN, TN. Здесь TP — число отзывов с истинной меткой 1 и предсказанием 1, FP — с истинной меткой 0 и предсказанием 1, FN — с истинной меткой 1 и предсказанием 0, TN — с истинной меткой 0 и предсказанием 0. Формально требуется вывести количества пар (истинная метка, предсказание): (1, 1), (0, 1), (1, 0), (0, 0) в этом порядке.

Строки с предсказанием - в матрицу ошибок не включаются. Идентификатор каждого отзыва встречается ровно один раз в каждой из двух таблиц. При равенстве меток в обеих таблицах строка учитывается по тем же правилам, что и любая другая строка. Округление не применяется, так как все выводимые значения целые.

Формат ввода

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

В следующих n строках дана таблица ручной разметки: идентификатор отзыва review_id и истинная метка actual_label через пробел.

В следующих n строках дана таблица предсказаний модели: идентификатор отзыва review_id и предсказание predicted_label через пробел. Порядок строк во второй таблице может отличаться от порядка строк в первой таблице.

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

Выведите четыре целых числа TP FP FN TN через пробел.

Ограничения

1 ≤ n ≤ 1000.

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

actual_label принимает значение 0 или 1.

predicted_label принимает значение 0, 1 или -.

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

Гарантируется, что хотя бы у одного отзыва предсказание не равно -.

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

Куда дальше