Bastante novo no Python, mas construindo meu primeiro modelo de RF com base em alguns dados de classificação. Eu converti todos os rótulos em dados numéricos int64 e carreguei em X e Y como uma matriz numpy, mas estou detectando um erro ao tentar treinar os modelos.
Aqui está a aparência das minhas matrizes:
>>> 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 (última chamada mais recente):
File "<stdin>", line 1, in <module> File "/Library/Python/2.7/site-packages/sklearn/cross_validation.py", line
2039, em matrizes train_test_split = indexável (* matrizes) Arquivo "/Library/Python/2.7/site-packages/sklearn/utils/validation.py", linha 206, no arquivo indexável check_consistent_length (* result) "/ Library / Python / 2.7 / site-packages / sklearn / utils / validation.py ", linha 181, em check_consistent_length" samples:% r "% [int (l) para l em comprimentos])
ValueError: Found input variables with inconsistent numbers of samples: [1, 29]
python
scikit-learn
sampling
josh_gray
fonte
fonte
Respostas:
Você está enfrentando esse erro porque seu
X
eY
não possui o mesmo comprimento (que é o quetrain_test_split
requer), ou sejaX.shape[0] != Y.shape[0]
,. Dado o seu código atual:Para corrigir este erro:
np.array()
ao definirX
ou remover a dimensão extra depois com o seguinte comando:X = X.reshape(X.shape[1:])
. Agora, a forma deX
será (6, 29).X
executandoX = X.transpose()
para obter um número igual de amostras emX
eY
. Agora, a forma deX
será (29, 6) e a forma deY
será (29,).fonte
Train_test_split não espera ambos
X
eY
deve ser uma lista do mesmo comprimento? Seu X tem comprimento 6 e Y tem comprimento 29. Pode ser que você tente convertê-lo no dataframe do pandas (com dimensão 29x6) e tente novamente?Dados os seus dados, parece que você tem 6 recursos. Nesse caso, tente converter o seu
X
para ter 29 linhas e 6 colunas. Em seguida, passe esse quadro de dados paratrain_test_split
. Você pode converter sua lista em dataframe usandopd.DataFrame.from_records
.fonte