質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

4566閲覧

Found array with dim 3. Estimator expected <= 2

yama0309

総合スコア15

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/01/22 16:15

編集2021/01/27 13:45

前提・実現したいこと

手書きの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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2021/01/23 00:16

pythonのコードの一番最初の行のすぐ上に ```python だけの行を追加してください また、pythonのコードの一番最後の行のすぐ下に ``` だけの行を追加してください 現状、コードがとても読み辛いです
yama0309

2021/01/23 01:19

申し訳ありません。 ```python だけの行を追加の意味が理解できないでいます。何を追加したらよろしいでしょうか。 該当のソースコードには、私が記述したソースをすべて書いています。一部を削って載せている、ということはありません。
jbpb0

2021/01/23 03:28

ここの質問の書き方の話です 実際に実行させるコードではなく ここに質問するコード書くときに、私が書いたようにしてくれないと、他人が質問読んでも、コードが正しく理解できないのです
yama0309

2021/01/23 04:40

編集をしました。表示が変わりましたが、このようにすると皆さんが読みやすいということでしょうか。
jbpb0

2021/01/23 04:57

```python 「だけ」の行にしてください 現状おそらく ```python import... と、同じ行につながってると思います ``` も同様です 現状 predictDigits(data) ``` となってると思いますが、 ``` 「だけ」の行にしてください そうしてもらえたら、行頭のインデント(行の左のスペース)が他人に見えるようになります
yama0309

2021/01/23 05:23

改行する方法に戸惑っておりましたが、行の最後に半角スペースを2つ入れると改行できました。 このような表示にすると問題ないでしょうか。
jbpb0

2021/01/23 08:13

まだおかしいです 最後の ``` ですが、行頭(一番左)にスペースが入ってます 参考のため、 https://teratail.com/questions/317877https://teratail.com/questions/305560 を見てください どちらの質問にもPythonのコードが書かれてますが、見え方がだいぶ違いますよね 前者は、薄いグレーの背景の長方形の中にコードがあり、とても読みやすいです 一方後者は、普通の文章とコードの区別が無く、とても読み難いです 質問者さんのこの質問のPythonコードは、上記の後者の例と同様な見え方なのです それで、前者のように見えるように変えて欲しい、と言ってるわけです
yama0309

2021/01/24 12:38

返信が遅れてしまい申し訳ありません。仰っていることが理解できました。確かにこのようにすると読みやすいです。基礎的なマナーレベルから教えていただきましてありがとうございます。
guest

回答1

0

ベストアンサー

python

1 mumImage = numImage.flatten()

↓ 変更する

python

1 numImage = numImage.flatten()

投稿2021/01/23 10:18

jbpb0

総合スコア7651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yama0309

2021/01/24 12:40

単純な誤字でした。訂正すると、正しく機能しました。 ここでの質問のマナーまでご教授いただきまして大変ありがたかったです。 またよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問