2016-01-24 23 views
15

Tento di risolvere questo problema 6 in questo notebook. La domanda è di formare un modello semplice su questi dati usando 50, 100, 1000 e 5000 campioni di addestramento usando il modello LogisticRegression di sklearn.linear_model. https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/udacity/1_notmnist.ipynbsklearn Regressione logistica "ValueError: Found array con dim 3. Stimatore previsto <= 2"

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

Questo è il codice che cercando di fare e mi darà l'errore. ValueError: Found array con dim 3. Stimatore previsto < = 2.

Qualche idea?

risposta

39

scikit-learn prevede 2d array num per il set di dati di addestramento per una funzione fit. Il set di dati che stai trasmettendo è un array 3d di cui hai bisogno per rimodellare l'array in un 2d.

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

Ti dispiacerebbe spiegare come ndarray.reshape può magicamente trasformare i dati 3D in 2D senza perdere le informazioni rappresentate dai vettori originali? – scipilot

+0

La prima dimensione viene mantenuta e le altre due dimensioni vengono appiattite (quindi 28x28 diventa 784). L'algoritmo di adattamento prenderà in considerazione le prime 784 caratteristiche parte del campione numero uno e le successive 784 caratteristiche parte del campione due e così via. –

+0

Ho i miei dati X separati dalle etichette y. Come posso appiattire il set di dati del treno X utilizzando questa risposta? Le etichette Y sono un array 5k. X_train è un 5k x 1024 x 1024 – BluePython