Đường khớp chính xác đến đâu?
Thuộc phần Thống kê cho machine learning trong hành trình Machine Learning của Coddy. Bài học 39 trên 64.
Đám mây điểm nào cũng có thể kẻ một đường thẳng, nên cần chấm điểm độ khớp. Một thủy thủ ghi lại tốc độ gió và tốc độ thuyền: hãy so sánh tổng bình phương sai số của đường thẳng với tổng bình phương sai số của giá trị trung bình, cách dự đoán đơn giản nhất:
R bình phương là tỷ lệ độ phân tán mà đường thẳng giải thích:
wind = np.array([6, 8, 10, 12, 15, 18])
boat = np.array([3.1, 4.4, 4.9, 6.2, 6.8, 8.1])
slope, intercept = np.polyfit(wind, boat, 1)
predicted = slope * wind + intercept
ss_res = ((boat - predicted) ** 2).sum() # giá trị khớp: 0.35
ss_tot = ((boat - boat.mean()) ** 2).sum() # giá trị trung bình: 16.23
print(np.round(1 - ss_res / ss_tot, 3))Lệnh này in ra 0.979: dòng này giải thích 98% độ phân tán của tốc độ. 1 là đường thẳng hoàn hảo, 0 không tốt hơn giá trị trung bình.
Đây là điểm số tiêu chuẩn của một mô hình dự đoán các con số. Với một đường thẳng đã khớp, giá trị này bằng r bình phương.
Thử thách
Trung bìnhMột trang trại nấm ghi lại dữ liệu của 16 luống trồng trong mushrooms.csv. Chương trình đọc tên một cột, rồi phần code khởi đầu khớp đường thẳng dự đoán harvest_kg từ cột đó. Báo cáo cần r_squared, hiện vẫn chưa có.
- Hoàn thành
r_squared(y, predicted)để hàm trả về hệ số R bình phương. - Ở cuối chương trình, in kết quả kiểm tra: bình phương hệ số tương quan giữa
xvày, nhân với 100, rồi làm tròn đến 1 chữ số thập phân.
Với một trang trại khác và đầu vào humidity:
humidity explains 27.0% of the harvest variation
Check with r squared: 27.0%Tự làm thử
import numpy as np
import pandas as pd
# Trả về hệ số R bình phương của các giá trị dự đoán cho y
def r_squared(y, predicted):
# Viết code của bạn ở đây
return 0
beds = pd.read_csv("mushrooms.csv")
column = input()
# Không thay đổi các dòng bên dưới
x = beds[column]
y = beds["harvest_kg"]
slope, intercept = np.polyfit(x, y, 1)
predicted = slope * x + intercept
r2 = r_squared(y, predicted)
print(f"{column} explains {np.round(r2 * 100, 1)}% of the harvest variation")
# 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ấn7Đường xu hướng
Phần dưKhớp bình phương tối thiểuVẽ đường khớpDự đoán bằng đường thẳngĐường khớp chính xác đến đâu?Ôn tập: Giờ luyện tập2Cá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ờiTự luyện tập: Trình biên dịch Python online