StandardScaler
Thuộc phần Thống kê cho machine learning trong hành trình Machine Learning của Coddy. Bài học 50 trên 64.
Mô hình phải chuẩn hóa từng mẫu mới giống hệt cách nó chuẩn hóa dữ liệu huấn luyện. StandardScaler của scikit-learn chuẩn hóa dữ liệu và ghi nhớ cách thực hiện:
Trong code, mỗi công việc gồm số cửa sổ được lau và số phút cần thiết:
from sklearn.preprocessing import StandardScaler
X_train = np.array([[2, 8], [10, 25], [6, 20], [14, 35]])
scaler = StandardScaler()
scaler.fit(X_train)
X_new = np.array([[8, 30]]) # một mẫu: bảng có một hàng
print(np.round(scaler.transform(X_new), 2))Kết quả in ra:
[[0. 0.82]]fit học giá trị trung bình và độ lệch chuẩn của từng cột (chia cho n, như np.std), rồi lưu chúng trong scaler.mean_ và scaler.scale_. transform áp dụng các giá trị đó.
Không bao giờ khớp trên dữ liệu mới: giá trị đó sẽ là giá trị trung bình của chính nó và trở thành [[0. 0.]]. Trên dữ liệu huấn luyện, fit_transform thực hiện cả hai việc trong một lần gọi.
Thử thách
Trung bìnhBộ phân loại đã học từ những quả bơ trong X_train: trọng lượng, độ cứng và số ngày kể từ khi thu hoạch. Chương trình đọc một quả bơ mới vào bảng một hàng new_avocado, nhưng phép chuẩn hóa ban đầu in ra [[0. 0. 0.]] cho mọi quả bơ.
- Sửa lại: chuẩn hóa quả bơ mới bằng giá trị trung bình và độ lệch chuẩn của dữ liệu huấn luyện.
- Đếm các số đo lệch hơn 2 độ lệch chuẩn so với giá trị trung bình của dữ liệu huấn luyện, theo cả hai chiều, rồi in như bên dưới.
Với một mẻ khác:
New avocado: [[2.98 0. 0.09]]
1 of 3 measurements are more than 2 std from the training avocadosTự làm thử
import numpy as np
from sklearn.preprocessing import StandardScaler
# Các quả bơ dùng để huấn luyện, mỗi hàng gồm: khối lượng tính bằng gam, độ cứng từ 1 đến 10, số ngày kể từ khi thu hoạch
X_train = np.array([[210, 8, 2],
[185, 5, 6],
[240, 7, 3],
[170, 3, 9],
[225, 6, 5],
[195, 4, 7]])
# Một quả bơ mới trên băng chuyền
weight = float(input())
firmness = float(input())
days = float(input())
new_avocado = np.array([[weight, firmness, days]])
# Đoạn code này in ra [[0. 0. 0.]] cho mọi quả bơ: hãy sửa lỗi
scaler = StandardScaler()
scaled = scaler.fit_transform(new_avocado)
print("New avocado:", np.round(scaled, 2))
# Viết code của bạn bên dưới
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Thống kê cho machine learning
1Giá trị trung tâm và độ phân tán
Giá trị trung bình và trung vịPhân vị và tứ phân vịPhương sai và độ lệch chuẩnMẫu hay tổng thể?Giá trị xuất hiện nhiều nhấtÔn tập: Thời gian giao hàng4Mẫu và tổng thể
Tổng thể và mẫuTrung bình mẫu biến thiênPhân phối mẫuMẫu lớn hơn, ít nhiễu hơnÔn tập: khảo sát một thị trấn2Các phân phối
Biểu đồ tần suất mật độHình dạng của dữ liệuĐường cong chuẩnQuy tắc 68-95-99,7Điểm ZÔn tập: Thời lượng pin3Xác suất qua mô phỏng
Xác suất dưới dạng tần suấtLuật số lớnTổng điểm khi gieo xúc xắcGiá trị kỳ vọngXác suất có điều kiệnÔn tập: Tỷ lệ thắng ở quầy xúc xắc6Mối quan hệ
Đọc biểu đồ phân tánTương quanMa trận tương quanBản đồ nhiệt tương quanTương quan không đồng nghĩa với quan hệ nhân quảÔn tập: Kem và mặt trời9Co giãn đặc trưng
Vì sao cần co giãn đặc trưngCo giãn Min-MaxChuẩn hóaStandardScalerÔn tập: bạn đồng hành leo núiTự luyện tập: Trình biên dịch Python online