Bạn đang xem thử công khai
Đăng nhập để lưu tiến độ, làm bài tập, thảo luận và nhận phản hồi.
Buổi thực hành đi hết một quy trình học máy hoàn chỉnh trên bộ dữ liệu diabetes.csv (768 dòng, 8 đặc trưng, nhãn Outcome 0/1). Khoảng 28 phút, có 4 điểm dừng.
| Phút | Bước |
|---|---|
| 00:00 | Xem dữ liệu thô trong Excel, xác định cột nhãn |
| 02:30 | Load bằng pandas, tách đặc trưng x và nhãn y |
| 06:00 | Chia train/test với train_test_split |
| 10:00 | Kiểm tra kết quả chia — 614 / 154 dòng |
| 17:00 | Chuẩn hoá bằng StandardScaler |
| 19:00 | Huấn luyện RandomForestClassifier, dự đoán |
| 22:30 | Đánh giá bằng classification_report |
| 26:00 | Đọc confusion_matrix |
target = "Outcome"
x = data.drop(target, axis=1)
y = data[target]
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(
x, y, test_size=0.2, random_state=1009)
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
x_train = scaler.fit_transform(x_train) # fit CHỈ trên train
x_test = scaler.transform(x_test) # test chỉ transform
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(random_state=100)
model.fit(x_train, y_train)
y_pred = model.predict(x_test)
from sklearn.metrics import classification_report, confusion_matrix
print(classification_report(y_test, y_pred))
print(confusion_matrix(y_test, y_pred))
fit_transform chỉ dùng cho tập train. Tập test chỉ được transform. Nếu fit cả trên test, thông tin của tập test rò rỉ vào quá trình chuẩn hoá và kết quả đánh giá sẽ đẹp hơn thực tế — một lỗi rất khó phát hiện vì mô hình vẫn “chạy bình thường”.
Accuracy 0.77. Lớp 1 (có bệnh): precision 0.71, recall 0.56. Ma trận nhầm lẫn [[88, 12], [24, 30]].
Hãy tự hỏi: với bài toán sàng lọc bệnh, recall 0.56 có chấp nhận được không?