Задача курса

Baseline регрессии: среднее, медиана и MAE модели

Курс «Машинное обучение с нуля на Python: первая модель» · урок «Baseline: среднее и медиана только по train»

Условие

Три прогноза на одном тесте

Прежде чем доверять предсказаниям любого алгоритма, разумно спросить: а что, если бы мы вовсе не строили никакой модели? Самый честный ответ на этот вопрос дают так называемые константные ориентиры — простейшие правила, которые для каждого нового объекта выдают одно и то же число, вычисленное заранее по обучающим данным. Среднее и медиана целевой переменной — два наиболее естественных кандидата на роль таких ориентиров, и именно они служат нижней планкой, с которой сравнивают более сложные решения.

В медицинском контексте задача звучит так: по набору физиологических измерений пациентов предсказать количественный показатель прогрессирования диабета. Набор данных разбивают на обучающую и тестовую части; всё, что касается ориентиров — и среднее, и медиана — вычисляется исключительно по обучающим ответам, чтобы честно имитировать ситуацию, когда будущие пациенты ещё не известны. Тестовые ответы остаются нетронутыми до момента оценки.

На тестовой выборке встречаются три претендента: константный прогноз на основе среднего, константный прогноз на основе медианы и регрессионная модель, обученная на тренировочных данных. Качество каждого из них измеряется средней абсолютной ошибкой. Итогом работы программы становится таблица из трёх подписанных значений MAE и явный вывод о том, кто из трёх подходов ошибается меньше всего на данном конкретном тесте.

Что уже дано

В редакторе доступны импорты load_diabetes, train_test_split, LinearRegression, mean_absolute_error, numpy и pandas. Скрытая подготовка не создаёт данные; встроенный diabetes загружается офлайн.

Что нужно сделать

Загрузите X, y, разделите их совместно (test_size=0.2, random_state=42). Рассчитайте mean_train и median_train только из y_train, обучите model на train и получите pred_model для X_test. В results создайте DataFrame с индексом mean, median, model и одним столбцом mae в этом порядке: MAE каждого прогноза на одном y_test. В winner сохраните метку подхода с наименьшей тестовой MAE. При равенстве выбирайте первый по порядку строк results.

Ввод и вывод

stdin не используется. Печатать через print в stdout ничего не нужно. Проверяются X_train, X_test, y_train, y_test, mean_train, median_train, model, pred_model, results и winner.

Попробуйте решить

РешениеPython
Без регистрации · результат не сохраняется