Признак для корня дерева тренировок
Условие
В дневнике бегуна сведения о тренировках и их результате хранятся в разных таблицах. В первой таблице записаны характеристики тренировки, во второй — состояние бегуна на следующий день. Строки таблиц могут идти в разном порядке, поэтому их требуется сопоставлять по идентификатору тренировки.
Нужно выбрать категориальный признак, который будет использован в корне дерева решений для предсказания результата good или bad. Рассматриваются признаки session, surface и weather.
Для признака X вычисляется информационный выигрыш Information Gain:
IG(X) = H(Y) - sum по значениям v признака X от (|S_v| / n) * H(S_v),
где Y — все результаты, S_v — тренировки со значением v, а энтропия множества результатов S равна H(S) = -sum по классам c от p_c * log2(p_c). Здесь p_c — доля класса c в S, а слагаемое 0 * log2(0) считается равным 0. Значения - означают, что характеристика тренировки неизвестна, и считаются обычной категорией.
При равенстве наибольшего информационного выигрыша выведи лексикографически меньшее имя признака.
Формат ввода
В первой строке дано целое число n — количество тренировок.
Следующие n строк содержат первую таблицу в формате:
run_id session surface weather
Затем следуют n строк второй таблицы в формате:
run_id result
Идентификаторы во второй таблице могут располагаться в произвольном порядке. Каждый идентификатор из первой таблицы встречается во второй таблице ровно один раз.
Формат вывода
Выведи имя признака с наибольшим информационным выигрышем: session, surface или weather.
Округление не применяется, так как выводится точное имя признака.
Ограничения
1 <= n <= 4000.
Длина run_id составляет от 1 до 12 символов из строчных латинских букв и цифр.
session имеет одно из значений easy, tempo, interval, long, -.
surface имеет одно из значений road, track, trail, treadmill, -.
weather имеет одно из значений sun, rain, wind, snow, -.
result имеет одно из значений good, bad.
Длина каждого значения характеристики не превышает 10 символов. Пустых строк и отсутствующих идентификаторов нет.
Решить задачу с автопроверкой на Python →
Куда дальше
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами
- Родителям: подготовка бесплатно — сколько стоит репетитор, что даёт бесплатный маршрут и как понять, что ребёнок занимается
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели