Numpy配列の値を0と1の間で正規化する方法
NumPy 配列の値を 0 から 1 の間で正規化するには、次のいずれかの方法を使用できます。
方法 1: NumPy を使用する
import numpy as np x_norm = (x-np. min (x))/(np. max (x)-np. min (x))
方法 2: Sklearn を使用する
from sklearn import preprocessing as pre x = x. reshape (-1, 1) x_norm = pre. MinMaxScaler (). fit_transform (x)
どちらのメソッドも、 x が正規化する NumPy 配列の名前であると想定しています。
次の例は、各メソッドを実際に使用する方法を示しています。
例 1: NumPy を使用して値を正規化する
次の NumPy 配列があるとします。
import numpy as np
#create NumPy array
x = np. array ([13, 16, 19, 22, 23, 38, 47, 56, 58, 63, 65, 70, 71])
次のコードを使用して、配列内の各値を 0 と 1 の間で正規化できます。
#normalize all values to be between 0 and 1
x_norm = (x-np. min (x))/(np. max (x)-np. min (x))
#view normalized array
print (x_norm)
[0. 0.05172414 0.10344828 0.15517241 0.17241379 0.43103448
0.5862069 0.74137931 0.77586207 0.86206897 0.89655172 0.98275862
1. ]
NumPy 配列の各値は、0 から 1 の間になるように正規化されています。
その仕組みは次のとおりです。
データセットの最小値は 13 で、最大値は 71 です。
最初の値13 を正規化するには、以前に共有した式を適用します。
- z i = (x i – min(x)) / (max(x) – min(x)) = (13 – 13) / (71 – 13) = 0
2 番目の値16 を正規化するには、同じ式を使用します。
- z i = (x i – 最小(x)) / (最大(x) – 最小(x)) = (16 – 13) / (71 – 13) = 0.0517
3 番目の値19 を正規化するには、同じ式を使用します。
- z i = (x i – 最小(x)) / (最大(x) – 最小(x)) = (19 – 13) / (71 – 13) = 0.1034
これと同じ式を使用して、元の NumPy 配列の各値を 0 から 1 の間で正規化します。
例 2: sklearn を使用して値を正規化する
もう一度、次の NumPy 配列があると仮定します。
import numpy as np
#create NumPy array
x = np. array ([13, 16, 19, 22, 23, 38, 47, 56, 58, 63, 65, 70, 71])
sklearnのMinMaxScaler()関数を使用して、配列内の各値を 0 と 1 の間で正規化できます。
from sklearn import preprocessing as pre
#reshape array so that it works with sklearn
x = x. reshape (-1, 1)
#normalize all values to be between 0 and 1
x_norm = pre. MinMaxScaler (). fit_transform (x)
#view normalized array
print (x_norm)
[[0. ]
[0.05172414]
[0.10344828]
[0.15517241]
[0.17241379]
[0.43103448]
[0.5862069]
[0.74137931]
[0.77586207]
[0.86206897]
[0.89655172]
[0.98275862]
[1. ]]
NumPy 配列の各値は、0 から 1 の間になるように正規化されています。
これらの正規化された値は、前の方法を使用して計算された値と一致することに注意してください。
追加リソース
次のチュートリアルでは、NumPy で他の一般的なタスクを実行する方法について説明します。
NumPy 配列の要素を並べ替える方法
NumPy配列から重複要素を削除する方法
NumPy配列で最も頻度の高い値を見つける方法