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


統計や機械学習では、値の範囲が 0 から 1 の間になるように変数を正規化することがよくあります。

変数を正規化する最も一般的な理由は、ある種の多変量解析を実行しているとき (つまり、複数の予測変数と 1 つの応答変数の間の関係を理解したいとき) で、各変数が分析に均等に寄与するようにしたいときです。

変数が異なるスケールで測定される場合、それらは分析に同等に寄与しないことがよくあります。たとえば、ある変数の値の範囲が 0 ~ 100,000 で、別の変数の値の範囲が 0 ~ 100 の場合、分析では範囲が大きい変数に大きな重みが割り当てられます。

変数を標準化することで、各変数が分析に均等に寄与していることを確認できます。

0 と 1 の間の値を正規化するには、次の式を使用できます。

xノルム= (x i – x min ) / (x max – x min )

金:

  • xノルム:データセット内のi 番目の正規化された値
  • x i :データセットのi 番目の
  • x max : データセット内の最小値
  • x min :データセット内の最大値

次の例は、Python で 1 つ以上の変数を正規化する方法を示しています。

例 1: NumPy 配列を正規化する

次のコードは、NumPy 配列内のすべての値を正規化する方法を示しています。

 import numpy as np 

#create NumPy array
data = np. array ([[13, 16, 19, 22, 23, 38, 47, 56, 58, 63, 65, 70, 71]])

#normalize all values in array
data_norm = (data - data. min ())/ (data. max () - data. min ())

#view normalized values
data_norm

array([[0. , 0.05172414, 0.10344828, 0.15517241, 0.17241379,
        0.43103448, 0.5862069, 0.74137931, 0.77586207, 0.86206897,
        0.89655172, 0.98275862, 1. ]])

正規化された配列の各値は 0 から 1 の間になります。

例 2: Pandas DataFrame のすべての変数を正規化する

次のコードは、pandas DataFrame 内のすべての変数を正規化する方法を示しています。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' points ': [25, 12, 15, 14, 19, 23, 25, 29],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#normalize values in every column
df_norm = (df-df. min ())/ (df. max () - df. min ())

#view normalized DataFrame
df_norm

        points assists rebounds
0 0.764706 0.125 0.857143
1 0.000000 0.375 0.428571
2 0.176471 0.375 0.714286
3 0.117647 0.625 0.142857
4 0.411765 1.000 0.142857
5 0.647059 0.625 0.000000
6 0.764706 0.625 0.571429
7 1.000000 0.000 1.000000

各列の各値は 0 から 1 の間になります。

例 3: Pandas DataFrame の特定の変数を正規化する

次のコードは、pandas DataFrame 内の特定の変数を正規化する方法を示しています。

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' points ': [25, 12, 15, 14, 19, 23, 25, 29],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

define columns to normalize
x = df. iloc [:,0:2]

#normalize values in first two columns only
df. iloc [:,0:2] = (xx. min ())/ (x. max () - x. min ())

#view normalized DataFrame
df

	points assists rebounds
0 0.764706 0.125 11
1 0.000000 0.375 8
2 0.176471 0.375 10
3 0.117647 0.625 6
4 0.411765 1.000 6
5 0.647059 0.625 5
6 0.764706 0.625 9
7 1.000000 0.000 12

最初の 2 列の値のみが正規化されることに注意してください。

追加リソース

次のチュートリアルでは、データの正規化に関する追加情報を提供します。

データを0と1の間で正規化する方法
データを0から100の間で正規化する方法
標準化と正規化: 違いは何ですか?

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です