Python scikit-learn SVM Classifier "ValueError: найден массив с тусклым 3. Ожидаемый <= 2"
Я пытаюсь реализовать SVM-классификатор над набором данных MNIST.
Поскольку мои параметры 3-мерные, он выдает следующую ошибку:
ValueError: Found array with dim 3. Expected <= 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)
Поддерживает ли sklearn многомерный классификатор?
Ответы
Ответ 1
Проблема заключается в ваших входных данных.
Вы можете использовать sklearn
для загрузки набора данных цифр:
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:])
Ответ 2
Одним из вариантов устранения проблемы было бы преобразование входных данных в двумерный массив.
Предположим, что ваши учебные данные состоят из 10 изображений, каждый из которых представлен как матрица 3x3, и поэтому ваши входные данные 3-мерные.
[ [[1,2,3], [[1,2,3], [
[4,5,6], [4,5,6], image 10
[7,8,9]] , [7,8,9]] , ... , ] ]
Мы можем превратить каждое изображение в массив из 9 элементов, чтобы преобразовать набор данных в 2-мерные.
dataset_size = len(training_images)
TwoDim_dataset = dataset.reshape(dataset_size,-1)
Это превратит данные в следующую форму:
[ [1,2,3,4,5,6,7,8,9] , [1,2,3,4,5,6,7,8,9] , ... , [image 10] ]