Сравнение прогноза времени пробежки

тема: Метрики регрессии и МНК · уровень: средний

Условие

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

В конце входа указан запрос: список спортсменов. Нужно рассматривать только тренировки спортсменов из этого списка. Строки, в которых отсутствует фактическое время или прогноз модели, не участвуют в вычислениях.

Базовый прогноз для всех оставшихся тренировок равен среднему фактическому времени этих тренировок. Для каждого прогноза считается среднеквадратичная ошибка MSE:

MSE = ((y_1 - p_1)^2 + (y_2 - p_2)^2 + ... + (y_k - p_k)^2) / k,

где y_i — фактическое время, p_i — прогноз, а k — количество строк, участвующих в вычислении. Для базового прогноза вместо каждого p_i подставляется среднее фактическое время. Требуется вывести отношение MSE_базовой / MSE_модели: оно показывает, во сколько раз ошибка модели меньше ошибки базового прогноза.

Если значения MSE базового прогноза и модели равны, следует вывести 1.00. Гарантируется, что после удаления строк с пропусками для запроса останется хотя бы одна строка и MSE модели будет строго больше нуля.

Формат ввода

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

В следующих n строках даны три значения через пробел: имя спортсмена, фактическое время пробежки в секундах и прогноз модели в секундах. Вместо времени или прогноза может стоять символ -.

В следующей строке дано целое число q — количество спортсменов в запросе.

В следующих q строках даны имена спортсменов из запроса. Имена в запросе различны.

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

Выведите искомое отношение с двумя знаками после точки.

Округление производится до ближайшего значения с двумя знаками после точки. Если следующее отброшенное значение равно ровно пяти, округление производится в большую сторону.

Ограничения

1 <= n <= 2000.

Длина имени спортсмена составляет от 1 до 20 символов. Имя состоит из строчных латинских букв.

Каждое указанное время и каждый указанный прогноз — целое число от 120 до 50000 включительно.

1 <= q <= 30.

Каждое имя из запроса встречается хотя бы в одной из n строк.

После исключения строк с символом - среди строк спортсменов из запроса остаётся хотя бы одна строка. MSE модели на этих строках строго больше нуля.

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

Куда дальше