【Python】ValueError: Supported target types are: (‘binary’, ‘multiclass’)を解決する方法【Solved】

スポンサーリンク

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ベクトルから普通の整数値ベクトルに変換する必要がある。
その方法は↓で紹介しているのでそれを使う。

参考

今回の問題を解決するにあたって以下を参考にした。

Sklearn StratifiedKFold: ValueError: Supported target types are: ('binary', 'multiclass'). Got 'multilabel-indicator' instead
Working with Sklearn stratified kfold split, and when I attempt to split using multi-class, I received on error (see below). When I tried and split using binar...
タイトルとURLをコピーしました