Python で数値のリストを正規化する

Fariba Laiq 2023年1月30日
  1. 正規化の公式
  2. Python sklearnMinMaxScaler 関数を使用して数値のリストを正規化する
  3. Python で数値のリストを手動で正規化する
Python で数値のリストを正規化する

正規化とは、特定のデータを別のスケールに変換することを意味します。2つの値の間に収まるようにデータを再スケーリングします。ほとんどの場合、データは 0 から 1 の間で再スケーリングされます。別の目的でデータを再スケーリングします。たとえば、機械学習アルゴリズムは、データセットの値が小さい場合にパフォーマンスが向上します。

リストが{1,2,3}であり、0 と 1 のスケールを正規化すると、リストは {0, 0.5, 1} になります。データを他のスケールに正規化することもできます。2 から 6 の間としましょう。したがって、正規化後にリスト{1,2,3}がある場合は、{2,4,6}になります。

正規化の公式

正規化がどのように機能するかを理解する。その式を見ていきます。すべての数値から最小値を減算し、それを範囲 i-e:max-min で除算します。したがって、出力では、その特定の数値の正規化された値を取得します。

$$ X_{norm} = {x-x_{min}\over x_{max}-x_{min}} $$

リストを正規化するには、2つの方法を使用できます。どちらも、sklearn パッケージの前処理モジュールで利用可能な組み込み関数を使用できます。または、上記と同じ式で機能するロジックを作成することもできます。

Python sklearnMinMaxScaler 関数を使用して数値のリストを正規化する

MinMaxScaler() という名前の組み込みメソッドは、sklearn パッケージの前処理モジュールで使用できます。1D NumPy 配列を作成し、それを関数に渡します。この関数を使用するには、NumPy および sklearn パッケージがインストールされている必要があります。

サンプルコード:

# python 3.x
import numpy as np
from sklearn import preprocessing

list = np.array([6, 1, 0, 2, 7, 3, 8, 1, 5]).reshape(-1, 1)
print("Original List:", list)
scaler = preprocessing.MinMaxScaler()
normalizedlist = scaler.fit_transform(list)
print("Normalized List:", normalizedlist)

出力:

Original List: [[6]
 [1]
 [0]
 [2]
 [7]
 [3]
 [8]
 [1]
 [5]]
Normalized List: [[0.75 ]
 [0.125]
 [0.   ]
 [0.25 ]
 [0.875]
 [0.375]
 [1.   ]
 [0.125]
 [0.625]]

ここで、正規化の範囲を指定するとします。この目的のために、MinMaxScaler()範囲を指定します。デフォルトでは、範囲を指定しない場合は 0 と 1 になりますが、スケーリングの範囲を定義できます。この例では、範囲 0 と 3 を指定します。

サンプルコード:

# python 3.x
import numpy as np
from sklearn import preprocessing

list = np.array([6, 1, 0, 2, 7, 3, 8, 1, 5]).reshape(-1, 1)
print("Original List:", list)
scaler = preprocessing.MinMaxScaler(feature_range=(0, 3))
normalizedlist = scaler.fit_transform(list)
print("Normalized List:", normalizedlist)

出力:

Original List: [[6]
 [1]
 [0]
 [2]
 [7]
 [3]
 [8]
 [1]
 [5]]
Normalized List: [[2.25 ]
 [0.375]
 [0.   ]
 [0.75 ]
 [2.625]
 [1.125]
 [3.   ]
 [0.375]
 [1.875]]

Python で数値のリストを手動で正規化する

数値の完全なコードを記述することにより、数値のリストを手動で正規化することもできます。これは、正規化について上記で説明したのと同じ式で機能します。

サンプルコード:

list = [6, 1, 0, 2, 7, 3, 8, 1, 5]
print("Original List:", list)
xmin = min(list)
xmax = max(list)
for i, x in enumerate(list):
    list[i] = (x - xmin) / (xmax - xmin)
print("Normalized List:", list)

出力:

Original List: [6, 1, 0, 2, 7, 3, 8, 1, 5]
Normalized List: [0.75, 0.125, 0.0, 0.25, 0.875, 0.375, 1.0, 0.125, 0.625]
著者: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

関連記事 - Python List