Đo lường sai số
Thuộc phần Học có giám sát trong hành trình Machine Learning của Coddy. Bài học 13 trên 58.
Mô hình dự đoán lệch bao nhiêu đô la? Đây là mô hình giá nhà trên năm căn nhà kiểm tra mà mô hình chưa từng thấy:
sklearn.metrics đo lường các sai số giúp bạn:
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
y_test = np.array([290, 410, 235, 520, 330]) # nghìn đô la
pred = np.array([270, 450, 245, 430, 360])
print(mean_absolute_error(y_test, pred))
print(np.round(np.sqrt(mean_squared_error(y_test, pred)), 1))
print(np.round(r2_score(y_test, pred), 3))Kết quả in ra:
38.0
47.1
0.776MAE, sai số tuyệt đối trung bình, là mức lệch điển hình: 38 nghìn. RMSE bình phương các mức lệch, tính trung bình rồi lấy căn bậc hai: một mức lệch lớn khiến con số này tăng lên 47.
Cả hai đều dùng đơn vị của giá trị mục tiêu. r2_score là R bình phương của bạn: mô hình giải thích được 78% độ phân tán của giá.
Thử thách
Trung bìnhMột cửa hàng định giá máy ảnh đã qua sử dụng bằng một mô hình. Thêm một đặc trưng nữa có giúp ích không? Chương trình đọc shutter_k (số nghìn bức ảnh đã chụp) hoặc megapixels. Phần code ban đầu huấn luyện hai mô hình, một mô hình chỉ dùng age_years và một mô hình dùng thêm đặc trưng kia, rồi lưu các dự đoán trên tập kiểm tra của chúng vào preds.
- Với mỗi mô hình, in MAE, RMSE (1 chữ số thập phân) và R bình phương (3 chữ số thập phân).
- In mô hình có MAE nhỏ hơn.
Với một cửa hàng khác và shutter_k:
age_years: MAE 212.4, RMSE 268.1, R squared 0.853
age_years + shutter_k: MAE 98.7, RMSE 121.0, R squared 0.97
Better: age_years + shutter_k, off by 98.7 dollars on a typical cameraTự làm thử
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# Mỗi máy ảnh đã bán chiếm một hàng: tuổi máy, số lần chụp tính bằng nghìn, số megapixel, giá tính bằng đô la
cameras = pd.read_csv("cameras.csv")
extra = input()
names = ["age_years", "age_years + " + extra]
columns = [["age_years"], ["age_years", extra]]
# Chia dữ liệu theo hàng nguyên vẹn; mỗi mô hình bên dưới chọn các cột riêng
X_train, X_test, y_train, y_test = train_test_split(cameras, cameras["price"], test_size=0.25, random_state=0)
# Mỗi danh sách cột có một mô hình cùng các giá trị dự đoán cho những máy ảnh dùng để kiểm tra
preds = []
for cols in columns:
model = LinearRegression()
model.fit(X_train[cols], y_train)
preds.append(model.predict(X_test[cols]))
# 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 Học có giám sát
1Mô hình đầu tiên của bạn
Học từ ví dụTập huấn luyện và tập kiểm traHuấn luyện và dự đoánChấm điểm mô hìnhÔn tập: Bộ sắp xếp hạt giống2Láng giềng gần nhất
Cách k-NN đưa ra quyết địnhChọn kRanh giới quyết địnhChuẩn hóa dữ liệu cho láng giềngÔn tập: láng giềng với dữ liệu rượu vang5Đánh giá bộ phân loại
Ma trận nhầm lẫnĐộ chính xác và độ thu hồiĐiểm F1Các lớp mất cân bằngĐường cong ROCÔn tập: Bài kiểm tra sàng lọc11Dự án: Các loài chim cánh cụt
Làm quen với chim cánh cụtChuẩn bị dữ liệuChọn mô hìnhTinh chỉnh mô hình tốt nhấtĐưa mô hình vào sử dụng3Hồi quy tuyến tính
Dự đoán các con sốNhiều đặc trưngĐo lường sai sốBiểu đồ phần dưÔn tập: Thuê xe đạp6Cây quyết định
Cây đặt câu hỏiĐọc câyĐộ sâu của câyTầm quan trọng của đặc trưngÔn tập: quyết định cho vay9Các mô hình tổ hợp
Rừng ngẫu nhiênVì sao rừng hoạt động hiệu quảTăng cường độ dốcÔn tập: Người kiểm lâm rừng12Thử thách cuối cùng
Tiến triển của bệnh tiểu đườngPhê duyệt tín dụngChữ số viết tayKhách hàng rời bỏTự luyện tập: Trình biên dịch Python online