今回は、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 NAME 0 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 category NAME object
dtype: object
|
次に、pandas.DataFrame.cat.codes
関数を使用して、ラベルを整数型に変換してみましょう。
block[ 'Gender' ] = block[ 'Gender' ].cat.codes
|
print (block)
|
以下のように、変数’Gender’は整数値[0,1]に符号化されました。
Gender NAME 0 1 John
1 0 Camili
2 0 Rheana
3 1 Joseph
4 0 Amanti
5 0 Alexa
6 0 Siri
|
まとめ
ここまでで、このトピックは終了です。
何か疑問があれば、お気軽にコメントください。
このトピックをより深く理解するために、Label Encoderの概念を異なるデータセットや変数で実装してみてください。
あなたの経験をコメント欄でお聞かせください。
Pythonに関連するこのような記事のために、ご期待ください、そして、それまで、幸せな学習!!。