カテゴリ変数をOne-Hot-Encoding化することは、機械学習やデータサイエンスの実務をおこなっていると頻繁に操作することになると思います。
今回は、One-Hot-EncodingをPythonで実行する方法についてまとめます。
カテゴリ変数とは
カテゴリ変数とは、ある系列が決まった種類のカテゴリの中から1種類だけ選ばれた値になっているような系列の変数を示します。
言葉で説明しても難しいので、Irisデータセットでカテゴリ変数の説明をします。
次のコードでIrisデータセットをダウンロードして、取得したデータセットを表示してみます。
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.datasets import load_iris
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['label'] = iris["target_names"][iris.target]
df
ここで、labelという名前の系列が、カテゴリ変数になります。
よく見ると、setosa、versicolor、virginica の3種類のカテゴリの中から、データ毎にどれか1つが当て込まれているかと思います。このような変数がカテゴリカル変数(カテゴリ変数)です。
ちなみに、Irisはアヤメの花のデータセットで、setosa、versicolor、virginicaは次のような花の種類に相当する(参考までに)
Pythonでカテゴリ変数をOne-Hot-Encodingする
では、Pythonでこのようなカテゴリ変数をOne-Hot-Encodingしてみましょう。
実は、Pythonのpandasライブラリに含まれる、get_dummies関数を利用すると、非常に簡単に、カテゴリ変数をOne-Hot-Enodingすることができます。
実装は次の1行で完了です。
pd.get_dummies(df["label"])
One-Hot Encoding自体は非常によく使うので、get_dummies関数は覚えておくと良いでしょう。