Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách chuẩn hóa dữ liệu (Feature Scaling) bằng scikit-learn trong Python

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

Lưu ý quan trọng

Chỉ fit trên tập train, sau đó transform trên cả train, validation, test. Không fit trên test!

ScalerPhương phápDùng khi
StandardScaler(X - mean) / stdDữ liệu gần Gaussian, cần mean=0, std=1
RobustScaler(X - median) / IQRCó outlier mạnh
MaxAbsScalerX / max(|X|)Dữ liệu sparse, giữ sparsity
NormalizerRow-wise L1/L2/maxVector hóa văn bản, cosine similarity