python sklearn MinMaxScalarの入力データを reshapeするときのエラー
以前みたいに入力に無頓着には済まされなくなった
(224, )
みたいな形の入力を受け付けていた以前のヴァージョン(現在は0.20.3)とは異なり, ちゃんとエラーを吐くようになった.
例えば,
ValueError: Expected 2D array, got 1D array instead: array=[1.85268248 2.95032978 2.37982995 ... 2.92069693 2.33497796 3.37038089]. Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
なるほどねreshapeね.(くらいにしか読まなかったので苦労した)
大事なのは行列が1行なのか1列なのかということ
もう一度エラー分を見てみたい.
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
reshapeすりゃええか, ではなくちゃんと書いてある. 1つの特徴量しか使わない場合は array.reshape(-1, 1)
,
1つのサンプルだけで入力したいときは array.reshape(1, -1)
を使いましょうと.
これを間違えて,逆に(1列行列を作るべきところを1行行列を入力させてしまうと)すると次のような不思議なエラーが出てきてしまう.
ValueError: non-broadcastable output operand with shape (1024,1) doesn't match the broadcast shape (1024,1024)
もはやここまで来てしまうと, エラー文から間違いを探すのは厳しい. 実際に検索してみたが, 有用な情報は全く出てこなかった.
エラー文をよく読まないと1日が溶けてしまう
最近のライブラリたちはエラー文が丁寧になっていて, よく読まずにコピペして検索したほうがほしい情報が得られるやすい,という ちょっと昔の技だけでもないと痛感させられた.以後注意します.