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

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

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

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

Python

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

Q&A

解決済

2回答

17533閲覧

Found array with dim 3. Estimator expected <= 2.

退会済みユーザー

退会済みユーザー

総合スコア0

機械学習

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

Python

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

0グッド

0クリップ

投稿2018/06/10 08:53

編集2018/06/10 09:44

イメージ説明

イメージ説明
イメージ説明

上記のようにndimは2以下なのですが、Found array with dim 3. Estimator expected <= 2.と言われてしまいます。
原因がわかる方いらっしゃいましたら、お願いします。

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

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

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

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

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

guest

回答2

0

<原因の分析>
Traceback(エラーが生じた経緯の遡り)を読んでゆきましょう。
"most recent call last"(最近の呼び出しが、最後)なので、下のほうから
[3] check_array関数の実行中に、"not allow_nd"と"array.ndim>=3"の2条件が共に成立したため、ValueErrorの例外が生じました(コードの449,450行目)。 arrayはcheck_array関数の第一仮引数です。

[2] fit関数の実行中に、check_array関数が呼び出されています。check関数の第1仮引数であるarrayに渡される実引数はfit関数の第一引数 X、allow_ndに関する記述が無いのでFALSEが渡されます。check_array関数の中で"not allow_nd"が成立した原因はここにあります。

[1] fit関数は、第一引数を train_data 、第2引数を train_labels として呼び出されています。

===
発生順に並び変えると、
fit関数が第一引数を train_data として呼び出された。
fit関数の第一引数(仮引数名は X)は、fit関数の中で check_array関数の第一引数として使われた。
check_array関数の第一引数(仮引数名は array)はcheck_array関数の中で、"array.ndim>=3"の式の評価に使われた結果がTRUEだったので例外を発生した。
これは、array.ndimが3以上であったことを示しており、元をたどるとfit関数の第一引数であるtrain_dataの ndim が3以上であったことを示している。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
質問の「上記のようにndimは2以下なのですが」の行の上に書かれた数字の羅列は、for a in train_data: と for b in train_labels:、2つのfor文で書き出されたものなのでしょう。
"ndimは2以下なのです"が、16行ある(16個ある)"2"の事を指しているのだとすれば、"train_data
.ndim=16"という事になります。 "16 >= 3"は、TRUEになりますよね。

以上が質問で示された内容から判ることの全てだと思います。

この回答が問題解決のヒントになることを祈ります。

投稿2018/06/10 09:51

coco_bauer

総合スコア6915

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

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

coco_bauer

2018/06/10 10:00 編集

"print train_data"で、train_dataの内容を示してください。 上記回答では ndim を (Number of Data IteM(要素数)だと推測していますが、ndimが何なのかも説明してください。 ndimがNumber of Dimentions(配列の次元数)なのだとすると、要素が二次元配列である配列 train_data の次元数は3次元となります。
hayataka2049

2018/06/10 10:10

ndimはn次元配列の方です。numpyのドキュメントに説明があると思います
退会済みユーザー

退会済みユーザー

2018/06/10 13:52

回答ありがとうございます!参考になりました。
guest

0

ベストアンサー

Xのndimを2にする必要があります。そのコードだとforで1減ったのが見えていて、3です。

追記

状況的には、たぶんこんな感じになっています。

python

1>>> import numpy as np 2>>> a = np.arange(27).reshape((3,3,3)) # shapeは適当。質問者様のXとは違うと思います 3>>> a 4array([[[ 0, 1, 2], 5 [ 3, 4, 5], 6 [ 6, 7, 8]], 7 8 [[ 9, 10, 11], 9 [12, 13, 14], 10 [15, 16, 17]], 11 12 [[18, 19, 20], 13 [21, 22, 23], 14 [24, 25, 26]]]) 15>>> a.ndim 163 17>>> for x in a: 18... print(x) 19... print(x.ndim) 20... 21[[0 1 2] 22 [3 4 5] 23 [6 7 8]] 242 25[[ 9 10 11] 26 [12 13 14] 27 [15 16 17]] 282 29[[18 19 20] 30 [21 22 23] 31 [24 25 26]] 322

どう直せばよいかと言うと、Xの形式に依存します。質問の画像を見る限り、こんなshapeになっているような気がします。

python

1>>> a = np.arange(27).reshape((9,1,3)) 2>>> a 3array([[[ 0, 1, 2]], 4 5 [[ 3, 4, 5]], 6 7 [[ 6, 7, 8]], 8 9 [[ 9, 10, 11]], 10 11 [[12, 13, 14]], 12 13 [[15, 16, 17]], 14 15 [[18, 19, 20]], 16 17 [[21, 22, 23]], 18 19 [[24, 25, 26]]])

python

1>>> a.reshape((a.shape[0], -1)) 2array([[ 0, 1, 2], 3 [ 3, 4, 5], 4 [ 6, 7, 8], 5 [ 9, 10, 11], 6 [12, 13, 14], 7 [15, 16, 17], 8 [18, 19, 20], 9 [21, 22, 23], 10 [24, 25, 26]])

 こんな操作でいけたりしないかなぁ(当然Xに対してこれをやる)。あるいは、データ読み込み段階でこの形になるように書き換えるか。

投稿2018/06/10 09:25

編集2018/06/10 10:56
hayataka2049

総合スコア30933

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

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

退会済みユーザー

退会済みユーザー

2018/06/10 09:45

すみません、よくわかりませんでした。具体的にどのような処理を行えば良いのでしょうか?
hayataka2049

2018/06/10 10:56

一応追記してみました。参考にしてみてください
退会済みユーザー

退会済みユーザー

2018/06/10 13:53

とても丁寧にありがとうございます。うまくいきました。 またよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問