14.Pythonではじめるデータ分析:宿泊価格予測入門-ダミー変数化編-

PR表記

※アフィリエイト広告を利用しています

どうもニコイチです。前回までで、データの読み込みや簡単な集計、グラフ化を学びました。今回は、ダミー変数化という少し特殊なデータ加工テクニックを学びます。これは、質的なデータを数値データに変換する上で非常に重要なステップです。

「質的データ?」「量的データ?」という方もいると思うので、まずはそこから説明しますね。

全編はこちらから

目次

質的データと量的データ

  • 質的データ: 文字や記号で表されるデータのことです。「カテゴリデータ」とも呼ばれます。例:
    • 血液型(A型、B型、O型、AB型)
    • 好きな色(赤、青、黄)
    • 今回使うデータでは、部屋のタイプ(room_type)やベッドのタイプ(bed_type)などがあります。
  • 量的データ: 数値で表されるデータのことです。例:
    • 身長(170cm)
    • 体重(60kg)
    • 今回使うデータでは、宿泊人数(accommodates)やバスルームの数(bathrooms)、掃除料金(cleaning_fee)などがあります。

ダミー変数化とは?

ダミー変数化とは、質的データを量的データに変換する魔法のようなテクニックです。なぜこんなことをする必要があるのでしょうか?それは、重回帰モデルなど多くの機械学習モデルが、数値データしか扱えないからです。

例えば、「部屋のタイプ」という質的データは、「個室」「ホテルの一室」「シェアハウス」などのカテゴリーに分かれます。これをそのままモデルに投入しても、モデルは理解できません。そこで、ダミー変数化によって、それぞれのカテゴリーを数値データに変換します。

ダミー変数化の例:部屋タイプ

「部屋のタイプ」をダミー変数化する例を見てみましょう。もし、データの中に「個室」「ホテルの一室」「シェアハウス」という3種類の部屋タイプがあったとします。この時、それぞれの部屋タイプに対応する列を作成し、該当する部屋タイプには「1」、それ以外には「0」を入れることで、数値データに変換します。

部屋タイプ個室ホテルの一室シェアハウス
個室100
ホテルの一室010
シェアハウス001
個室100

このように、それぞれのカテゴリーを0と1で表現することをOne-Hot表現と呼びます。

なぜOne-Hot表現を使うのか?

One-Hot表現を使う理由は、数値に意味を持たせないためです。もし、部屋タイプを「個室=1」「ホテルの一室=2」「シェアハウス=3」のように数値で表現してしまうと、モデルは「ホテルの一室(2)は、個室(1)より価値が高い」「シェアハウス(3)は個室(1)の3倍の価値がある」と誤解してしまう可能性があります。

One-Hot表現を使えば、それぞれのカテゴリーは独立した存在として扱われ、このような誤解を防ぐことができます。

ダミー変数化の実践

それでは、実際に宿泊価格について_demo.csv のデータを使って、ダミー変数化をやってみましょう。

1. 準備

まずは、必要なライブラリをインポートし、データを読み込みます。

import pandas as pd

# CSVファイルの読み込み
data = pd.read_csv('宿泊価格について_demo.csv')
print(data.head())

2. 必要なカラムを選択

今回ダミー変数化を行うカラムと、後で予測モデルを作る際に使用するカラムを選択します。

select_columns = ['room_type','accommodates','bed_type','bathrooms','cleaning_fee']

3. ダミー変数化

Pandasのget_dummies()関数を使って、ダミー変数化を行います。drop_first=True を指定することで、ダミー変数の数がカテゴリー数-1になります。今回はroom_typeとbed_typeをダミー変数化します。

dummy_data = pd.get_dummies(data[select_columns],drop_first=True)

ここで、drop_first=Trueを指定する理由を説明します。例えば、room_typeが「個室」「ホテルの一室」「シェアハウス」の3種類だった場合、One-Hot表現では3つの列が必要になります。しかし、3つ全てを使わなくても、2つの列があれば、残りの1つの情報は0と1だけで表現できます。つまり、情報の重複を防ぎ、モデルの計算効率を高めるためにdrop_first=Trueを設定します。

4. ダミー変数化の結果を確認

ダミー変数化したデータを確認してみましょう。

print(dummy_data.head())

room_typeとbed_typeが、それぞれ数値データに変換されていることがわかりますね!

つまずきやすいポイント

  • 質的変数と量的変数の見分け方:
    • 質的変数は、カテゴリーやグループを表現するものです。
    • 量的変数は、数を表現するものです。
    • 分からない場合は、その変数が「数えられるものなのか、カテゴリーなのか」を考えると良いでしょう。
  • get_dummies()関数の使い方:
    • 引数には、ダミー変数化したいデータフレームを指定します。
    • drop_first=True を指定すると、1つ少ないダミー変数が作成されます。
  • ダミー変数化後の列の確認:
    • ダミー変数化後、どのような列が作成されたかを確認することが大切です。

ダミー変数化の注意点

ダミー変数化は非常に便利なテクニックですが、注意点もあります。それは、カラム数が膨大になる可能性があるということです。特に、カテゴリー数が非常に多い質的変数をダミー変数化すると、データがスパース(ほとんどが0)になり、モデルの学習に悪影響を与える可能性があります。そのような場合は、ダミー変数化以外の方法を検討する必要もあります。

まとめ

今回は、ダミー変数化について学びました。

  • 質的データは、そのままでは機械学習モデルで扱えない。
  • ダミー変数化は、質的データを数値データに変換するテクニック。
  • One-Hot表現を使うことで、数値に意味を持たせずにカテゴリーを表現できる。
  • Pandasのget_dummies()関数を使うことで、簡単にダミー変数化できる。
  • ダミー変数化によってカラム数が膨大になる可能性があるため、注意が必要。

ダミー変数化は、データ分析の基礎となる重要なステップです。今回の内容をしっかりと理解し、次回の予測モデル作成に備えましょう!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次