Chuẩn hóa
Thuộc phần Thống kê cho machine learning trong hành trình Machine Learning của Coddy. Bài học 49 trên 64.
Nhiều mô hình học tốt nhất khi mọi đặc trưng đều có giá trị trung bình bằng 0 và độ lệch chuẩn bằng 1. Chuẩn hóa thực hiện điều đó: mỗi giá trị trở thành điểm z trong cột của nó.
Năm quả bí ngô, cân nặng tính bằng kg và chiều rộng tính bằng cm:
Broadcasting chuẩn hóa đồng thời tất cả các cột:
pumpkins = np.array([[30, 60],
[8, 30],
[22, 55],
[40, 65],
[15, 40]])
z = (pumpkins - pumpkins.mean(axis=0)) / pumpkins.std(axis=0)
print(np.round(z.mean(axis=0), 2))
print(np.round(z.std(axis=0), 2))Kết quả in ra là:
[0. 0.]
[1. 1.]Làm tròn trước khi kiểm tra: khi chưa làm tròn, giá trị trung bình bằng 0 có thể được in ra thành 2.22044605e-17, chỉ là một sai số làm tròn rất nhỏ.
Không giống min-max, phương pháp này không có phạm vi cố định: hầu hết giá trị nằm trong khoảng từ -2 đến 2.
Thử thách
Trung bìnhMột trang trại bò sữa phát hiện những con bò khác thường. Mỗi hàng trong cows là một con bò: lượng sữa (lít mỗi ngày), cân nặng (kg) và tuổi (năm), được đặt tên trong features. Chương trình đọc vị trí của một con bò, k.
- Hoàn thành
standardize(X). Các dòng kiểm tra sau đó sẽ in ra[0. 0. 0.]và[1. 1. 1.]. - Tìm điểm z-score của con bò ở vị trí
kxa 0 nhất, bỏ qua dấu, rồi in ra như bên dưới, với 2 chữ số thập phân.
Với một con bò ở trang trại khác:
Column means: [0. 0. 0.]
Column stds: [1. 1. 1.]
Cow 2 stands out by weight: 1.76 std above the herdTự làm thử
import numpy as np
features = ["milk", "weight", "age"]
# Mỗi hàng tương ứng với một con bò: lượng sữa tính bằng lít mỗi ngày, cân nặng tính bằng kg, tuổi tính bằng năm
cows = np.array([[28, 610, 6],
[22, 540, 3],
[35, 680, 6],
[31, 590, 9],
[19, 650, 4],
[26, 520, 2],
[30, 600, 7]])
k = int(input())
# Trả về X với mọi cột đã được chuẩn hóa: giá trị trung bình bằng 0 và độ lệch chuẩn bằng 1
def standardize(X):
# Thay dòng bên dưới bằng code chuẩn hóa
return X
# Đừng sửa ba dòng bên dưới: chúng kiểm tra hàm (function) của bạn
z = standardize(cows)
print("Column means:", np.round(z.mean(axis=0), 2))
print("Column stds:", np.round(z.std(axis=0), 2))
# Viết code bên dưới: con bò k có điểm gì nổi bật?
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