問題タブ [one-hot-encoding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
encoding - バイナリ関連性とワンホットエンコーディングの違いは?
バイナリ関連性は、マルチラベル分類問題に対処するためのよく知られた手法です。この手法では、特徴の可能な値ごとにバイナリ分類子をトレーニングします。
http://link.springer.com/article/10.1007%2Fs10994-011-5256-5
一方、ワン ホット エンコーダー (OHE) は、自然言語処理で一般的に使用され、複数の値をバイナリ ベクトルとして取得するカテゴリ特徴をエンコードします。
http://cs224d.stanford.edu/lecture_notes/LectureNotes1.pdf
この 2 つの概念は同じものと見なすことができますか? それとも技術的な違いはありますか?
scikit-learn - OneHotEncoding マッピング
カテゴリ機能を離散化するために、LabelEncoder と OneHotEncoder を使用しています。LabelEncoder がデータをアルファベット順にマッピングすることは知っていますが、OneHotEncoder はデータをどのようにマッピングするのでしょうか?
dataFeat
上記のように、5 つの異なる列と 4 つの可能なラベルを持つ
pandas データフレームがあります。dataFeat = data[['Feat1', 'Feat2', 'Feat3', 'Feat4', 'Feat5']]
labelencoder
私はこのように適用します、
これは、LabelEncoder によってラベルがエンコードされる方法です。
次に、このように OneHotEncoder を適用します
intIndexed.shape = 94,5
とdataFeatY.shape=94,20
。
の形に少し混乱していますdataFeatY
- それも 95,5 ではないでしょうか?
以下のMhFarahaniの回答に従って、ラベルがどのようにマッピングされているかを確認するためにこれを行いました
これは、ラベルがこのようにマッピングされるということですか、それとも列ごとに異なるということですか? (これは形状が 94,20 であることを説明します)
python - LabelEncoder が値を読み取らないのはなぜですか?
最初に各列を LabelEncoding し、次に列で OneHotEncoding を実行することにより、sklearn の LabelEncoder と OneHotEncoder を使用して、データセットで 1-hot-encoding を実行しようとしています。注: LabelEncoder が欠落しないように、意図的に 2 つの列のデータフレームの行 1 を nan にしています。
コードは次のとおりです。
コードの出力は次のとおりです (ラベル エンコーダーの印刷されたクラスには nan があることに注意してください)。
python-2.7 - Pandas: カテゴリ機能をホット エンコードする方法
X
2 つのカテゴリ機能と 41 の数値機能を持つデータ フレームがあります。合計X
43 の機能があります。
RandomForest
ここで、カテゴリ特徴を数値レベルに変換して、 Classifierで使用できるようにしたいと思います。
私は次のことを行いました。どこで、カテゴリ機能の場所を示します0
:1
次に、これら 2 つのデータ フレームを連結します。
現在、Xnew
63 の機能があります ( F1
18 のF2
機能があり、4 つの機能があり、残りの 41 は からのものですX
)
これは正しいです?同じことを行うより良い方法はありますか?共線性を避けるためにF1
、最初の列を削除する必要がありますか?F2
python - Python Pandas get_dummies() の制限。すべての列を変換しない
データフレームに 6 つの列があります。そのうちの 2 つは、約 3K の一意の値を持っています。get_dummies()
データフレーム全体またはこれらの 2 つの列の 1 つだけで使用すると、返されるのは 3k の値を持つまったく同じ列です。get_dummies
より大きな列のダミー化に失敗します。一部の列はワンホット エンコードされますが、大きな列はエンコードされません。
get_dummies は、カーディナリティが小さいセットでのみ機能するのだろうか。
これはここでも議論されていると思います: Python(pandas) スクリプトのヘルプが必要