Menu
CoddyTech

התקדמות הסוכרת

חלק מהיחידה למידה מונחית במסלול ה-Machine Learning של Coddy. שיעור 55 מתוך 58.

מרפאה לסוכרת קובעת תורים למעקב לפי מידת התקדמות המחלה של כל מטופל במהלך שנה. ביחידה 2, מאפיין אחד סיפר רק חלק מהסיפור:

התקדמות המחלה ביחס ל־bmi המנורמל של מטופלי המרפאה, ענן רחב של נקודות וקו כתום אחד שעולה דרכו, עם התווית bmi בלבד: R בריבוע 0.34

כעת כל עשר המדידות של load_diabetes נכנסות למודל. על איזה מודל המרפאה צריכה לסמוך, ובכמה נקודות הוא יפספס?

הוא רוצה בחירה הוגנת באמצעות אימות צולב, שגיאות אמינות עבור מטופלים שלא נראו, ובדיקה של השאריות כדי לזהות כל דבר שהמודל מפספס.

challenge icon

אתגר

קשה

התוכנית קוראת ערכי אלפא של Ridge אל alphas; קוד הפתיחה מגדיר תרשים עם כותרת.

  1. הפרידו רבע מהנתונים לבדיקה באמצעות random_state=0.
  2. חשבו ציונים עבור LinearRegression ועבור Ridge לכל ערך אלפא, באמצעות CV בן 5 קיפולים על שורות האימון. הדפיסו את ממוצע R squared של כל אחד (3 ספרות אחרי הנקודה העשרונית), ואז את המנצח.
  3. אמנו את המנצח והדפיסו את MAE ואת RMSE שלו על נתוני הבדיקה (ספרה אחת אחרי הנקודה העשרונית), ואת R squared (3 ספרות אחרי הנקודה העשרונית).
  4. צרו תרשים פיזור של השאריות בנתוני הבדיקה — הערך האמיתי פחות הערך החזוי — מול התחזיות. הוסיפו קו אפס ואז הציגו את התרשים.

עבור מרפאה אחרת וערכי האלפא 0.5 ו-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

לאחר מכן Coddy מתאר את תרשים השאריות שלך.

נסו בעצמכם

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

# ערכי ה-alpha של Ridge שיש לנסות
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)")

# כתבו את הקוד שלכם למטה
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה למידה מונחית

תרגלו בעצמכם: קומפיילר Python אונליין