データプリプロセッシングのユニホットコーディング

1498 ワード

データプリプロセッシングのユニサーマルコーディング(One-Hot Encoding)
**定義**One-Hot EncodingすなわちOne-Hot符号化は、独熱符号化とも呼ばれ、有効符号化とも呼ばれ、Nビット状態レジスタを用いてN個の状態を符号化する方法であり、各状態は独立したレジスタビットであり、いずれの場合も1ビットのみ有効である.
**問題解決**分類器はデータデータが連続していることが多く、秩序があることが多いが、多くの機械学習タスクでは離散(分類)特徴が多く存在するため、特徴値を数値に変換する場合も不連続であることが多く、One-Hot符号化はこの問題を解決した.
**Case*——Supposeはすでに3つのfeatureを知っていて、3つのfeatureはそれぞれ以下の値を取ります:
feature1=[“male”, “female”]
feature2=[“from Europe”, “from US”, “from Asia”]
feature3=[“uses Firefox”, “uses Chrome”, “uses Safari”, “uses Internet Explorer”]
各特徴の値を整数0からmarkし,この3種類のfeatureから1つのfeatureをabstracting−feature−setとして抽出した.e.g:
["male","from US","uses Internet Explorer"]is markedは[0,1,3]
[[female],[from Asia],[uses Chrome]]is markedは[1,2,1]
Q:[0,1,3]対応するOne-Hotコードを求めますか?
QA:各特徴について、m個の可能な値がある場合、独熱符号化(アクティブ化)後、m個の二元特徴になります.
まず、各特徴の各値のmarkは、対応する2進数、例えば0−00,1−01,2−10,3−11に変換され、次いで、特徴値の特徴クラスにおける位置に従って対応するOne−Hot符号化が計算され、例えばfeature 3に対してそれぞれ0−0001,1−0010,2−0100,3−1000が得られる.
3つの特徴の値が反発するため,毎回1つだけアクティブ化される.そのため、データはまばらになります.ここで非アクティブ化の特徴値は0000で表される.
従って、[0,1,3]に対応するOne-Hot符号化は、
[0001,0000,0000,0010,0000,0000,0000,0000,1000]
[1.,0.,0.,0.,1.,0.,0.,0.,0.,1.]と略すことができる.
手順は次のとおりです.
from sklearn import preprocessing

enc = preprocessing.OneHotEncoder()

enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])

enc.transform([[0, 1, 3]]).toarray()