ValueError: Supported target types are: (‘binary’, ‘multiclass’)を解決する方法
Pythonのsklearnでデータ分析をするときにStratifiedKFoldを使った際に以下のエラーが出たので、その原因と解決方法をここでまとめておく。
ValueError: Supported target types are: ('binary', 'multiclass'). Got 'multilabel-indicator' instead
今回は、同じデータを分析するのにKFoldを使ったときにはエラーが出なかったのにStratifiedKFoldを使ったときに出てきた。
原因
エラー内容の通り、正解ラベルの方のデータが(‘binary’, ‘multiclass’)ではなく‘multilabel-indicator’であるから。
‘multilabel-indicator’は以下のようなもの。
[[1. 0.]
[0. 1.]
[0. 1.]
[1. 0.]]
(‘binary’, ‘multiclass’)は以下のようなもの。
[0 0 1 0]
原因としては、正解ラベルをOne-hotベクトルに変換していたために‘multilabel-indicator’の形式になっていたようだ。
StratifiedKFoldでは、yのラベルが整数型になっていないといけないようだ。
KFoldではどちらでも大丈夫そう。
解決法
エラーの解決方法としては、正解ラベルを(‘binary’, ‘multiclass’)の形式に変換してやることで解決。
ここではOne-hotベクトルから普通の整数値ベクトルに変換する必要がある。
その方法は↓で紹介しているのでそれを使う。
参考
今回の問題を解決するにあたって以下を参考にした。
Attention Required! | Cloudflare