كيفية عمل تنبؤات باستخدام نموذج الانحدار في 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 المعدل في بايثون

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *