今回は、PythonのLabel Encodingにフォーカスします。
前回の記事では、ラベルエンコードがプロセスの最初のステップであるワンホットエンコードの動作と実装を理解しました。
今日は、データ値のカテゴリカルエンコーディングの最も基本的なステップの1つを見てみましょう。
それでは、さっそく始めましょう。
Pythonのラベルエンコードとは?
ラベルエンコードの概念を深く理解する前に、「ラベル」という概念がデータセットに与える影響について理解しましょう。
ラベルとは、特定のエンティティを表す数値や文字列のことです。
ラベルはモデルがデータセットをよりよく理解するのに役立ち、より複雑な構造を学習できるようにします。
推奨 – 機械学習のためのデータセットを標準化するには?
Label Encoderはカテゴリデータのラベルを数値フォーマットに変換します。
例えば、データセットに「Gender」という変数があり、「Male」と「Female」というラベルがある場合、ラベルエンコーダはこれらのラベルを数値フォーマットに変換し、結果は「0,1」になる。
このように、ラベルを整数値に変換することで、機械学習モデルはデータセットの操作に関してより良い理解を得ることができる。
Label Encoding – Syntax to know!
Pythonのsklearnライブラリには、データセットに対してLabel Encodingを行うための関数があらかじめ定義されています。
構文は以下の通りです。
from sklearn import preprocessing
object = preprocessing.LabelEncoder()
|
ここでは、LabelEncoder クラスのオブジェクトを生成し、そのオブジェクトを利用してラベルエンコーディングを行う。
1. sklearnによるラベルエンコード
さっそくラベルエンコードの処理に入ろう。
データセットをエンコードするための最初のステップは、データセットを用意することです。
そこで、ここでは簡単なデータセットを作成します。
import pandas as pd
data = {"Gender":['M','F','F','M','F','F','F'], "NAME":['John','Camili','Rheana','Joseph','Amanti','Alexa','Siri']}
block = pd.DataFrame(data)
print("Original Data frame:)
print(block)
|
ここでは、辞書 ‘data’ を作成し、 pandas.DataFrame() 関数を使って DataFrame に変換しています。
出力は以下の通りです。
Original Data frame: Gender NAME
0 M John
1 F Camili
2 F Rheana
3 M Joseph
4 F Amanti
5 F Alexa
6 F Siri
|
上記のデータセットから、変数 ‘Gender’ には ‘M’ と ‘F’ というラベルがあることがわかります。
さらに、LabelEncoder クラスをインポートし、データセットの変数 ‘Gender’ に適用してみましょう。
from sklearn import preprocessing
label = preprocessing.LabelEncoder()
block['Gender']= label.fit_transform(block['Gender'])
print(block['Gender'].unique())
|
オブジェクトが指すラベルエンコーダの機能をデータ変数に適用するために、 fit_transform() メソッド を使っています。
結果は以下の通りです。
[1 0]
|
つまり、データは [0,1] の整数値のラベルに変換されたことがわかります。
print(block)
|
結果は以下の通りです。
Gender NAME0 1 John
1 0 Camili
2 0 Rheana
3 1 Joseph
4 0 Amanti
5 0 Alexa
6 0 Siri
|
この記事もチェック:Pythonでデータセットから別のデータセットへピボットテーブルを作成する
2. カテゴリコードによるラベルのエンコード
まず、データセットの変数のデータ型を確認しましょう。
block.dtypes |
データ型
Gender object
NAME object
dtype: object
|
ここで、変数’Gender’のデータ型をカテゴリ型に変換してみましょう。
block['Gender'] = block['Gender'].astype('category')
|
block.dtypes |
Gender categoryNAME object
dtype: object
|
次に、pandas.DataFrame.cat.codes関数を使用して、ラベルを整数型に変換してみましょう。
block['Gender'] = block['Gender'].cat.codes
|
print(block)
|
以下のように、変数’Gender’は整数値[0,1]に符号化されました。
Gender NAME0 1 John
1 0 Camili
2 0 Rheana
3 1 Joseph
4 0 Amanti
5 0 Alexa
6 0 Siri
|
まとめ
ここまでで、このトピックは終了です。
何か疑問があれば、お気軽にコメントください。
このトピックをより深く理解するために、Label Encoderの概念を異なるデータセットや変数で実装してみてください。
あなたの経験をコメント欄でお聞かせください。
Pythonに関連するこのような記事のために、ご期待ください、そして、それまで、幸せな学習!!。