Подтвердить что ты не робот

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 многомерный классификатор?

4b9b3361

Ответ 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] ]