前提・実現したいこと
手書きの2.pngを読み込ませて認識させたいです。
エラーメッセージが出たのですが、このエラーの原因を読み取ることができません。解決方法のご教授を賜りたいです。
発生している問題・エラーメッセージ
python
1 2ValueError Traceback (most recent call last) 3<ipython-input-15-85530f999029> in <module> 4 30 data = imageToData("2.png") 5 31 # 数字を予測する 6---> 32 predictDigits(data) 7 8<ipython-input-15-85530f999029> in predictDigits(data) 9 24 clf.fit(digits.data, digits.target) 10 25 #予測結果を表示する 11---> 26 n = clf.predict([data]) 12 27 print("予測=",n) 13 28 14 15c:\users\name\appdata\local\programs\python\python38-32\lib\site-packages\sklearn\svm\_base.py in predict(self, X) 16 622 y = np.argmax(self.decision_function(X), axis=1) 17 623 else: 18--> 624 y = super().predict(X) 19 625 return self.classes_.take(np.asarray(y, dtype=np.intp)) 20 626 21 22c:\users\name\appdata\local\programs\python\python38-32\lib\site-packages\sklearn\svm\_base.py in predict(self, X) 23 340 y_pred : ndarray of shape (n_samples,) 24 341 """ 25--> 342 X = self._validate_for_predict(X) 26 343 predict = self._sparse_predict if self._sparse else self._dense_predict 27 344 return predict(X) 28 29c:\users\name\appdata\local\programs\python\python38-32\lib\site-packages\sklearn\svm\_base.py in _validate_for_predict(self, X) 30 472 31 473 if not callable(self.kernel): 32--> 474 X = check_array(X, accept_sparse='csr', dtype=np.float64, 33 475 order="C", accept_large_sparse=False) 34 476 35 36c:\users\name\appdata\local\programs\python\python38-32\lib\site-packages\sklearn\utils\validation.py in inner_f(*args, **kwargs) 37 61 extra_args = len(args) - len(all_args) 38 62 if extra_args <= 0: 39---> 63 return f(*args, **kwargs) 40 64 41 65 # extra_args > 0 42 43c:\users\name\appdata\local\programs\python\python38-32\lib\site-packages\sklearn\utils\validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, estimator) 44 657 "into decimal numbers with dtype='numeric'") from e 45 658 if not allow_nd and array.ndim >= 3: 46--> 659 raise ValueError("Found array with dim %d. %s expected <= 2." 47 660 % (array.ndim, estimator_name)) 48 661 49 50ValueError: Found array with dim 3. Estimator expected <= 2. 51
該当のソースコード
python
1 2import sklearn.datasets 3import sklearn.svm 4import PIL.Image 5import numpy 6 7 画像ファイルを数値リストに変換する 8def imageToData(filename): 9 10 画像を8x8のグレースケールに変換 11 grayImage = PIL.Image.open(filename).convert("L") 12 grayImage = grayImage.resize((8,8),PIL.Image.ANTIALIAS) 13 14 数値リストに変換 15 numImage = numpy.asarray(grayImage, dtype = float) 16 numImage = numpy.floor(16 - 16 * (numImage / 256)) 17 mumImage = numImage.flatten() 18 19 return numImage 20 21数字を予測する 22def predictDigits(data): 23 学習用データを読み込む 24 digits = sklearn.datasets.load_digits() 25 機械学習する 26 clf = sklearn.svm.SVC(gamma = 0.001) 27 clf.fit(digits.data, digits.target) 28 予測結果を表示する 29 n = clf.predict([data]) 30 print("予測=",n) 31 32画像ファイルを数値リストに変換する 33data = imageToData("2.png") 34 数字を予測する 35predictDigits(data) 36
回答1件
あなたの回答
tips
プレビュー