Утечка признака видимости отзыва

тема: Валидация и переобучение · уровень: продвинутый

Условие

Команда анализирует отзывы о мобильном приложении. Целевой признак recommend равен 1, если автор рекомендует приложение, и 0 иначе.

Для проверки построены два простых правила. Первое правило использует только оценку rating: оно предсказывает 1 при rating >= 4 и 0 в остальных случаях. Второе правило дополнительно использует поле visibility, которое становится известно только после модерации отзыва и поэтому является утечкой признака: при shown оно предсказывает 1, при hidden — 0, а при - применяет правило только по оценке.

Требуется посчитать точность каждого правила. Точность (accuracy) в процентах определяется формулой Accuracy = 100 * K / n, где K — число строк, в которых предсказание совпало со значением recommend, а n — общее число строк. Сначала печатается точность правила с утечкой, затем точность правила без утечки.

Каждое значение точности округляется до двух знаков после точки: значение ровно посередине между двумя вариантами округляется в большую сторону. Пропуск в visibility обозначается символом - и обрабатывается правилом по оценке. Пустых групп и деления на ноль нет, так как во входе всегда есть хотя бы одна строка.

Формат ввода

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

В следующих n строках даны четыре значения через пробел: review_id, rating, visibility, recommend.

review_id — идентификатор отзыва. rating — оценка приложения. visibility принимает значения shown, hidden или -. recommend — правильный ответ, 0 или 1.

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

В единственной строке печатаются два числа через пробел: точность правила с утечкой и точность правила без утечки. У каждого числа ровно два знака после точки.

Ограничения

1 <= n <= 4000.

Длина review_id составляет от 1 до 20 символов; используются только латинские буквы, цифры и символ _.

1 <= rating <= 5.

visibility — одно из значений shown, hidden, -.

recommend — целое число 0 или 1.

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

Куда дальше