Menu
CoddyTech
flag Ar iconالعربيةdown icon

تطور مرض السكري

جزء من قسم التعلّم الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 55 من 58.

تحدّد عيادة مرضى السكري مواعيد المتابعة بحسب مدى تطوّر مرض كل مريض خلال عام. في القسم 2، لم تخبرنا إحدى السمات إلا بجزء من الصورة:

تطوّر المرض مقارنةً بقيم bmi المُقاسة لدى مرضى العيادة'، سحابة واسعة من النقاط يمرّ خلالها خط برتقالي صاعد، بعنوان bmi وحده: معامل التحديد R تربيع 0.34

الآن تُدخَل القياسات العشرة كلها في load_diabetes. أي نموذج ينبغي للعيادة أن تثق به، وكم نقطة سيكون الفرق؟

إنه يريد اختيارًا منصفًا عبر التحقق المتقاطع، وأخطاءً صادقة على مرضى لم يسبق للنموذج رؤيتهم، وفحصًا للبواقي للتحقق مما يفوته النموذج.

challenge icon

التحدي

صعب

يقرأ البرنامج قيم ألفا الخاصة بـ Ridge إلى alphas؛ ويُعدّ الإعداد الأولي مخططًا بعنوان.

  1. افصل ربعًا للاختبار باستخدام random_state=0.
  2. احسب درجات LinearRegression وRidge لكل قيمة ألفا باستخدام التحقق المتقاطع بخمس طيات على صفوف التدريب. اطبع متوسط كل قيمة 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

# قيم ألفا لـ 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 عبر الإنترنت