Menu
CoddyTech

Diabetes-Fortschritt

Teil des Abschnitts Überwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 55 von 58.

Eine Diabetesklinik plant Nachuntersuchungen danach, wie weit die Erkrankung jedes Patienten innerhalb eines Jahres fortschreiten wird. In Abschnitt 2 zeigte ein Merkmal nur einen Teil davon:

Krankheitsverlauf in Abhängigkeit vom skalierten bmi der Patienten der Klinik, eine breite Punktwolke mit einer orangefarbenen Linie, die hindurch ansteigt, beschriftet mit nur bmi: R-Quadrat 0.34

Nun fließen alle zehn Messwerte von load_diabetes ein. Welchem Modell sollte die Klinik vertrauen, und wie viele Punkte wird es danebenliegen?

Es möchte eine faire Auswahl durch Kreuzvalidierung, unverzerrte Fehler bei bisher ungesehenen Patienten und eine Residuenprüfung für alles, was das Modell übersieht.

challenge icon

Aufgabe

Schwer

Das Programm liest Ridge-Alphas in alphas ein; der Starter richtet ein Diagramm mit Titel ein.

  1. Teile ein Testviertel mit random_state=0 ab.
  2. Bewerte eine LinearRegression und für jedes Alpha ein Ridge mit 5-facher CV auf den Trainingszeilen. Gib jedes mittlere R squared (3 Dezimalstellen) und anschließend den Gewinner aus.
  3. Trainiere das Gewinner-Modell und gib dessen Test-MAE und RMSE (1 Dezimalstelle) sowie R squared (3 Dezimalstellen) aus.
  4. Stelle die Testresiduen, also Istwerte minus Vorhersagen, den Vorhersagen gegenüber in einem Streudiagramm dar. Füge eine Nulllinie hinzu und zeige das Diagramm anschließend an.

Für eine andere Klinik und die Alphas 0.5 und 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

Anschließend beschreibt Coddy dein Residuen-Diagramm.

Probier es selbst

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

# Die zu testenden Ridge-Alpha-Werte
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)")

# Schreibe deinen Code unten
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Überwachtes Lernen

Übe selbstständig: Online-Python-Compiler