在 Python 中對數字列表進行歸一化

Fariba Laiq 2023年1月30日 2022年5月17日
  1. 歸一化公式
  2. 使用 Python sklearn 中的 MinMaxScaler 函式歸一化數字列表
  3. 在 Python 中手動歸一化數字列表
在 Python 中對數字列表進行歸一化

歸一化意味著將給定的資料轉換為另一個尺度。我們重新調整資料,使其介於兩個值之間。大多數情況下,資料會在 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}}
$$

我們可以使用兩種方法來歸一化列表。我們可以使用內建函式,該函式在 sklearn 包的預處理模組中可用。或者我們可以為它制定與上面討論的相同公式的邏輯。

使用 Python sklearn 中的 MinMaxScaler 函式歸一化數字列表

sklearn 包的 preprocessing 模組中提供了一個名為 MinMaxScaler() 的內建方法。我們將建立一個一維 NumPy 陣列並將其傳遞給函式。我們必須安裝 NumPysklearn 軟體包才能使用此功能。

示例程式碼:

# 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() 中指定我們的 range。預設情況下,如果我們不指定範圍,它將是 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]
Author: 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