現在猫犬画像の分類を行っているのですが過学習が起こり気味なので調べた一つの手法としてアンサンブル学習が見つかりました。
そこでこれを実装したいのですが今の私の環境から行ってどのように実装すれば良いかわからないのでアドバイスをいただきたいです。
現在は猫犬画像をopencvの環境で一つ一つの画像をimread,resize正規化して
onehotで猫、犬、その他のラベル付けをしています。
[1,0,0]
その画像をnumpy.asarrayで配列化していて学習データとしているのですが
ためしにskf = StratifiedKFold(n_splits=fold_num)として
for train, test in skf.split(x_add,y_add):
このときx_addは全ての学習データのasarrayが入っています。
y_addには全てのonehotラベルの入っています。
例:[[1,0,0],[0,0,1],[0,1,0],[0,0,1],...[1,0,0]]
この結果
File "kml_train_4.py", line 131, in <module> for train, test in skf.split(x_add,y_add): File "/Users/hoge/.pyenv/versions/anaconda3-4.3.1/envs/opencvtest/lib/python3.5/site-packages/sklearn/model_selection/_split.py", line 322, in split for train, test in super(_BaseKFold, self).split(X, y, groups): File "/Users/hoge/.pyenv/versions/anaconda3-4.3.1/envs/opencvtest/lib/python3.5/site-packages/sklearn/model_selection/_split.py", line 91, in split for test_index in self._iter_test_masks(X, y, groups): File "/Users/hoge/.pyenv/versions/anaconda3-4.3.1/envs/opencvtest/lib/python3.5/site-packages/sklearn/model_selection/_split.py", line 610, in _iter_test_masks test_folds = self._make_test_folds(X, y) File "/Users/hoge/.pyenv/versions/anaconda3-4.3.1/envs/opencvtest/lib/python3.5/site-packages/sklearn/model_selection/_split.py", line 597, in _make_test_folds cls_test_folds = test_folds[y == cls] IndexError: too many indices for array
とされてしまいましたがどうにかして実装したいのですがいい方法はないでしょうか?
足りない情報は補足いたしますが、コード全文は記述できませんすみません。
回答2件
あなたの回答
tips
プレビュー