One-Hot Encoding


One-Hot Encodeとは,クラス変数のクラスに基づいてバイナリ特性を作成し,対応する特性のみを1,残りは0とする方法である.
独立変数(予測変数)がカテゴリ型変数であれば使用できます.
データ解析を行う場合、予測する値が連続型変数ではなく、カテゴリ型変数である場合、解析モデルに適用すると、次のようなエラーが発生します.
ValueError: could not convert string to float
これらのエラーを解決するには、カテゴリ変数を数値に変更する必要があります.
たとえば、次のデータがあるとします.

このDataFrameから、性別や地域は文字列であることがわかります.この場合、回転線形回帰にデータを入れると、上記のエラーが発生します.
この問題を解決するために、性の場合、女性は0に変えることができ、男性は1に変えることができる.
では、地域の状況は?
(ちなみに上のデータエリアには[東北][北西][南東][南西]の4つの値があります.)
どう考えても、順番に0,1,2,3に変換すればいいと思います.
しかし、これらの値は、互いにシーケンスや距離が異なる値ではありません.
この場合One-Hot Encodeが使用されます.
すなわち,カテゴリ型変数が持つ値に従って変数を作成し,自分の位置1のみを変換し,残りは0に変換する.
regionの場合:
'northeast':[1,0,0,0]
'northwest':[0,1,0,0]
'southeast':[0,0,1,0]
「南西」:[0,0,0,1]変換すればいいです.
このような変換の方法では2つ挙げることができる.
pandaのget dummies()関数を使用するか、
import pandas

 region = pd.get_dummies(DataFrame['region'])


sklearn의 OneHotEncoder를 이용하면 된다.

from sklearn.preprocessing import OneHotEncoder onehot = OneHotEncoder(handle_unknown='ignore') region = df['region'].to_numpy().reshape(-1,1) onehot.fit(region) onehot.transform(region).toarray()