2015-10-16 12 views
11

MNIST Sınıflandırıcısı üzerinde MNM Sınıflayıcısı'nı uygulamaya çalışıyorum.Python scikit-öğrenmek SVM Sınıflandırıcı "ValueError: Loş 3 ile dizi bulundu. Beklenen <= 2"

import mnist 
from sklearn import svm 

training_images, training_labels = mnist.load_mnist("training", digits = [1,2,3,4]) 
classifier = svm.SVC() 
classifier.fit(training_images, training_labels) 

çok boyutlu bir sınıflandırıcı desteklemek sklearn mu:

ValueError: Found array with dim 3. Expected <= 2 

benim kod parçacığı olduğunu takiben: my parametreleri olarak 3 onun aşağıdaki hatayı atma boyutludur?

+1

ilgili: http://stackoverflow.com/questions/34972142/sklearn-logistic-regression-valueerror-found-array-with -dim-3-tahmincisi-beklentisi – michael

cevap

9

Sorun, giriş verilerinizle ilgilidir.

Siz de bir rakam veri kümesini yüklemek için sklearn kullanabilirsiniz:

from sklearn.datasets import load_digits 
from sklearn import svm 

digits = load_digits() 
X = digits.data 
y = digits.target 

classifier = svm.SVC() 
classifier.fit(X[:1000], y[:1000]) 
predictions = classifier.predict(X[1000:]) 
+0

Teşekkürler, Veri kümemi sklearn.datasets için yapıldığı gibi daha düşük boyutlara dönüştürdü. –

15

Bir seçenek 2 boyutlu bir diziye giriş verilerini yeniden şekillendirmek olacaktır sorunu gidermeye yönelik.

Eğitim verilerinizin her biri 3x3 matris olarak temsil edilen 10 görüntüden oluştuğunu ve bu nedenle giriş verilerinizin 3 boyutlu olduğunu varsayalım.

[ [[1,2,3], [[1,2,3],   [ 
    [4,5,6], [4,5,6],   image 10 
    [7,8,9]] , [7,8,9]] , ... ,   ] ] 

Veri kümesini 2 boyutlu hale getirmek için her görüntüyü 9 öğeden oluşan bir diziye dönüştürebiliriz.

dataset_size = len(training_images) 
TwoDim_dataset = dataset.reshape(dataset_size,-1) 

Bu, aşağıdaki şekle verileri açacak:

[ [1,2,3,4,5,6,7,8,9] , [1,2,3,4,5,6,7,8,9] , ... , [image 10] ]