कैसे ठीक करें: पांडा डेटा को सुस्पष्ट ऑब्जेक्ट प्रकार में परिवर्तित कर दिया गया है। np.asarray(डेटा) के साथ इनपुट डेटा की जाँच करें।
पायथन का उपयोग करते समय आपके सामने एक त्रुटि आ सकती है:
ValueError : Pandas data cast to numpy dtype of object. Check input data with
np.asarray(data).
यह त्रुटि तब होती है जब आप पायथन में एक प्रतिगमन मॉडल को फिट करने का प्रयास करते हैं और मॉडल को फिट करने से पहले श्रेणीबद्ध चर को डमी चर में परिवर्तित करने में असमर्थ होते हैं।
निम्नलिखित उदाहरण दिखाता है कि व्यवहार में इस त्रुटि को कैसे ठीक किया जाए।
त्रुटि को पुन: उत्पन्न कैसे करें
मान लीजिए हमारे पास निम्नलिखित पांडा डेटाफ़्रेम हैं:
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
“टीम” कॉलम में मानों को “ए” और “बी” से 0 और 1 में बदल दिया गया है।
अब हम नए वेरिएबल “टीम_बी” का उपयोग करके एकाधिक रैखिक प्रतिगमन मॉडल को फिट कर सकते हैं:
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.
==================================================== ============================
ध्यान दें कि इस बार हम बिना किसी त्रुटि के प्रतिगमन मॉडल को फिट करने में सक्षम हैं।
नोट : आप यहां statsmodels लाइब्रेरी में ols() फ़ंक्शन के लिए पूर्ण दस्तावेज़ पा सकते हैं।
अतिरिक्त संसाधन
निम्नलिखित ट्यूटोरियल बताते हैं कि पायथन में अन्य सामान्य त्रुटियों को कैसे ठीक किया जाए:
पंडों में KeyError को कैसे ठीक करें
कैसे ठीक करें: वैल्यूएरर: फ्लोट NaN को int में बदलने में असमर्थ
कैसे ठीक करें: वैल्यूएरर: ऑपरेंड को आकृतियों के साथ प्रसारित नहीं किया जा सका