web-dev-qa-db-ja.com

Python scikit-learn SVM Classifier "ValueError:Found array with dim 3 Expected <= 2"

MNISTデータセットにSVM分類子を実装しようとしています。私のパラメーターは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は多次元分類子をサポートしていますか?

11
Hitanshu Tiwari

問題は入力データにあります。

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

問題を修正するための1つのオプションは、入力データを2次元配列に再形成することです。

トレーニングデータが、それぞれ3x3行列として表される10個の画像で構成されているため、入力データが3次元であると仮定します。

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

データセットを2次元に変換するために、各画像を9つの要素の配列に変換できます。

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] ]
15
Zahra