[Python]Pandasでデータの規格化を実践する方法

はじめに

データ分析や機械学習のモデルを構築する際に、データのスケールを揃えることは重要な処理の一つです。データのスケールが揃っていないと、モデルの予測精度が低下したり、アルゴリズムの挙動が不安定になることがあります。Pandasライブラリを使えば、簡単にデータの規格化を行うことができます。本記事では、Pandasを使ったデータの規格化の方法について解説します。

規格化の目的:データのスケールを揃える理由

データのスケールを揃える理由は、いくつかあります。

  • 1. モデルの予測精度の向上: データのスケールが揃っていないと、モデルの学習や予測の精度が低下することがあります。例えば、ある特徴量の値が0から100の範囲に収まっている一方で、別の特徴量の値が0から10000の範囲に収まっている場合、後者の特徴量の影響が大きくなり、モデルが適切に学習できません。
  • 2. アルゴリズムの挙動の安定化: アルゴリズムによっては、データのスケールに敏感なものがあります。例えば、K-meansクラスタリングでは、各特徴量のスケールが異なると、クラスタリングの結果が変化することがあります。データのスケールを揃えることで、アルゴリズムの挙動を安定化させることができます。

pandasライブラリのインストールとインポート

Pandasを使うためには、まずライブラリをインストールする必要があります。以下のコマンドを実行して、Pandasをインストールしましょう。

!pip install pandas

Pandasをインストールしたら、次に以下のコードを使ってPandasをインポートします。

import pandas as pd

データセットの準備:サンプルデータフレームの生成

データの規格化を実践するために、まずはサンプルデータフレームを生成しましょう。以下のコードを使って、3つの特徴量を持つデータフレームを作成します。

import pandas as pd
# サンプルデータフレームの生成
data = {'Feature1': [100, 200, 300, 400, 500],
        'Feature2': [10, 20, 30, 40, 50],
        'Feature3': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)
print(df)

上記のコードを実行すると、以下のようなデータフレームが生成されます。

   Feature1  Feature2  Feature3
0       100        10         1
1       200        20         2
2       300        30         3
3       400        40         4
4       500        50         5

方法1:最小最大スケーリング(Min-Max Scaling)を使った規格化

最小最大スケーリングは、データの値を0から1の範囲にスケーリングする方法です。これにより、データのスケールを揃えることができます。Pandasでは、MinMaxScalerクラスを使って最小最大スケーリングを行うことができます。

from sklearn.preprocessing import MinMaxScaler
# 最小最大スケーリングの実行
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(df)
scaled_df = pd.DataFrame(scaled_data, columns=df.columns)
print(scaled_df)

上記のコードを実行すると、以下のような最小最大スケーリングされたデータフレームが生成されます。

   Feature1  Feature2  Feature3
0       0.0       0.0       0.0
1       0.2       0.2       0.2
2       0.4       0.4       0.4
3       0.6       0.6       0.6
4       1.0       1.0       1.0

方法2:Zスコア(標準化)を使った規格化

Zスコアは、データの平均を0、標準偏差を1に変換する方法です。これにより、データのスケールを揃えることができます。Pandasでは、StandardScalerクラスを使ってZスコアを計算することができます。

from sklearn.preprocessing import StandardScaler
# Zスコアの計算
scaler = StandardScaler()
scaled_data = scaler.fit_transform(df)
scaled_df = pd.DataFrame(scaled_data, columns=df.columns)
print(scaled_df)

上記のコードを実行すると、以下のようなZスコアで規格化されたデータフレームが生成されます。

   Feature1  Feature2  Feature3
0 -1.414214 -1.414214 -1.414214
1 -0.707107 -0.707107 -0.707107
2  0.000000  0.000000  0.000000
3  0.707107  0.707107  0.707107
4  1.414214  1.414214  1.414214

まとめ

Pandasを使えば、簡単にデータの規格化を行うことができます。本記事では、最小最大スケーリングとZスコアを使ったデータの規格化の方法について解説しました。データのスケールを揃えることは、モデルの予測精度の向上やアルゴリズムの挙動の安定化に繋がる重要な処理ですので、是非活用してください。