Menu
CoddyTech

Postępy w leczeniu cukrzycy

Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 55 z 58.

Przychodnia diabetologiczna planuje wizyty kontrolne na podstawie przewidywanego postępu choroby każdego pacjenta w ciągu roku. W sekcji 2 jedna cecha opisywała tylko część tego obrazu:

Postęp choroby w zależności od przeskalowanego BMI pacjentów przychodni, szeroka chmura punktów z jedną pomarańczową linią wznoszącą się przez nią, oznaczoną: samo BMI: R kwadrat 0.34

Teraz wprowadzamy wszystkie dziesięć pomiarów z load_diabetes. Któremu modelowi powinna zaufać klinika i o ile punktów będzie się mylić?

Chce uczciwego wyboru za pomocą walidacji krzyżowej, rzetelnych błędów dla niewidzianych wcześniej pacjentów oraz sprawdzenia reszt, by wykryć to, co model pomija.

challenge icon

Wyzwanie

Trudny

Program wczytuje wartości alfa dla Ridge do alphas; kod początkowy przygotowuje wykres z tytułem.

  1. Wydziel jedną czwartą danych testowych, używając random_state=0.
  2. Oceń LinearRegression i Ridge dla każdej wartości alfa, stosując 5-krotną walidację krzyżową na wierszach treningowych. Wypisz średnią wartość R squared (3 miejsca po przecinku) dla każdego modelu, a następnie zwycięzcę.
  3. Dopasuj zwycięski model i wypisz jego MAE i RMSE dla zbioru testowego (1 miejsce po przecinku) oraz R squared (3 miejsca po przecinku).
  4. Utwórz wykres punktowy reszt dla danych testowych, czyli wartości rzeczywistych minus przewidywane, względem przewidywań. Dodaj linię zerową, a następnie wyświetl wykres.

Dla innej kliniki i wartości alfa 0.5 oraz 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

Następnie Coddy opisze Twój wykres reszt.

Spróbuj swoich sił

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

# Wartości alfa dla Ridge do przetestowania
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)")

# Napisz swój kod poniżej
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Uczenie nadzorowane

Poćwicz samodzielnie: Kompilator Python online