Python scikit-learn SVM Classifier " ValueError: найденный массив с dim 3. Ожидаемый
Я пытаюсь реализовать классификатор 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 многомерный классификатор?
2 ответов
проблема с входными данными.
можно использовать 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, и поэтому ваши входные данные трехмерны.
[ [[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] ]