النموذج دالة في بايثون
تذكّر الأسبوع الثامن: الدالة تأخذ مدخلًا وترجع ناتجًا، تمامًا مثل النموذج. تحمل الدالة predict_score(hours) النموذج بـ w = 10 وb = 40 وترجع w * hours + b. فتعطي الاستدعاءات 60 لساعتين و40 لصفر ساعة و90 لخمس ساعات. لكن من وجد العددين 10 و40؟ كتبهما شخص. ولم يتعلمهما الحاسوب. أما في تعلم الآلة فيعدّل الحاسوب w وb بنفسه: يقوم بتنبؤ ثم يقيس الخطأ (التنبؤ ناقص القيمة الحقيقية) ثم يغيّر w وb قليلًا ويجرب من جديد. ويبين الجدول ثلاث محاولات لنقطة بيانات واحدة مخترعة: x = 2 والدرجة الحقيقية 65. ويصغر الخطأ حتى يصبح 0. والتدريب الحقيقي يستخدم نقاط بيانات كثيرة ويفعل ذلك بسرعة كبيرة. ويعمل النموذج جيدًا داخل مدى بياناته فقط: فـ predict_score(20) تعطي 240 درجة وهذا مستحيل إذا كانت الدرجة العظمى 100.
1def predict_score(hours): 2 w = 10 3 b = 40 4 return w * hours + b 5 6print(predict_score(2)) 7print(predict_score(0)) 8print(predict_score(5))
60 40 90
| المحاولة | w | b | التنبؤ عند x = 2 | الخطأ (التنبؤ - الحقيقي 65) |
|---|---|---|---|---|
| 1 | 5 | 30 | 40 | -25 |
| 2 | 8 | 38 | 54 | -11 |
| 3 | 10 | 45 | 65 | 0 |
1def predict_score(hours): 2 w = 10 3 b = 40 4 return w * hours + b 5 6print(predict_score(20))
240
اكتب دالة predict_height(days) لنبتة فيها b = 25 وw = 4 واحسب النتائج لـ 0 و2 و10 أيام. ثم قل ما الذي كتبه شخص هنا وما الذي كان سيجده نموذج مدرَّب بنفسه.
1def predict_score(hours): 2 w = 10 3 b = 40 4 return w * hours + b 5 6print(predict_score(2)) 7print(predict_score(0)) 8print(predict_score(5))