0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

💡ラベルエンコーディングとone-hotエンコーディングの使い分け

Last updated at Posted at 2025-06-01

はじめに

機械学習では、文字列や色といった「そのままでは数値処理できないデータ」を扱わなければいけない場面があることも多いでしょう。例えば「東京」「大阪」「福岡」などの都市名や「赤」「青」「緑」といった色を表すデータです。

こうしたデータを数値に変換する代表的な方法が以下の2つ。

  • ラベルエンコーディング(Label Encoding)
  • one-hotエンコーディング(One-Hot Encoding)

この記事では、それぞれの特徴や違い、どう使い分ければいいのかを初心者向けにわかりやすく解説します。

ラベルエンコーディングとは?

簡単に説明すると、カテゴリごとに整数ラベルを割り当てる方法です。

色に対してラベルエンコーディングを行った例は以下の通りです。

from sklearn.preprocessing import LabelEncoder

colors = ['赤', '青', '緑', '赤', '青']
le = LabelEncoder()
encoded = le.fit_transform(colors)
print(encoded)  # [0 1 2 0 1]

メリット

  • データの次元が増えない
  • 実装がシンプルで簡単

デメリット

  • モデルが順序関係があると誤解する可能性がある

one-hotエンコーディングとは?

簡単に説明すると、ダミー変数を用いたエンコーディング方法です。
色に対してone-hotエンコーディングを行った例は以下の通りです。

import pandas as pd

colors = ['赤', '青', '緑', '赤', '青']
df = pd.DataFrame({'color': colors})
one_hot = pd.get_dummies(df, columns=['color'])
print(one_hot)

メリット

  • 数値的な順序を持たないため、モデルが誤解しにくい

デメリット

  • カテゴリが多いと次元(列数)が爆発的に増える

どう使い分ければいいのか

原則の使い分け

カテゴリに順序があるかどうかで使い分けるのが基本です。

条件 適した手法
カテゴリに意味のある順序がある ラベルエンコーディング
カテゴリに順序がない One-Hotエンコーディング

具体例

「評価(低・中・高)」のように意味のある順序 → ラベルエンコーディング

「色(赤・青・緑)」のように順序がない → one-hotエンコーディング

モデルごとの相性

モデルによって、どちらのエンコーディングが適しているかが異なります。

モデル 推奨される手法 補足
決定木 / ランダムフォレスト ラベルでもOK 木構造は順序を誤解しにくい
線形回帰 / ロジスティック回帰 One-Hot推奨 数値の大小が意味を持ってしまうため注意
ニューラルネットワーク One-HotまたはEmbedding カテゴリ数やデータ量に応じて選択

まとめ

カテゴリデータを前処理するときは、以下の2点を意識すると良いでしょう!

  • このカテゴリに順序はあるのか?
  • どのモデルを使う予定か?

この2点を押さえることで、モデルの精度や学習効率を大きく左右する前処理を、より適切に行うことができます。

この記事が、エンコーディング手法の選択に迷ったときの参考になれば嬉しいです!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?