1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonでデータを正規化する方法

Posted at

Pythonでデータを正規化する方法

データの正規化は、異なるスケールのデータを共通の範囲(通常は0から1)にスケーリングし、機械学習モデルの性能を向上させるための重要な前処理です。本記事では、Pythonでのデータ正規化の一般的な手法について解説し、それぞれのPython実装例を紹介します。


目次

  1. Min-Max 正規化
  2. Z-score 標準化
  3. カスタム正規化関数
  4. 正規化手法の選択と考慮点
  5. 参考文献

1. Min-Max 正規化

Min-Max正規化は、データを0から1の範囲にスケーリングする最も一般的な方法です。以下の式で計算されます:

[
\text{normalized_value} = \frac{\text{value} - \text{min_value}}{\text{max_value} - \text{min_value}}
]

Pythonでの実装

以下のコードは、sklearn.preprocessingMinMaxScalerを使って、データを0から1に正規化する例です。

import numpy as np
from sklearn.preprocessing import MinMaxScaler

# サンプルデータ
data = np.array([[1, 2, 3],
                 [4, 5, 6],
                 [7, 8, 9]])

# MinMaxScalerを使用した正規化
scaler = MinMaxScaler()
normalized_data = scaler.fit_transform(data)

print("元のデータ:")
print(data)
print("\n正規化後のデータ:")
print(normalized_data)

動作の流れ

  1. MinMaxScalerクラスのインスタンスを作成します。
  2. fit_transformメソッドでデータを適合(fit)させ、変換(transform)します。

この手法はデータの相対的な関係を保持するため、非常に一般的に使用されますが、外れ値に対して敏感です。


2. Z-score 標準化

Z-score標準化は、データの平均を0、標準偏差を1にする標準化手法です。以下の式で計算されます:

[
\text{standardized_value} = \frac{\text{value} - \text{mean}}{\text{standard_deviation}}
]

Pythonでの実装

以下は、sklearn.preprocessingStandardScalerを使用してデータを標準化するコードです。

from sklearn.preprocessing import StandardScaler

# StandardScalerを使用した標準化
scaler = StandardScaler()
standardized_data = scaler.fit_transform(data)

print("\n標準化後のデータ:")
print(standardized_data)

動作の流れ

  1. StandardScalerを使用して、データを適合および変換します。
  2. Z-score標準化により、データは平均が0、標準偏差が1の範囲にスケーリングされます。

この方法は、外れ値の影響を軽減するための手段としても役立ちます。


3. カスタム正規化関数

独自の正規化手法を使いたい場合には、NumPyを使用してカスタム関数を作成することができます。以下は、各特徴量(列)ごとに最小値と最大値を計算して0から1の範囲にスケーリングする関数の例です。

import numpy as np

def custom_normalize(data):
    min_val = np.min(data, axis=0)
    max_val = np.max(data, axis=0)
    return (data - min_val) / (max_val - min_val)

# カスタム正規化の実行
custom_normalized_data = custom_normalize(data)

print("\nカスタム正規化後のデータ:")
print(custom_normalized_data)

動作の流れ

  1. 最小値と最大値を計算し、データを0から1にスケーリングします。
  2. カスタム正規化関数を使用すると、特定の要件に合わせたデータのスケーリングが可能です。

4. 正規化手法の選択と考慮点

正規化の手法は、データの特性や機械学習アルゴリズムの要件に応じて選択します。一般的には次のような特性が考慮されます:

  • Min-Max正規化:データの相対的な関係を保ちながら0から1にスケーリングしますが、外れ値に敏感です。
  • Z-score標準化:平均0、標準偏差1にするため、外れ値の影響を軽減し、線形回帰やクラスタリングに向いています。
  • カスタム正規化:特定の範囲にデータをスケーリングする必要がある場合や、独自のスケーリング条件に合わせたい場合に有効です。

参考文献

  1. DigitalOcean - Normalize Data in Python
  2. Qiita - データの正規化
  3. Note Nkmk - Pythonでデータの正規化
  4. Pierian Training - Normalize Data Tutorial
  5. Codexa - Pythonでのデータ正規化方法

データの正規化は、モデルのパフォーマンスや訓練の安定性を向上させるために重要な処理です。特に、異なるスケールの特徴量を含むデータセットを扱う場合には、正しい正規化を適用することでモデルの精度を高めることが可能です。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?