Cara memperbaiki: data pandas diubah menjadi tipe objek numpy. periksa data masukan dengan np.asarray(data).


Kesalahan yang mungkin Anda temui saat menggunakan Python adalah:

 ValueError : Pandas data cast to numpy dtype of object. Check input data with
np.asarray(data).

Kesalahan ini terjadi ketika Anda mencoba menyesuaikan model regresi dengan Python dan tidak dapat mengonversi variabel kategori menjadi variabel dummy sebelum menyesuaikan model.

Contoh berikut menunjukkan cara memperbaiki kesalahan ini dalam praktiknya.

Bagaimana cara mereproduksi kesalahan tersebut

Misalkan kita memiliki panda DataFrame berikut:

 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

Sekarang misalkan kita mencoba menyesuaikan model regresi linier berganda dengan menggunakan tim, assist dan rebound sebagai variabel prediktor dan poin sebagai variabel respon :

 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).

Kami menerima kesalahan karena variabel “tim” bersifat kategoris dan kami tidak mengubahnya menjadi variabel dummy sebelum menyesuaikan model regresi.

Bagaimana cara memperbaiki kesalahan tersebut

Cara termudah untuk memperbaiki kesalahan ini adalah dengan mengonversi variabel “tim” menjadi variabel dummy menggunakan fungsi pandas.get_dummies() .

Catatan : Lihat tutorial ini untuk penyegaran singkat tentang variabel dummy dalam model regresi.

Kode berikut menunjukkan cara mengonversi “tim” menjadi variabel dummy:

 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

Nilai pada kolom “tim” telah diubah dari “A” dan “B” menjadi 0 dan 1.

Sekarang kita dapat menyesuaikan model regresi linier berganda menggunakan variabel baru “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.
==================================================== ============================

Perhatikan bahwa kali ini kami dapat menyesuaikan model regresi tanpa kesalahan apa pun.

Catatan : Anda dapat menemukan dokumentasi lengkap untuk fungsi ols() di perpustakaan statsmodels di sini .

Sumber daya tambahan

Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya dengan Python:

Cara Memperbaiki KeyError di Pandas
Cara Memperbaiki: ValueError: Tidak dapat mengubah float NaN menjadi int
Cara Memperbaiki: ValueError: Operan tidak dapat disiarkan dengan bentuk

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *