Menu
CoddyTech

Прогресс при диабете

Часть раздела Обучение с учителем путешествия по Machine Learning на Coddy. Урок 55 из 58.

В диабетической клинике назначают повторные приемы в зависимости от того, насколько прогрессирует заболевание каждого пациента в течение года. В разделе 2 один признак рассказывал лишь часть истории:

Прогрессирование заболевания в зависимости от нормированного bmi у пациентов клиники: широкое облако точек с одной оранжевой линией, поднимающейся сквозь него, с подписью «только bmi: R-квадрат 0.34»

Теперь учитываются все десять показателей из load_diabetes. Какой модели следует доверять клинике и насколько она ошибётся в баллах?

Ему нужен объективный выбор с помощью перекрёстной проверки, честная оценка ошибок на пациентах, которых модель ещё не видела, и проверка остатков, чтобы выявить всё, что модель упустила.

challenge icon

Задание

Сложно

Программа считывает значения alpha для Ridge в alphas; заготовка настраивает график с заголовком.

  1. Выдели четверть данных для тестирования, указав random_state=0.
  2. Оцени LinearRegression и Ridge для каждого значения alpha с помощью 5-кратной перекрёстной проверки на обучающих строках. Выведи среднее значение R-квадрата для каждой модели (3 знака после запятой), а затем победителя.
  3. Обучи победившую модель и выведи её MAE и RMSE на тестовых данных (1 знак после запятой), а также R-квадрат (3 знака после запятой).
  4. Построй диаграмму рассеяния тестовых остатков — истинных значений минус предсказанные — относительно предсказаний. Добавь линию нуля, затем покажи график.

Для другой клиники и значений alpha 0.5 и 2.0:

Linear: CV R squared 0.472
Ridge 0.5: CV R squared 0.481
Ridge 2.0: CV R squared 0.402
Winner: Ridge 0.5
Test errors: MAE 47.3, RMSE 58.9, R squared 0.414

Затем Coddy опишет твою диаграмму остатков.

Попробуйте сами

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.linear_model import LinearRegression, Ridge
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score

diabetes = load_diabetes(as_frame=True)
X = diabetes.data
y = diabetes.target

# Значения alpha для Ridge, которые нужно попробовать
n = int(input())
alphas = []
for i in range(n):
    alphas.append(float(input()))

fig, ax = plt.subplots()
ax.set_title("Residuals on Test Patients")
ax.set_xlabel("Predicted progression")
ax.set_ylabel("Residual (true - predicted)")

# Напишите свой код ниже
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Обучение с учителем

Потренируйтесь самостоятельно: Онлайн-компилятор Python