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は多次元分類子をサポートしていますか?
問題は入力データにあります。
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:])
問題を修正するための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] ]