ワンホットエンコード【OneHotEncoder】

・この際にレタス→(1,0,0)、キャベツ→(0,1,0)、ネギ→(0,0,1)のように、それぞれを多次元のベクトルで表現する方法をワンホット表現などと呼びます。
・ワンホット表現を行うことで、変数のすべての値を平等に扱えることが可能になる。
(数字だと大小関係が発生してしまう。)


<手順>

・preprocessing.OneHotEncoder()を用いる。

・ラベルエンコードはOneHotEncoder()を使ってインスタンスを作成。

・インスタンス.fit_transform()としてエンコードしたいデータを指定するとラベルエンコードを行なったデータが返ってくる。

・エンコードした際のラベル名はインスタンス.categories_で取得可能。

In [1]: import pandas as pd

       df = pd.DataFrame({
           '野菜名': ['キャベツ', 'レタス', 'ネギ', 'ネギ', 'ネギ', 'キャベツ']
       })

       df

Out[1]:     野菜名
       0  キャベツ
       1   レタス
       2    ネギ
       3    ネギ
       4    ネギ
       5  キャベツ 
In [2]: from sklearn.preprocessing import OneHotEncoder

       # インスタンスの生成
       enc = OneHotEncoder(sparse=False)

       # ワンホットエンコード
       df = pd.DataFrame(enc.fit_transform(df),columns=enc.categories_)

       df

Out[2]:    キャベツ   ネギ  レタス
       0  1.0  0.0  0.0
       1  0.0  0.0  1.0
       2  0.0  1.0  0.0
       3  0.0  1.0  0.0
       4  0.0  1.0  0.0
       5  1.0  0.0  0.0

この記事が気に入ったらサポートをしてみませんか?