Метрики поиска аномалий счётчиков
Условие
В доме работает система, отмечающая подозрительные показания счётчиков электричества. В первой таблице хранится результат ручной проверки: метка 1 означает аномальное показание, метка 0 означает обычное. Во второй таблице находится предсказание системы для тех же счётчиков.
Строки двух таблиц могут идти в разном порядке, поэтому их нужно сопоставить по идентификатору счётчика. Необходимо вычислить accuracy и сбалансированную accuracy предсказаний.
Пусть TP — число строк с истинной меткой 1 и предсказанием 1, TN — число строк с истинной меткой 0 и предсказанием 0, P — число истинных меток 1, N — число истинных меток 0. Тогда accuracy = (TP + TN) / n, а balanced_accuracy = (TP / P + TN / N) / 2. Если P = 0, значение TP / P считается равным 0. Если N = 0, значение TN / N считается равным 0. При равенстве предсказанной и истинной метки строка засчитывается как верно классифицированная.
Формат ввода
В первой строке дано целое число n — число счётчиков.
В следующих n строках дана первая таблица: идентификатор счётчика meter_id и истинная метка actual через пробел.
В следующих n строках дана вторая таблица: идентификатор счётчика meter_id и предсказанная метка predicted через пробел.
Идентификаторы в каждой таблице не повторяются. Множества идентификаторов в обеих таблицах совпадают.
Формат вывода
Выведите два числа через пробел: сначала accuracy, затем balanced_accuracy.
Каждое число выведите с двумя знаками после десятичной точки. Округление выполняется до ближайшего значения с двумя знаками после точки, а при ровно половинном случае — в большую сторону.
Ограничения
1 ≤ n ≤ 2000.
Длина каждого идентификатора meter_id составляет от 1 до 20 символов. Идентификатор состоит из строчных латинских букв, цифр и символа -.
actual и predicted — целые числа 0 или 1.
Пропусков в таблицах нет.
Решить задачу с автопроверкой на Python →
Куда дальше
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели
- С нуля до олимпиады: маршрут — сколько занимает язык, какие приёмы нужны и к какому этапу это ведёт
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами