Python(sklearn)でラベルエンコードの実装をする方法

スポンサーリンク

今回は、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

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に関連するこのような記事のために、ご期待ください、そして、それまで、幸せな学習!!。

タイトルとURLをコピーしました