Python でワンホット エンコーディングを実行する方法


ワンホット エンコーディングは、カテゴリ変数を機械学習アルゴリズムで簡単に使用できる形式に変換するために使用されます。

ワンホット コーディングの基本的な考え方は、元のカテゴリ値を表す値 0 と 1 を取る新しい変数を作成することです。

たとえば、次の図は、チーム名を含むカテゴリ変数を 0 と 1 の値のみを含む新しい変数に変換するためにワンホット エンコードする方法を示しています。

次のステップバイステップの例は、Python でこの正確なデータセットに対してワンホット エンコーディングを実行する方法を示しています。

ステップ 1: データを作成する

まず、次のパンダ DataFrame を作成しましょう。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'B', 'B', 'B', 'B', 'C', 'C'],
                   ' points ': [25, 12, 15, 14, 19, 23, 25, 29]})

#view DataFrame
print (df)

  team points
0 to 25
1 to 12
2 B 15
3 B 14
4 B 19
5 B 23
6 C 25
7 C 29

ステップ 2: ワンホット エンコーディングを実行する

次に、 sklearnライブラリからOneHotEncoder()関数をインポートし、それを使用して pandas DataFrame の ‘team’ 変数に対してホット エンコーディングを実行しましょう。

 from sklearn. preprocessing import OneHotEncoder

#creating instance of one-hot-encoder
encoder = OneHotEncoder(handle_unknown=' ignore ')

#perform one-hot encoding on 'team' column 
encoder_df = pd. DataFrame ( encoder.fit_transform (df[[' team ']]). toarray ())

#merge one-hot encoded columns back with original DataFrame
final_df = df. join (encoder_df)

#view final df
print (final_df)

  team points 0 1 2
0 to 25 1.0 0.0 0.0
1 to 12 1.0 0.0 0.0
2 B 15 0.0 1.0 0.0
3 B 14 0.0 1.0 0.0
4 B 19 0.0 1.0 0.0
5 B 23 0.0 1.0 0.0
6 C 25 0.0 0.0 1.0
7 C 29 0.0 0.0 1.0

元の「チーム」列には 3 つの一意の値が含まれていたため、3 つの新しい列が DataFrame に追加されたことに注意してください。

: OneHotEncoder()関数の完全なドキュメントはここで見つけることができます。

ステップ 3: 元のカテゴリ変数を削除する

最後に、元の「team」変数は不要になったので、DataFrame から削除できます。

 #drop 'team' column
final_df. drop (' team ', axis= 1 , inplace= True )

#view final df
print (final_df)

   points 0 1 2
0 25 1.0 0.0 0.0
1 12 1.0 0.0 0.0
2 15 0.0 1.0 0.0
3 14 0.0 1.0 0.0
4 19 0.0 1.0 0.0
5 23 0.0 1.0 0.0
6 25 0.0 0.0 1.0
7 29 0.0 0.0 1.0

関連: Pandas で列を削除する方法 (4 つの方法)

最終的な DataFrame の列の名前を変更して、読みやすくすることもできます。

 #rename columns
final_df. columns = ['points', 'teamA', 'teamB', 'teamC']

#view final df
print (final_df)

   points teamA teamB teamC
0 25 1.0 0.0 0.0
1 12 1.0 0.0 0.0
2 15 0.0 1.0 0.0
3 14 0.0 1.0 0.0
4 19 0.0 1.0 0.0
5 23 0.0 1.0 0.0
6 25 0.0 0.0 1.0
7 29 0.0 0.0 1.0

ワンホット エンコーディングが完了したので、この pandas DataFrame を任意の機械学習アルゴリズムに挿入できるようになりました。

追加リソース

Python でトリミング平均を計算する方法
Python で線形回帰を実行する方法
Python でロジスティック回帰を実行する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です