Menu
CoddyTech

Diyabetin İlerlemesi

Coddy'nin Machine Learning Journey'sinin Denetimli Öğrenme bölümünün bir parçası. Ders 55 / 58.

Bir diyabet kliniği, takip randevularını her hastanın hastalığının bir yıl içinde ne kadar ilerleyeceğine göre planlıyor. 2. bölümde, bir özellik bunun yalnızca bir kısmını açıklıyordu:

Kliniğin hastalarında ölçeklendirilmiş bmi değerine karşı hastalık ilerlemesi; noktaların geniş bir bulutunun içinden yükselen, “yalnızca bmi” olarak etiketlenmiş tek bir turuncu çizgi; R kare 0.34

Şimdi load_diabetes içindeki on ölçümün tamamı modele veriliyor. Klinik hangi modele güvenmeli ve tahminler kaç puan sapacak?

Çapraz doğrulamayla adil bir seçim, modelin görmediği hastalar üzerindeki dürüst hata değerleri ve modelin gözden kaçırdığı şeyleri bulmak için bir artık kontrolü istiyor.

challenge icon

Görev

Zor

Program, Ridge alfa değerlerini alphas içine okur; başlangıç kodu başlıklı bir grafik oluşturur.

  1. random_state=0 ile test için dörtte birlik bir bölüm ayır.
  2. Eğitim satırlarında 5 katlı CV kullanarak her alfa için bir LinearRegression ve bir Ridge puanını hesapla. Her birinin ortalama R squared değerini (3 ondalık basamakla), ardından kazananı yazdır.
  3. Kazananı eğit ve test MAE ile RMSE değerlerini (1 ondalık basamakla), R squared değerini ise (3 ondalık basamakla) yazdır.
  4. Test artıklarını, yani gerçek değer eksi tahmin edilen değeri, tahminlere karşı dağılım grafiğinde göster. Sıfır çizgisi ekle, ardından grafiği göster.

Başka bir klinik ve 0.5 ile 2.0 alfa değerleri için:

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

Ardından Coddy artık grafiğini açıklar.

Kendin dene

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

# Denenecek Ridge alfa değerleri
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)")

# Kodunuzu aşağıya yazın
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Denetimli Öğrenme bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi