web-dev-qa-db-fra.com

Python scikit-learn SVM Classifier "ValueError: tableau trouvé avec dim 3. Attendu <= 2"

J'essaie d'implémenter SVM Classifier sur l'ensemble de données MNIST. Comme mes paramètres sont en 3 dimensions, cela génère l'erreur suivante:

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

Voici mon extrait de code:

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)

Sklearn prend-il en charge un classificateur multidimensionnel?

11
Hitanshu Tiwari

Le problème vient de vos données d'entrée.

Vous pouvez également utiliser sklearn pour charger un jeu de données numériques:

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:])
9
Ryan

Une option pour résoudre le problème serait de remodeler les données d'entrée dans un tableau à deux dimensions.

Supposons que vos données d'entraînement se composent de 10 images qui sont chacune représentées comme une matrice 3x3 et que vos données d'entrée sont donc en 3 dimensions.

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

Nous pouvons transformer chaque image en un tableau de 9 éléments afin de convertir l'ensemble de données en 2 dimensions.

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

Cela transformerait les données sous la forme suivante:

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