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:
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.
Wyzwanie
TrudnyProgram wczytuje wartości alfa dla Ridge do alphas; kod początkowy przygotowuje wykres z tytułem.
- Wydziel jedną czwartą danych testowych, używając
random_state=0. - Oceń
LinearRegressioniRidgedla 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ę. - Dopasuj zwycięski model i wypisz jego MAE i RMSE dla zbioru testowego (1 miejsce po przecinku) oraz R squared (3 miejsca po przecinku).
- 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.414Nastę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
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Uczenie nadzorowane
1Twój pierwszy model
Uczenie się na przykładachZbiory treningowe i testoweDopasowywanie i przewidywanieOcena modeluPodsumowanie: Sortownik nasion4Regresja logistyczna
Przewidywanie „tak” lub „nie”Próg decyzyjnyWagi jako dowodyWiele klasPodsumowanie: filtr spamu2Najbliżsi sąsiedzi
Jak działa k-NNWybór kGranice decyzyjneSkalowanie dla sąsiadówPodsumowanie: sąsiedzi w zbiorze Wine5Ocena klasyfikatorów
Macierz pomyłekPrecyzja i czułośćWynik F1Niezrównoważone klasyKrzywe ROCPodsumowanie: test przesiewowy8Walidacja krzyżowa
Walidacja k-krotnaUczciwe porównywanie modeliPrzeszukiwanie siatkiPodsumowanie: naprawa deskorolki11Projekt: Gatunki pingwinów
Poznaj pingwinyPrzygotuj daneWybierz modelDopracuj zwycięski modelWdróż model3Regresja liniowa
Przewidywanie wartości liczbowychWiele cechPomiar błędówWykresy resztPodsumowanie: wypożyczanie rowerów6Drzewa decyzyjne
Drzewa zadają pytaniaCzytanie drzewaGłębokość drzewaWażność cechPodsumowanie: decyzje kredytowe12Wyzwania końcowe
Postępy w leczeniu cukrzycyZatwierdzanie kredytówOdręcznie pisane cyfryRezygnacja klientówPoćwicz samodzielnie: Kompilator Python online