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:
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.
Aufgabe
SchwerDas Programm liest Ridge-Alphas in alphas ein; der Starter richtet ein Diagramm mit Titel ein.
- Teile ein Testviertel mit
random_state=0ab. - Bewerte eine
LinearRegressionund für jedes Alpha einRidgemit 5-facher CV auf den Trainingszeilen. Gib jedes mittlere R squared (3 Dezimalstellen) und anschließend den Gewinner aus. - Trainiere das Gewinner-Modell und gib dessen Test-MAE und RMSE (1 Dezimalstelle) sowie R squared (3 Dezimalstellen) aus.
- 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.414Anschließ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
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Überwachtes Lernen
1Dein erstes Modell
Aus Beispielen lernenTrainings- und TestdatensätzeAnpassen und VorhersagenEin Modell bewertenRückblick: Saatgutsortierer4Logistische Regression
Ja-Nein-VorhersagenDie EntscheidungsschwelleGewichte als IndizienMehrere KlassenRückblick: Spamfilter2Nächste Nachbarn
So entscheidet k-NNk wählenEntscheidungsgrenzenSkalierung für NachbarnRückblick: Wein-Nachbarn5Klassifikatoren bewerten
Die KonfusionsmatrixPräzision und TrefferquoteDer F1-ScoreUnausgewogene KlassenROC-KurvenRückblick: Screeningtest3Lineare Regression
Zahlen vorhersagenMehrere MerkmaleFehler messenResiduenplotsZusammenfassung: Fahrradverleih6Entscheidungsbäume
Bäume stellen FragenEinen Baum lesenBaumtiefeMerkmalswichtigkeitRückblick: Kreditentscheidungen9Ensembleverfahren
Random ForestsWarum Random Forests funktionierenGradient BoostingRückblick: Förster des Waldes12Abschließende Herausforderungen
Diabetes-FortschrittKreditgenehmigungHandgeschriebene ZiffernKundenabwanderungÜbe selbstständig: Online-Python-Compiler