2016-07-16 17 views
6

私はsklearn LabelEncoderとpandas get_dummiesの違いを知りたかったのです。なぜ、get_dummiesよりLabelEncoderを選択するのでしょうか? 1つを別のものに使用する利点は何ですか?欠点?Sklearn LabelEncoderとpd.get_dummiesの違いは何ですか?

私の知る限り理解し、私はクラスを持っている場合

ClassA = ["Apple", "Ball", "Cat"] 
encoder = [1, 2, 3] 

dummy = [001, 010, 100] 

私が間違ってこれを理解するだろうか?

+2

「get_dummies」に相当するのは['OneHotEncoder'](http://scikit-learn.org/stable/modules/generated/sklearn)です。途中でpreprocessing.OneHotEncoder.html)。 – ayhan

答えて

3

これらは、これらの2つのライブラリがそれぞれ処理する傾向に自然に降ろす便利な機能です。最初のものは、物を整数に変更することによって情報を「凝縮」し、2番目のものは次元を「拡張」して、(場合によっては)より便利なアクセスを可能にします。 1、K、クラスの数である - そのドメインは、が0、...、Kであるよう


sklearn.preprocessing.LabelEncoderは、単に、どのドメインから、データを変換します。

ので、例えば

["paris", "paris", "tokyo", "amsterdam"] 

[0, 0, 1, 2] 

pandas.get_dummiesになる可能性はまた、いくつかのドメインからの要素を持つシリーズがかかりますが、その列のエントリに対応してデータフレームに展開しますシリーズの中では、値は0または1です。したがって、たとえば、同じ

["paris", "paris", "tokyo", "amsterdam"] 

はの主な利点ラベル

["paris", "tokyo", "amsterdam"] 

とその"paris"エントリーシリーズ

[1, 1, 0, 0] 

だろうとのデータフレームになります第1の方法は、それがスペースを節約することである。逆に、整数を符号化すると、オーダーが何かを意味する印象を与えることがあります(あなたや一部の機械学習アルゴリズムに)。 「アムステルダム」は整数エンコーディングのためだけに「パリ」よりも「東京」に近いですか?おそらくない。第2の表現は、それについて少し明確です。

+0

説明していただきありがとうございます。分類問題に取り組む場合は、レスポンス変数にget_dummyを使用するか、Labelエンコーダを使用する方が良いでしょうか? – Sam

+0

経験則として、クラスに自然順序がない場合はダミー変数が使用されますが、主な考慮事項はアルゴリズムの実装が期待するものです。ちょっとした問題と、使用する予定の特定の分類(できればライブラリ内の特定の関数を指定することさえある)を記述する別の質問を開くことができます。 –

0

pandas.get_dummiesはワンホットエンコーディングですが、sklearn.preprocessing.LabelEncoder

ワンホットエンコーディングは、機械学習に適している、など0,1,2,3,4など、...インクリメンタルエンコーディングです。ラベルは互いに独立しているため、 2は、その値の2倍を意味するものではありません。

トレーニングセットとテストセットで同じ機能のクラス数が異なる場合は、Keep same dummy variable in training and testing dataで2つの解決策を参照してください。

関連する問題