Kaggle(19) - カテゴリ変数の変換(One-Hotエンコーディング)

タイタニック・データセットの性別(sex)や乗船地(embarked)は「男・女」「C・Q・S」というカテゴリを表しており、カテゴリ間の大小関係はありません。

これらの変数のことをカテゴリ変数と呼びますが、文字のままでは扱うのが難しいので何らかの変換処理が必要となります。

データの読み込み

タイタニックのデータセットを読み込み、見やすくするために不要な列を削除しておきます。

1
2
3
4
5
6
7
import seaborn as sns
titanic = sns.load_dataset('titanic')

# 不要な列の削除
titanic.drop(['sibsp', 'parch', 'class', 'who', 'adult_male', 'deck', 'embark_town', 'alive', 'alone'], axis=1, inplace=True)

titanic

カテゴリ変数の変換(One-Hotエンコーディング)

性別(sex)項目と乗船地(embarked)項目のカテゴリ変数を変換します。

1
2
import pandas as pd
pd.get_dummies(titanic, columns=['sex', 'embarked'])

Pandasのget_dummies関数を使うと、sex項目の代わりにsex_female / sex_male項目が追加され、embarked項目の代わりにembarked_C / embarked_Q / embarked_S項目が追加されます。

該当する場合に1、非該当の場合に0が設定されます。

このような変換手法をOne-Hotエンコーディングといいます。

(実行環境としてGoogleさんのColaboratoryを使用ています。)