前提・実現したいこと
scikit-learnの中にあるdigitsを用いて手書き文字認識を行いたいと考えています。
以下の画像は認識を行いたい画像データ群です。
ここで、digitsが8×8の大きさなので、認識を行いたい画像群も同じ8×8にしています。
まず、digitsデータとテストを行いたい画像群をロードし、digitsデータを訓練画像とし、svmでモデルを作成しています。
そして、テストを行いたい画像群でテストを行っています。
そこで、エラーが発生し、止まっています。
よければ、ご教授お願い致します。
発生している問題・エラーメッセージ
エラーメッセージは以下の通りです。
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-61-39a29d96a6f9> in <module> 31 32 # 分類器を使ってテストデータを分類する ---> 33 predicted_A = clf.predict(test_data_A) 34 35 # 分類結果を表示する C:\ProgramData\Anaconda3\lib\site-packages\sklearn\svm\base.py in predict(self, X) 565 Class labels for samples in X. 566 """ --> 567 y = super(BaseSVC, self).predict(X) 568 return self.classes_.take(np.asarray(y, dtype=np.intp)) 569 C:\ProgramData\Anaconda3\lib\site-packages\sklearn\svm\base.py in predict(self, X) 323 y_pred : array, shape (n_samples,) 324 """ --> 325 X = self._validate_for_predict(X) 326 predict = self._sparse_predict if self._sparse else self._dense_predict 327 return predict(X) C:\ProgramData\Anaconda3\lib\site-packages\sklearn\svm\base.py in _validate_for_predict(self, X) 476 raise ValueError("X.shape[1] = %d should be equal to %d, " 477 "the number of features at training time" % --> 478 (n_features, self.shape_fit_[1])) 479 return X 480 ValueError: X.shape[1] = 192 should be equal to 64, the number of features at training time
該当のソースコード
#モジュールインポート import os import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from skimage import data import cv2 as cv2 from sklearn.externals import joblib from sklearn import svm #digitsデータをロード digits = datasets.load_digits() #テストデータをロード feature = np.array([data.imread(f'img/suuji_1/{path}') for path in os.listdir('img/suuji_1')]) feature = feature.reshape(len(feature), -1).astype(np.float64) #先頭から1796件をトレーニングデータとする train_data, train_target = digits.data[0:1796], digits.target[0:1796] #分類器の作成。SVMというアルゴリズムを選択 clf = svm.SVC(gamma=0.001, C=100.) #分類器に手書き数字データと正解ラベルの訓練データを与えて学習させる clf.fit(train_data, train_target) # テストデータとしてimg_1フォルダ内の画像を与える test_data_A = feature.data[0:9] # 分類器を使ってテストデータを分類する predicted_A = clf.predict(test_data_A) # 分類結果を表示する print(test_data_A)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/22 23:40
2019/05/23 00:14
2019/05/23 11:58