機器學習|資料處理 標準化 特徵縮放|Z-Score Standardization Min-Max Normalization|Python|半熟奇異果 Kiwi Tech

Standardization; Scaling;Z-Score Standardization;Min-Max Normalization;Data

Kiwi Half 半熟奇異果
5 min readOct 31, 2023

說明

資料標準化的目的是在不影響原始資料分佈下,縮小資料範圍,標準化是應用在機器學習中,通過讓不同單位的資料變成同單位,進而可以進行比較。資料常會有單位不同,或是意義不同的情況,像是公斤與公分,以及產品價錢與數量等,若直接將資料進行模型訓練,會有預測上準確性的問題,所以需要使用標準化進行資料處理,以提升模型的精確度及收斂速度。常見應用到聚類分析,都需要先做標準化。

1. Z值標準化 (Z-Score Standardization)

標準化方法常見的是 Z-Score標準化,又稱為標準化分數、。資料經過 Z-Score 標準化後,將資料轉換為平均值為0,標準差為1,會呈現標準正態分佈(高斯分布, Gaussian distribution),Z分數標準化適用於分佈大致對稱的資料,特別是當不同特徵的尺度差異很大時。但是,資料若分佈非常不對稱,則不建議使用,若標準化資料可能出現目標預測的錯誤,或是預測意義不明確的狀況。Z-Score標準化也適用於降低異常值或離群值(outlier)的影響。

公式如下,其中,X是資料值,μ是平均值,σ是標準差:

Z-Score Standardization

Python

安裝 scikit-learn:

pip install scikit-learn

Standard Scaler

在Python中使用StandardScaler進行標準化,將資料常態分布化,平均值會變為0, 標準差變為1,使離群值影響降低,將這個標準化的特徵矩陣用於模型的訓練,確保特徵的尺度一致。

  1. 創建一個特徵矩陣 X
  2. 創建一個StandardScaler實例 scaler
  3. 使用fit_transform方法對特徵進行標準化的擬合和轉換
  4. 將Z-Score標準化後的特徵矩陣(均值為0,標準差為1)存在 X_scaled
from sklearn.preprocessing import StandardScaler

# 創建一個示例數據集(假設X是特徵矩陣)
X = [[1, 2],
[2, 3],
[3, 4],
[4, 5]]
# 創建StandardScaler實例
scaler = StandardScaler()
# 用StandardScaler對數據進行擬合和轉換
X_scaled = scaler.fit_transform(X)

標準化後的特徵矩陣,每個特徵均值為0,標準差為1

print(f"標準化後的特徵矩陣:{X_scaled}")

2. Min-Max 正規化 (Min-Max Normalization)

Min-Max 正規化是種資料正規化的方法,用於將每個特徵以線性方式縮放到一個指定的範圍內,通常是 [0, 1] 或 [-1, 1],讓所有特徵具有相似的尺度,有助於更好地訓練模型。

公式如下,轉換每個特徵,使最小值為 0,然後再除以新的最大值 (原始最大值與最小值之間的差異),重新調整為指定間隔即完成。

Min-Max Normalization

Python

Min Max Scaler

在Python中使用 MinMaxScaler 進行特徵縮放,縮放到指定範圍內,最大值變為1,最小值變為0。

  1. 創建一個特徵矩陣 X
  2. 創建一個MinMaxScaler實例 scaler,將特徵縮放到[0, 1]範圍。
  3. 使用fit_transform方法對特徵進行擬合和轉換
  4. 將縮放後的特徵矩陣存在 X_scaled,現在特徵值都在[0, 1]範圍內,這有助於模型更好地處理數據,也可以設置feature_range參數來指定縮放的範圍
from sklearn.preprocessing import MinMaxScaler
import numpy as np

# 創建一個示例特徵矩陣 X
X = np.array([[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0],
[7.0, 8.0, 9.0]])

# 創建MinMaxScaler實例,預設縮放到[0, 1]範圍
scaler = MinMaxScaler()

# 使用MinMaxScaler對特徵進行擬合和轉換
X_scaled = scaler.fit_transform(X)

X_scaled 包含了縮放後的特徵,位於[0, 1]範圍內

print(f"縮放後的特徵矩陣:{X_scaled}")

--

--

Kiwi Half 半熟奇異果

Kiwi Half 半熟奇異果|環境。資料科學。經濟|失憶前留個筆記