Feature Scaling đưa các đặc trưng (features) về cùng một thang đo, quan trọng cho các thuật toán nhạy cảm với thang đo: KNN, SVM, Neural Network, PCA, Gradient Descent...
Phương pháp phổ biến: Min-Max Scaling
Biến đổi về khoảng [0, 1]: X_scaled = (X - X_min) / (X_max - X_min).
Ví dụ với sklearn.preprocessing.MinMaxScaler
import numpy as np
from sklearn import preprocessing
input_data = np.array([
[34.78, 31.9, -65.5],
[-16.5, 2.45, -83.5],
[0.5, -87.98, 45.62],
[5.9, 2.38, -55.82]
])
scaler = preprocessing.MinMaxScaler(feature_range=(0, 1))
data_scaled = scaler.fit_transform(input_data)
print("Dữ liệu sau MinMaxScaler [0,1]:\n", data_scaled)
Kết quả
[[1. 1. 0.1394] [0. 0.7543 0. ] [0.3315 0. 1. ] [0.4368 0.7538 0.2144]]
Giải thích
fit_transform: học min/max trên tập train, áp dụng transform.feature_range=(0,1): mặc định. Có thể đổi thành (-1,1) hoặc khác.- Mỗi cột được scale độc lập.
Các scaler khác trong sklearn
| Scaler | Phương pháp | Dùng khi |
|---|---|---|
| StandardScaler | (X - mean) / std | Dữ liệu gần Gaussian, cần mean=0, std=1 |
| RobustScaler | (X - median) / IQR | Có outlier mạnh |
| MaxAbsScaler | X / max(|X|) | Dữ liệu sparse, giữ sparsity |
| Normalizer | Row-wise L1/L2/max | Vector hóa văn bản, cosine similarity |