ValueError: Found array with dim 3. Expected <= 2

Scikit-learnでこんなエラーが出たら結構面倒なことになる. 0.15から起こるエラーらしくて,sklearnが受け付ける特徴ベクトルをn_samples x n_featuresのみに制限している. つまりXとして,行列しか受け付けないよ,ということらしい.

sklearn.utils.shuffle does not work with arrays of dim > 2 · Issue #4145 · scikit-learn/scikit-learn · GitHub

上のリンクの議論を読むと,たぶん,このままの仕様で進むと思われる. なので,「allow_ndというパラメータをいじる」という暫定的な解決策ではなくて,自分で定義した特徴抽出器,識別器に工夫する方が多分良い.

僕の場合,特徴抽出の段階ではサンプルとして行列(つまり3次元行列)を入力としていたので,入力の段階ではベクトルに直して,抽出器に入力されたときに,頑張ってreshapeを入れた.

こんなふうに仕様がころころ変わるのは解せない.