Bastante nuevo en Python pero construyendo mi primer modelo de RF basado en algunos datos de clasificación. He convertido todas las etiquetas en datos numéricos int64 y cargado en X e Y como una matriz numpy, pero estoy detectando un error cuando estoy tratando de entrenar a los modelos.
Así es como se ven mis matrices:
>>> 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)
Rastreo (llamadas recientes más última):
File "<stdin>", line 1, in <module> File "/Library/Python/2.7/site-packages/sklearn/cross_validation.py", line
2039, en train_test_split arrays = indexable (* arrays) Archivo "/Library/Python/2.7/site-packages/sklearn/utils/validation.py", línea 206, en indexable check_consistent_length (* resultado) Archivo "/ Library / Python / 2.7 / site-packages / sklearn / utils / validation.py ", línea 181, en muestras de check_consistent_length":% r "% [int (l) para l en longitudes])
ValueError: Found input variables with inconsistent numbers of samples: [1, 29]
python
scikit-learn
sampling
josh_gray
fuente
fuente
Respuestas:
Se está ejecutando en ese error porque su
X
yY
no tienen la misma longitud (que es lo quetrain_test_split
requiere), es decir,X.shape[0] != Y.shape[0]
. Dado su código actual:Para corregir este error:
np.array()
la hora de definirX
o eliminar la dimensión extra después con el comando siguiente:X = X.reshape(X.shape[1:])
. Ahora, la forma deX
será (6, 29).X
ejecutandoX = X.transpose()
para obtener el mismo número de muestras enX
yY
. Ahora, la forma deX
será (29, 6) y la forma deY
será (29,).fuente
¿No está train_test_split esperando ambos
X
yY
ser una lista de la misma longitud? Su X tiene una longitud de 6 e Y tiene una longitud de 29. ¿Puede intentar convertir eso en un marco de datos de pandas (con una dimensión de 29x6) y volver a intentarlo?Dada su información, parece que tiene 6 funciones. En ese caso, intente convertir su
X
para tener 29 filas y 6 columnas. Luego pase ese marco de datos atrain_test_split
. Puede convertir su lista a trama de datos usandopd.DataFrame.from_records
.fuente