Cukup baru untuk Python tetapi membangun model RF pertama saya berdasarkan pada beberapa data klasifikasi. Saya telah mengkonversi semua label menjadi data numerik int64 dan dimuat ke X dan Y sebagai array numpy, tapi saya memukul kesalahan ketika saya mencoba untuk melatih model.
Berikut ini tampilan array saya:
>>> X = np.array([[df.tran_cityname, df.tran_signupos, df.tran_signupchannel, df.tran_vmake, df.tran_vmodel, df.tran_vyear]])
>>> Y = np.array(df['completed_trip_status'].values.tolist())
>>> X
array([[[ 1, 1, 2, 3, 1, 1, 1, 1, 1, 3, 1,
3, 1, 1, 1, 1, 2, 1, 3, 1, 3, 3,
2, 3, 3, 1, 1, 1, 1],
[ 0, 5, 5, 1, 1, 1, 2, 2, 0, 2, 2,
3, 1, 2, 5, 5, 2, 1, 2, 2, 2, 2,
2, 4, 3, 5, 1, 0, 1],
[ 2, 2, 1, 3, 3, 3, 2, 3, 3, 2, 3,
2, 3, 2, 2, 3, 2, 2, 1, 1, 2, 1,
2, 2, 1, 2, 3, 1, 1],
[ 0, 0, 0, 42, 17, 8, 42, 0, 0, 0, 22,
0, 22, 0, 0, 42, 0, 0, 0, 0, 11, 0,
0, 0, 0, 0, 28, 17, 18],
[ 0, 0, 0, 70, 291, 88, 234, 0, 0, 0, 222,
0, 222, 0, 0, 234, 0, 0, 0, 0, 89, 0,
0, 0, 0, 0, 40, 291, 131],
[ 0, 0, 0, 2016, 2016, 2006, 2014, 0, 0, 0, 2015,
0, 2015, 0, 0, 2015, 0, 0, 0, 0, 2015, 0,
0, 0, 0, 0, 2016, 2016, 2010]]])
>>> Y
array(['NO', 'NO', 'NO', 'YES', 'NO', 'NO', 'YES', 'NO', 'NO', 'NO', 'NO',
'NO', 'YES', 'NO', 'NO', 'YES', 'NO', 'NO', 'NO', 'NO', 'NO', 'NO',
'NO', 'NO', 'NO', 'NO', 'NO', 'NO', 'NO'],
dtype='|S3')
>>> X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3)
Traceback (panggilan terakhir terakhir):
File "<stdin>", line 1, in <module> File "/Library/Python/2.7/site-packages/sklearn/cross_validation.py", line
2039, di train_test_split array = indexable (* arrays) File "/Library/Python/2.7/site-packages/sklearn/utils/validation.py", baris 206, di indexable check_consistent_length (* hasil) File "/ Library / Python / 2.7 / paket-situs / sklearn / utils / validation.py ", baris 181, dalam check_consistent_length" sampel:% r "% [int (l) untuk l panjangnya]]
ValueError: Found input variables with inconsistent numbers of samples: [1, 29]
python
scikit-learn
sampling
josh_gray
sumber
sumber
Jawaban:
Anda mengalami kesalahan itu karena Anda
X
danY
tidak memiliki panjang yang sama (yangtrain_test_split
diperlukan), yaituX.shape[0] != Y.shape[0]
,. Diberikan kode Anda saat ini:Untuk memperbaiki kesalahan ini:
np.array()
ketika mendefinisikanX
atau menghapus dimensi ekstra setelah itu dengan perintah berikut:X = X.reshape(X.shape[1:])
. Sekarang, bentukX
akan menjadi (6, 29).X
dengan menjalankanX = X.transpose()
untuk mendapatkan jumlah sampel yang sama diX
danY
. Sekarang, bentukX
akan (29, 6) dan bentukY
akan (29,).sumber
Bukankah train_test_split mengharapkan keduanya
X
danY
menjadi daftar dengan panjang yang sama? X Anda memiliki panjang 6 dan Y memiliki panjang 29. Mungkin coba mengonversinya menjadi bingkai data panda (dengan dimensi 29x6) dan coba lagi?Mengingat data Anda, sepertinya Anda memiliki 6 fitur. Dalam hal ini, cobalah untuk mengonversi Anda
X
menjadi 29 baris dan 6 kolom. Lalu, sampaikan dataframe itu ketrain_test_split
. Anda dapat mengonversi daftar Anda menjadi bingkai data menggunakanpd.DataFrame.from_records
.sumber