Limio— Learn your way
🏆 Đấu trường
Đăng nhậpĐăng ký

Thiết kế và phát triển: @Limio team - Khoa Khoa học và Công nghệ Giáo dục, Đại học Bách Khoa Hà Nội

← Fundamental of Machine Learning

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.

Đăng nhập
Module 3: Model Evaluation and Optimization

Thực hành: Xây dựng mô hình end-to-end với Scikit-learn

In / Lưu PDF

Thực hành — Xây dựng mô hình end-to-end với Scikit-learn

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.

Các bước trong video

PhútBước
00:00Xem dữ liệu thô trong Excel, xác định cột nhãn
02:30Load bằng pandas, tách đặc trưng x và nhãn y
06:00Chia train/test với train_test_split
10:00Kiểm tra kết quả chia — 614 / 154 dòng
17:00Chuẩn hoá bằng StandardScaler
19:00Huấn luyện RandomForestClassifier, dự đoán
22:30Đánh giá bằng classification_report
26:00Đọc confusion_matrix

Code xương sống

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))

Điểm dễ sai nhất

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”.

Kết quả thu được

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?