Проверка переобучения модели заявок
Условие
В службе поддержки провайдера модель оценивает вероятность того, что заявка связана с аварией сети. Для части заявок известны правильные ответы и баллы модели.
Запись с типом TRAIN относится к обучающей выборке, а с типом CONTROL — к контрольной. Балл score от 0 до 100 считается вероятностью аварии в процентах. Значение -1 означает пропуск: балл модели для такой заявки не сохранился.
В конце входа задан ЗАПРОС: порог классификации t и допустимый разрыв d. Заявка с сохранённым баллом не меньше t получает предсказание 1, иначе — предсказание 0. Для каждой из двух выборок требуется вычислить точность модели и определить, есть ли переобучение.
Точность Accuracy — это доля верных предсказаний среди заявок с сохранённым баллом: Accuracy = correct / total, где correct — число верных предсказаний, а total — число заявок с баллом, отличным от -1. В выводе используется точность в процентах: 100 * Accuracy.
Если в некоторой выборке нет заявок с сохранённым баллом, её точность считается равной 0.00. Модель считается переобученной, если точность на обучающей выборке минус точность на контрольной выборке не меньше d процентных пунктов. Если разность точностей ровно равна d, модель считается переобученной. При равенстве балла score и порога t предсказание равно 1.
Формат ввода
В первой строке дано целое число n — число заявок.
В следующих n строках даны через пробел три значения: split, actual, score.
split— строкаTRAINилиCONTROL;actual— правильный класс заявки:0или1;score— балл модели от0до100либо-1при пропуске.
В последней строке даны два целых числа t и d — порог классификации и допустимый разрыв точностей в процентных пунктах.
Формат вывода
Выведите через пробел слово ПЕРЕОБУЧЕНИЕ, если модель считается переобученной, иначе слово НОРМА, затем точность на обучающей и контрольной выборках в процентах.
Каждую точность выведите ровно с двумя знаками после точки. Значение округляется до ближайшей сотой, а при ровно одинаковом расстоянии до двух сотых выбирается большая сотая.
Ограничения
1 <= n <= 2000;- длина строки
splitсоставляет от5до7символов; actualравно0или1;scoreравно-1либо целому числу от0до100;0 <= t <= 100;0 <= d <= 100;- во входе могут встречаться повторяющиеся заявки, пропуски баллов и выборки без сохранённых баллов.
Решить задачу с автопроверкой на Python →
Куда дальше
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели
- Перечневые олимпиады: что это и что дают — весь перечень Минобрнауки: уровни, срок диплома, разрезы по предметам и классам
- Олимпиада по информатике: с чего начать — два мира олимпиад — ВсОШ и перечневые: этапы, задания и на каком языке писать