Bắt đầu ngayBắt đầu miễn phí

Tối ưu ngưỡng phân loại

Bạn nghe nói giá trị mặc định 0.5 tối đa hóa accuracy về mặt lý thuyết, nhưng bạn muốn kiểm chứng trong thực tế. Vì vậy, bạn thử một loạt giá trị ngưỡng khác nhau để xem accuracy đạt được là bao nhiêu, từ đó xác định ngưỡng cho hiệu suất tốt nhất. Bạn lặp lại thí nghiệm này cho điểm F1. Liệu 0.5 có phải là ngưỡng tối ưu? Ngưỡng tối ưu cho accuracy và cho điểm F1 có giống nhau không? Hãy tự tìm câu trả lời! Bạn có sẵn một ma trận scores, thu được bằng cách chấm điểm dữ liệu kiểm thử. Nhãn ground truth cho dữ liệu kiểm thử cũng có sẵn dưới dạng y_test. Cuối cùng, hai hàm của numpyargmin()argmax() đã được nạp sẵn, lần lượt trả về chỉ số của giá trị nhỏ nhất và lớn nhất trong một mảng, cùng với các thước đo accuracy_score()f1_score().

Bài tập này là một phần của khóa học

Thiết kế quy trình Machine Learning bằng Python

Xem khóa học

Hướng dẫn bài tập

  • Tạo một dải giá trị ngưỡng bao gồm 0.0, 0.25, 0.5, 0.75 và 1.0.
  • Thông qua list comprehension lồng nhau, lưu các dự đoán cho mỗi giá trị ngưỡng trong dải trên. Nhớ rằng có thể lấy nhãn từ một ma trận điểm số với ngưỡng thr bằng [s[1] > thr for s in scores].
  • Duyệt qua danh sách đó và tính accuracy cho mỗi ngưỡng. Lặp lại cho điểm F1.
  • Dùng argmin() hoặc argmax() để tìm ngưỡng tối ưu cho accuracy và cho F1.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# Create a range of equally spaced threshold values
t_range = ____

# Store the predicted labels for each value of the threshold
preds = [[____ > thr for s in scores] for ____ in ____]

# Compute the accuracy for each threshold
accuracies = [____(____, ____) for p in preds]

# Compute the F1 score for each threshold
f1_scores = [____(____, ____) for p in preds]

# Report the optimal threshold for accuracy, and for F1
print(t_range[____(accuracies)], t_range[____(f1_scores)])
Chỉnh sửa và Chạy Mã