كيفية الإصلاح: يتم تحويل بيانات الباندا إلى نوع كائن numpy. تحقق من بيانات الإدخال باستخدام np.asarray(data).
الخطأ الذي قد تواجهه عند استخدام بايثون هو:
ValueError : Pandas data cast to numpy dtype of object. Check input data with
np.asarray(data).
يحدث هذا الخطأ عندما تحاول ملاءمة نموذج انحدار في Python ولا تتمكن من تحويل المتغيرات الفئوية إلى متغيرات وهمية قبل ملاءمة النموذج.
يوضح المثال التالي كيفية تصحيح هذا الخطأ عمليًا.
كيفية إعادة إنتاج الخطأ
لنفترض أن لدينا DataFrame الباندا التالية:
import pandas as pd
#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12],
' points ': [14, 19, 8, 12, 17, 19, 22, 25]})
#view DataFrame
df
team assists rebounds points
0 A 5 11 14
1 To 7 8 19
2 A 7 10 8
3 to 9 6 12
4 B 12 6 17
5 B 9 5 19
6 B 9 9 22
7 B 4 12 25
لنفترض الآن أننا نحاول ملاءمة نموذج الانحدار الخطي المتعدد باستخدام الفريق والمساعدات والارتدادات كمتغيرات متوقعة والنقاط كمتغير الاستجابة :
import statsmodels. api as sm
#define response variable
y = df['points']
#define predictor variables
x = df[['team', 'assists', 'rebounds']]
#add constant to predictor variables
x = sm. add_constant (x)
#attempt to fit regression model
model = sm. OLS (y,x). fit ()
ValueError : Pandas data cast to numpy dtype of object. Check input data with
np.asarray(data).
لقد تلقينا خطأ لأن متغير “الفريق” قاطع ولم نحوله إلى متغير وهمي قبل ملاءمة نموذج الانحدار.
كيفية اصلاح الخطأ
أسهل طريقة لإصلاح هذا الخطأ هي تحويل متغير “الفريق” إلى متغير وهمي باستخدام الدالة pandas.get_dummies() .
ملاحظة : قم بمراجعة هذا البرنامج التعليمي للحصول على تجديد سريع للمتغيرات الوهمية في نماذج الانحدار.
يوضح التعليمة البرمجية التالية كيفية تحويل “الفريق” إلى متغير وهمي:
import pandas as pd
#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12],
' points ': [14, 19, 8, 12, 17, 19, 22, 25]})
#convert "team" to dummy variable
df = pd. get_dummies (df, columns=[' team '], drop_first= True )
#view updated DataFrame
df
assists rebounds points team_B
0 5 11 14 0
1 7 8 19 0
2 7 10 8 0
3 9 6 12 0
4 12 6 17 1
5 9 5 19 1
6 9 9 22 1
7 4 12 25 1
تم تحويل القيم الموجودة في عمود “الفريق” من “A” و”B” إلى 0 و1.
يمكننا الآن ملاءمة نموذج الانحدار الخطي المتعدد باستخدام المتغير الجديد “team_B”:
import statsmodels. api as sm
#define response variable
y = df['points']
#define predictor variables
x = df[['team_B', 'assists', 'rebounds']]
#add constant to predictor variables
x = sm. add_constant (x)
#fit regression model
model = sm. OLS (y,x). fit ()
#view summary of model fit
print ( model.summary ())
OLS Regression Results
==================================================== ============================
Dept. Variable: R-squared points: 0.701
Model: OLS Adj. R-squared: 0.476
Method: Least Squares F-statistic: 3.119
Date: Thu, 11 Nov 2021 Prob (F-statistic): 0.150
Time: 14:49:53 Log-Likelihood: -19.637
No. Observations: 8 AIC: 47.27
Df Residuals: 4 BIC: 47.59
Df Model: 3
Covariance Type: non-robust
==================================================== ============================
coef std err t P>|t| [0.025 0.975]
-------------------------------------------------- ----------------------------
const 27.1891 17.058 1.594 0.186 -20.171 74.549
team_B 9.1288 3.032 3.010 0.040 0.709 17.548
assists -1.3445 1.148 -1.171 0.307 -4.532 1.843
rebounds -0.5174 1.099 -0.471 0.662 -3.569 2.534
==================================================== ============================
Omnibus: 0.691 Durbin-Watson: 3.075
Prob(Omnibus): 0.708 Jarque-Bera (JB): 0.145
Skew: 0.294 Prob(JB): 0.930
Kurtosis: 2.698 Cond. No. 140.
==================================================== ============================
لاحظ أننا هذه المرة قادرون على ملاءمة نموذج الانحدار دون أي أخطاء.
ملاحظة : يمكنك العثور على الوثائق الكاملة لوظيفة ols() في مكتبة statsmodels هنا .
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في بايثون:
كيفية إصلاح KeyError في الباندا
كيفية الإصلاح: خطأ القيمة: غير قادر على تحويل float NaN إلى int
كيفية الإصلاح: خطأ في القيمة: لا يمكن بث المعاملات بالأشكال