2016-01-24 8 views
15

Bu sorunu 6 bu dizüstü bilgisayarda çözmeye çalışıyorum. Soru, sklearn.linear_model'den LogisticRegression modelini kullanarak 50, 100, 1000 ve 5000 eğitim örneklerini kullanarak bu verilere basit bir model öğretmektir. https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/udacity/1_notmnist.ipynbsklearn Logistic Regression "ValueError: Loş 3 ile dizi bulundu. Tahmincisi bekleniyor <= 2."

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

Bu i yapmaya çalışıyor ve bana hata vermek kodudur. ValueError: Dim 3 ile dizi bulundu. Tahmin bekleniyor < = 2.

Herhangi bir fikrin var mı?

cevap

39

scikit-learn, fit işlevinin eğitim veri kümesi için 2d num dizilerini bekler. Geçirdiğiniz veri kümesi, diziyi 2d'ye yeniden şekillendirmeniz gereken bir 3d dizidir.

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

ndarray.reshape'un, orijinal vektörlerin temsil ettiği bilgileri kaybetmeden, 3 boyutlu verileri 2D'ye nasıl dönüştürdüğünü açıklar mısınız? – scipilot

+0

Birinci boyut korunur ve diğer iki boyut düzleştirilmiş (böylece 28x28, 784 olur). Uygun algoritma, ilk 784 özelliklerinin bir numaralı örnek parçası ve sonraki 784 özelliklerinin örnek iki bölümünün bir parçası olduğunu düşünecektir. –

+0

X verilerimi y etiketlerinden ayrı tutuyorum. Bu yanıtı kullanarak X tren veri kümesini nasıl düzleştirebilirim? Y etiketleri 5k dizisidir. X_train bir 5k x 1024 x 1024 – BluePython