Ошибка прогноза продаж мороженого
Условие
Киоск с мороженым хранит сведения о сменах в двух таблицах. В первой таблице для каждой смены указаны её идентификатор, температура воздуха и назначение смены. Во второй таблице указано фактическое число проданных порций.
Значение 0 в столбце group означает обучающую смену, значение 1 — контрольную смену. Строки таблиц требуется сопоставить по одинаковому shift_id. Значение NA в таблице продаж означает, что данные о продажах для этой смены отсутствуют. Такие строки не используются ни при обучении, ни при подсчёте ошибки.
По известным продажам обучающих смен строится прямая prediction = a * temperature + b методом наименьших квадратов. Если x̄ и ȳ — средние температуры и продажи известных обучающих смен, то
a = Σ((x - x̄) * (y - ȳ)) / Σ((x - x̄)^2),
b = ȳ - a * x̄.
Для контрольных смен с известными продажами вычисляется среднеквадратичная ошибка MSE:
MSE = Σ((prediction - y)^2) / k,
где k — число контрольных смен с известными продажами. Требуется вывести MSE.
При совпадении температур или продаж все соответствующие строки учитываются отдельно.
Формат ввода
В первой строке дано целое число n — число смен.
В следующих n строках дана первая таблица в формате:
shift_id temperature group
В следующих n строках дана вторая таблица в формате:
shift_id sold
Значение sold является целым числом или строкой NA.
Формат вывода
Выведите одно число — MSE с ровно тремя знаками после точки.
Для округления умножьте точное значение MSE на 1000, округлите результат до ближайшего целого, а при ровно одинаковой близости к двум целым выберите большее. Затем разделите полученное целое на 1000 при записи ответа.
Ограничения
3 ≤ n ≤ 2000.
1 ≤ shift_id ≤ 10^9, все идентификаторы смен различны в каждой таблице, и множества идентификаторов в таблицах совпадают.
-40 ≤ temperature ≤ 50.
group равно 0 или 1.
Если значение sold не равно NA, то 0 ≤ sold ≤ 10000.
Среди обучающих смен есть хотя бы две строки с известными продажами и различными температурами.
Среди контрольных смен есть хотя бы одна строка с известной продажей.
Решить задачу с автопроверкой на Python →
Куда дальше
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели
- Перечневые олимпиады по информатике — олимпиады перечня Минобрнауки, их уровни и что нужно к диплому
- БВИ по олимпиадам: в какие вузы берут — правила приёма вузов, разобранные построчно, со ссылкой на приказ у каждой строки