Ziemlich neu in Python, aber ich baue mein erstes RF-Modell basierend auf einigen Klassifizierungsdaten auf. Ich habe alle Bezeichnungen in Int64-numerische Daten konvertiert und als Numpy-Array in X und Y geladen. Beim Versuch, die Modelle zu trainieren, tritt jedoch ein Fehler auf.
So sehen meine Arrays aus:
>>> 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)
Rückverfolgung (letzter Anruf zuletzt):
File "<stdin>", line 1, in <module> File "/Library/Python/2.7/site-packages/sklearn/cross_validation.py", line
2039, in train_test_split arrays = indexable (* arrays) Datei "/Library/Python/2.7/site-packages/sklearn/utils/validation.py", Zeile 206, in indexable check_consistent_length (* result) Datei "/ Library / Python / 2.7 / site-packages / sklearn / utils / validation.py ", Zeile 181, in check_consistent_length" Beispiele:% r "% [int (l) für l in Längen])
ValueError: Found input variables with inconsistent numbers of samples: [1, 29]
python
scikit-learn
sampling
josh_gray
quelle
quelle
Antworten:
Sie stoßen auf diesen Fehler, weil Sie
X
undY
nicht die gleiche Länge haben (wastrain_test_split
erforderlich ist), dhX.shape[0] != Y.shape[0]
. Ausgehend von Ihrem aktuellen Code:So beheben Sie diesen Fehler:
np.array()
bei der DefinitionX
oder die zusätzliche Dimension entfernen anschließend mit dem folgenden Befehl ein :X = X.reshape(X.shape[1:])
. Nun ist die Form vonX
(6, 29).X
indem Sie dieX = X.transpose()
gleiche Anzahl von Proben zu bekommen inX
undY
. Nun ist die Form desX
Willens (29, 6) und die Form desY
Willens (29,).quelle
Erwartet train_test_split nicht beides
X
undY
eine Liste gleicher Länge? Ihr X hat eine Länge von 6 und Y eine Länge von 29. Können Sie versuchen, das in einen Pandas-Datenrahmen (mit der Dimension 29x6) zu konvertieren und es erneut zu versuchen?In Anbetracht Ihrer Daten haben Sie anscheinend 6 Funktionen. Versuchen Sie
X
in diesem Fall, Ihr Format in 29 Zeilen und 6 Spalten umzuwandeln . Übergeben Sie dann diesen Datenrahmen antrain_test_split
. Sie können Ihre Liste mit in einen Datenrahmen konvertierenpd.DataFrame.from_records
.quelle