كيفية عمل تنبؤات باستخدام نموذج الانحدار في statsmodels
يمكنك استخدام الصيغة الأساسية التالية لاستخدام ملاءمة نموذج الانحدار باستخدام وحدة statsmodels في Python لإجراء تنبؤات حول الملاحظات الجديدة:
model. predict (df_new)
سيحسب بناء الجملة هذا قيم الاستجابة المتوقعة لكل صف من DataFrame جديد يسمى df_new ، وذلك باستخدام نموذج انحدار مناسب للنماذج الإحصائية التي تسمى model .
يوضح المثال التالي كيفية استخدام بناء الجملة هذا عمليًا.
مثال: إجراء التنبؤات باستخدام نموذج الانحدار في Statsmodels
لنفترض أن لدينا DataFrame الباندا التالية التي تحتوي على معلومات حول ساعات الدراسة والامتحانات التحضيرية التي تم إجراؤها والدرجة النهائية التي حصل عليها الطلاب في فصل معين:
import pandas as pd #createDataFrame df = pd. DataFrame ({' hours ': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4, 3, 6], ' exams ': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4, 3, 2], ' score ': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90, 75, 96]}) #view head of DataFrame df. head () hours exam score 0 1 1 76 1 2 3 78 2 2 3 85 3 4 5 88 4 2 2 72
يمكننا استخدام الدالة OLS() في وحدة statsmodels لملاءمة نموذج الانحدار الخطي المتعدد ، باستخدام “الساعات” و”الامتحانات” كمتغيرات للتنبؤ و”النتيجة” كمتغير للاستجابة:
import statsmodels. api as sm #define predictor and response variables y = df[' score '] x = df[[' hours ', ' exams ']] #add constant to predictor variables x = sm. add_constant (x) #fit linear regression model model = sm. OLS (y,x). fit () #view model summary print ( model.summary ()) OLS Regression Results ==================================================== ============================ Dept. Variable: R-squared score: 0.718 Model: OLS Adj. R-squared: 0.661 Method: Least Squares F-statistic: 12.70 Date: Fri, 05 Aug 2022 Prob (F-statistic): 0.00180 Time: 09:24:38 Log-Likelihood: -38.618 No. Observations: 13 AIC: 83.24 Df Residuals: 10 BIC: 84.93 Df Model: 2 Covariance Type: non-robust ==================================================== ============================ coef std err t P>|t| [0.025 0.975] -------------------------------------------------- ---------------------------- const 71.4048 4.001 17.847 0.000 62.490 80.319 hours 5.1275 1.018 5.038 0.001 2.860 7.395 exams -1.2121 1.147 -1.057 0.315 -3.768 1.344 ==================================================== ============================ Omnibus: 1,103 Durbin-Watson: 1,248 Prob(Omnibus): 0.576 Jarque-Bera (JB): 0.803 Skew: -0.289 Prob(JB): 0.669 Kurtosis: 1.928 Cond. No. 11.7 ==================================================== ============================
من عمود coef في المخرجات، يمكننا كتابة نموذج الانحدار المناسب:
النتيجة = 71.4048 + 5.1275 (ساعات) – 1.2121 (امتحانات)
لنفترض الآن أننا نريد استخدام نموذج الانحدار المناسب للتنبؤ بـ “درجة” خمسة طلاب جدد.
أولاً، لنقم بإنشاء DataFrame لاستيعاب الملاحظات الخمس الجديدة:
#create new DataFrame
df_new = pd. DataFrame ({' hours ': [1, 2, 2, 4, 5],
' exams ': [1, 1, 4, 3, 3]})
#add column for constant
df_new = sm. add_constant (df_new)
#view new DataFrame
print (df_new)
const hours exams
0 1.0 1 1
1 1.0 2 1
2 1.0 2 4
3 1.0 4 3
4 1.0 5 3
بعد ذلك، يمكننا استخدام دالة التنبؤ () للتنبؤ بـ “النتيجة” لكل طالب من هؤلاء الطلاب، باستخدام “الساعات” و”الامتحانات” كقيم لمتغيرات التوقع في نموذج الانحدار الملائم لدينا:
#predict scores for the five new students model. predict (df_new) 0 75.320242 1 80.447734 2 76.811480 3 88.278550 4 93.406042 dtype:float64
وإليك كيفية تفسير النتيجة:
- من المتوقع أن يحصل الطالب الأول في DataFrame الجديد على 75.32 .
- ومن المتوقع أن يحصل الطالب الثاني في DataFrame الجديد على 80.45 .
وما إلى ذلك وهلم جرا.
لفهم كيفية حساب هذه التنبؤات، نحتاج إلى الرجوع إلى نموذج الانحدار المجهز السابق:
النتيجة = 71.4048 + 5.1275 (ساعات) – 1.2121 (امتحانات)
ومن خلال توصيل قيمتي “الساعات” و”الامتحانات” للطلاب الجدد، يمكننا حساب درجاتهم المتوقعة.
على سبيل المثال، كان لدى الطالب الأول في DataFrame الجديد قيمة 1 للساعات وقيمة 1 للاختبارات.
وبالتالي تم حساب درجاتهم المتوقعة على النحو التالي:
النتيجة = 71.4048 + 5.1275(1) – 1.2121(1) = 75.32 .
تم حساب درجة كل طالب في DataFrame الجديد بنفس الطريقة.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في بايثون:
كيفية تنفيذ الانحدار اللوجستي في بايثون
كيفية حساب AIC لنماذج الانحدار في بايثون
كيفية حساب R-squared المعدل في بايثون