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?
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:])
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] ]