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

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

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

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

機械学習

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

Python

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

解決済

Found array with dim 3. Estimator expected <= 2

yama0309
yama0309

総合スコア15

NumPy

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

機械学習

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

Python

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

1回答

0評価

0クリップ

2141閲覧

投稿2021/01/22 16:15

編集2021/01/27 13:45

前提・実現したいこと

手書きの2.pngを読み込ませて認識させたいです。
エラーメッセージが出たのですが、このエラーの原因を読み取ることができません。解決方法のご教授を賜りたいです。

発生している問題・エラーメッセージ

python

ValueError Traceback (most recent call last) <ipython-input-15-85530f999029> in <module> 30 data = imageToData("2.png") 31 # 数字を予測する ---> 32 predictDigits(data) <ipython-input-15-85530f999029> in predictDigits(data) 24 clf.fit(digits.data, digits.target) 25 #予測結果を表示する ---> 26 n = clf.predict([data]) 27 print("予測=",n) 28 c:\users\name\appdata\local\programs\python\python38-32\lib\site-packages\sklearn\svm\_base.py in predict(self, X) 622 y = np.argmax(self.decision_function(X), axis=1) 623 else: --> 624 y = super().predict(X) 625 return self.classes_.take(np.asarray(y, dtype=np.intp)) 626 c:\users\name\appdata\local\programs\python\python38-32\lib\site-packages\sklearn\svm\_base.py in predict(self, X) 340 y_pred : ndarray of shape (n_samples,) 341 """ --> 342 X = self._validate_for_predict(X) 343 predict = self._sparse_predict if self._sparse else self._dense_predict 344 return predict(X) c:\users\name\appdata\local\programs\python\python38-32\lib\site-packages\sklearn\svm\_base.py in _validate_for_predict(self, X) 472 473 if not callable(self.kernel): --> 474 X = check_array(X, accept_sparse='csr', dtype=np.float64, 475 order="C", accept_large_sparse=False) 476 c:\users\name\appdata\local\programs\python\python38-32\lib\site-packages\sklearn\utils\validation.py in inner_f(*args, **kwargs) 61 extra_args = len(args) - len(all_args) 62 if extra_args <= 0: ---> 63 return f(*args, **kwargs) 64 65 # extra_args > 0 c:\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) 657 "into decimal numbers with dtype='numeric'") from e 658 if not allow_nd and array.ndim >= 3: --> 659 raise ValueError("Found array with dim %d. %s expected <= 2." 660 % (array.ndim, estimator_name)) 661 ValueError: Found array with dim 3. Estimator expected <= 2.

該当のソースコード

python

import sklearn.datasets import sklearn.svm import PIL.Image import numpy 画像ファイルを数値リストに変換する def imageToData(filename): 画像を8x8のグレースケールに変換 grayImage = PIL.Image.open(filename).convert("L") grayImage = grayImage.resize((8,8),PIL.Image.ANTIALIAS) 数値リストに変換 numImage = numpy.asarray(grayImage, dtype = float) numImage = numpy.floor(16 - 16 * (numImage / 256)) mumImage = numImage.flatten() return numImage 数字を予測する def predictDigits(data): 学習用データを読み込む digits = sklearn.datasets.load_digits() 機械学習する clf = sklearn.svm.SVC(gamma = 0.001) clf.fit(digits.data, digits.target) 予測結果を表示する n = clf.predict([data]) print("予測=",n) 画像ファイルを数値リストに変換する data = imageToData("2.png") 数字を予測する predictDigits(data)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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

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

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

NumPy

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

機械学習

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

Python

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