Menu
CoddyTech

Progressi del diabete

Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 55 di 58.

Una clinica per il diabete programma le visite di controllo in base a quanto progredirà la malattia di ciascun paziente nell'arco di un anno. Nella sezione 2, una caratteristica ne descriveva solo una parte:

Progressione della malattia rispetto al bmi scalato dei pazienti della clinica, un'ampia nuvola di punti con una linea arancione che sale al suo interno, etichettata solo bmi: R quadrato 0.34

Ora vengono inserite tutte e dieci le misurazioni di load_diabetes. Di quale modello dovrebbe fidarsi la clinica e di quanti punti sbaglierà?

Vuole una selezione equa tramite convalida incrociata, errori affidabili su pazienti mai visti e un controllo dei residui per individuare tutto ciò che il modello non coglie.

challenge icon

Sfida

Difficile

Il programma legge gli alpha di Ridge in alphas; il codice iniziale prepara un grafico con un titolo.

  1. Separa un quarto dei dati per il test con random_state=0.
  2. Calcola il punteggio di un LinearRegression e di un Ridge per ogni alpha con una CV a 5 fold sulle righe di training. Stampa ogni R squared medio (3 decimali), poi il vincitore.
  3. Addestra il vincitore e stampa MAE e RMSE sul test (1 decimale) e R squared (3).
  4. Rappresenta con uno scatter plot i residui del test, valore reale meno valore predetto, rispetto alle predizioni. Aggiungi una linea a zero, poi mostra il grafico.

Per un'altra clinica e gli alpha 0.5 e 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

Poi Coddy descrive il tuo grafico dei residui.

Provalo tu

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

# I valori alpha di Ridge da provare
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)")

# Scrivi il tuo codice qui sotto
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Apprendimento supervisionato

Esercitati da solo: Compilatore Python online