2016-11-13 4 views
1

私は10クラスとマルチクラス分類タスクを持っています。そのように、私は10列のラベルに一列ラベルを変換するためにsklearnのOneHotEncoderを使用しました。私はトレーニングデータに合わせようとしていました。は、どのように私はいくつかのsklearnの分類とワンホットエンコードされたラベルを使用することができますか?

GaussianNB:

私は、これら2つの分類では、yの許可形状が異なっている理解

ValueError: bad input shape (1203L, 10L) 

:私はRandomForestClassifierでこれを行うことができたが、ときGaussianNBとのフィッティング、私は以下のエラーメッセージが表示されました

y : array-like, shape (n_samples,) 

ランダムフォレスト:

y : array-like, shape = [n_samples] or [n_samples, n_outputs] 

質問は、これはなぜですか?これは"All classifiers in scikit-learn do multiclass classification out-of-the-box"と矛盾しませんか?どのような方法でそれを回る?ありがとう!

答えて

2

疑問は、なぜこれがあるのですか?

それはあなたが文字通り

を渡すわずかmissunderstandingの、scikit-学ぶあなたがいないエンコードラベルを行う に、あなたはラベルの1次元ベクトルとしてそれを渡すためで、これの代わりに、

1 0 0 
0 1 0 
0 0 1 

1 2 3 

なぜランダムフォレストは、異なるスキームを受け付けていますか?それはマルチクラス設定のではありませんので!これはと矛盾することはないでしょう

1 1 0 
1 1 1 
0 0 0 

などの各インスタンスは、多くのラベルを持つことができますマルチラベル、のためである「のすべての分類マルチクラス分類を行うscikitが習得アウト・オブ・ボックス」 ?

反して - その周りに行くための任意の方法、それはマルチラベルでない限り、ワンホットを求めることはありませんする、

- 最も簡単な解決策とは?

うん、ちょうどコードしない - グレート

+0

:-)生のラベルを渡します。明確化のためにありがとう! –

関連する問題