Assez nouveau pour Python mais construisant mon premier modèle RF basé sur certaines données de classification. J'ai converti toutes les étiquettes en données numériques int64 et chargé dans X et Y en tant que tableau numpy, mais je rencontre une erreur lorsque j'essaie de former les modèles.
Voici à quoi ressemblent mes tableaux:
>>> 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 (dernier appel le plus récent):
File "<stdin>", line 1, in <module> File "/Library/Python/2.7/site-packages/sklearn/cross_validation.py", line
2039, dans train_test_split arrays = indexable (* arrays) File "/Library/Python/2.7/site-packages/sklearn/utils/validation.py", ligne 206, dans indexable check_consistent_length (* result) File "/ Library / Python / 2.7 / site-packages / sklearn / utils / validation.py ", ligne 181, dans les échantillons check_consistent_length":% r "% [int (l) pour l en longueurs])
ValueError: Found input variables with inconsistent numbers of samples: [1, 29]
python
scikit-learn
sampling
josh_gray
la source
la source
Réponses:
Vous rencontrez cette erreur parce que votre
X
etY
n'ont pas la même longueur (ce qui esttrain_test_split
requis), c'est-à-direX.shape[0] != Y.shape[0]
. Compte tenu de votre code actuel:Pour corriger cette erreur:
np.array()
la définitionX
ou de supprimer la dimension supplémentaire après avec la commande suivante:X = X.reshape(X.shape[1:])
. Maintenant, la forme deX
sera (6, 29).X
en exécutantX = X.transpose()
pour obtenir un nombre égal d'échantillons dansX
etY
. Maintenant, la forme deX
sera (29, 6) et la forme deY
sera (29,).la source
Train_test_split n'attend-il pas les deux
X
etY
une liste de même longueur? Votre X a une longueur de 6 et Y a une longueur de 29. Peut-être essayez de convertir cela en trame de données pandas (avec une dimension 29x6) et réessayez?Compte tenu de vos données, il semble que vous ayez 6 fonctionnalités. Dans ce cas, essayez de convertir votre
X
pour avoir 29 lignes et 6 colonnes. Passez ensuite cette trame de données àtrain_test_split
. Vous pouvez convertir votre liste en dataframe en utilisantpd.DataFrame.from_records
.la source