Tiến triển của bệnh tiểu đường
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 55 trên 58.
Một phòng khám tiểu đường lên lịch tái khám dựa trên mức độ tiến triển của bệnh ở mỗi bệnh nhân trong vòng một năm. Ở phần 2, một đặc trưng chỉ cho biết một phần:
Giờ đây, cả mười số đo của load_diabetes đều được đưa vào. Phòng khám nên tin tưởng mô hình nào, và kết quả sẽ lệch bao nhiêu điểm?
Nó cần một lựa chọn công bằng bằng kiểm định chéo (cross-validation), các lỗi đáng tin cậy trên những bệnh nhân chưa từng gặp và kiểm tra phần dư để phát hiện những gì mô hình bỏ sót.
Thử thách
KhóChương trình đọc các giá trị alpha của Ridge vào alphas; mã khởi đầu tạo sẵn một biểu đồ có tiêu đề.
- Tách một phần tư dữ liệu làm tập kiểm tra với
random_state=0. - Chấm điểm
LinearRegressionvà một mô hìnhRidgecho mỗi giá trị alpha bằng kiểm định chéo 5 phần trên các hàng dữ liệu huấn luyện. In giá trị R bình phương trung bình (3 chữ số thập phân) của từng mô hình, rồi in mô hình chiến thắng. - Huấn luyện mô hình chiến thắng và in MAE, RMSE trên tập kiểm tra (1 chữ số thập phân) cùng giá trị R bình phương (3 chữ số thập phân).
- Vẽ biểu đồ phân tán các phần dư trên tập kiểm tra, giá trị thực trừ giá trị dự đoán, theo các giá trị dự đoán. Thêm đường tại mức 0, rồi hiển thị biểu đồ.
Với một phòng khám khác và các giá trị alpha 0.5 và 2.0:
Linear: CV R squared 0.472
Ridge 0.5: CV R squared 0.481
Ridge 2.0: CV R squared 0.402
Winner: Ridge 0.5
Test errors: MAE 47.3, RMSE 58.9, R squared 0.414Sau đó, Coddy mô tả biểu đồ phần dư của bạn.
Tự làm thử
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.linear_model import LinearRegression, Ridge
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
diabetes = load_diabetes(as_frame=True)
X = diabetes.data
y = diabetes.target
# Các giá trị alpha của Ridge cần thử
n = int(input())
alphas = []
for i in range(n):
alphas.append(float(input()))
fig, ax = plt.subplots()
ax.set_title("Residuals on Test Patients")
ax.set_xlabel("Predicted progression")
ax.set_ylabel("Residual (true - predicted)")
# Viết code 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