2016-01-24 9 views
15

Ich versuche, dieses Problem 6 in diesem Notebook zu lösen. Die Frage ist, ein einfaches Modell für diese Daten mit 50, 100, 1000 und 5000 Trainingsbeispielen zu trainieren, indem das LogisticRegression-Modell von sklearn.linear_model verwendet wird. https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/udacity/1_notmnist.ipynbsklearn Logistische Regression "ValueError: Gefundenes Array mit Dim 3. Estimator erwartet <= 2."

lr = LogisticRegression() 
lr.fit(train_dataset,train_labels) 

Dies ist der Code, den ich es versuchen zu tun und mir den Fehler geben. ValueError: Gefunden Array mit Dim 3. Estimator erwartet < = 2.

Irgendwelche Idee?

Antwort

39

scikit-learn erwartet 2d num Arrays für den Trainingsdatensatz für eine fit Funktion. Der Datensatz, den Sie übergeben, ist ein 3D-Array. Sie müssen das Array zu einem 2D-Array umformen.

nsamples, nx, ny = train_dataset.shape 
d2_train_dataset = train_dataset.reshape((nsamples,nx*ny)) 
+0

Würde es Ihnen etwas ausmachen zu erklären, wie ndarray.reshape magisch 3D-Daten in 2D umwandeln kann, ohne die Informationen zu verlieren, die durch die ursprünglichen Vektoren dargestellt werden? – scipilot

+0

Die erste Dimension wird beibehalten und die anderen beiden Dimensionen werden abgeflacht (28x28 wird zu 784). Der Anpassungsalgorithmus wird als nächstes den ersten 784-Merkmalsteil des Abtastwerts eins und den nächsten 784-Merkmalsteil des Beispiels zwei usw. betrachten. –

+0

Ich habe meine X-Daten getrennt von y-Etiketten. Wie kann ich den X-Zugdatensatz mit dieser Antwort reduzieren? Y-Labels sind ein 5k-Array. X_train ist ein 5k x 1024 x 1024 – BluePython

Verwandte Themen