Ma trận nhầm lẫn
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 21 trên 58.
Độ chính xác chỉ tính số lỗi, không phân biệt loại lỗi. Với xét nghiệm cúm, cho bệnh nhân bị cúm về nhà nguy hiểm hơn nhiều so với báo động giả. confusion_matrix đếm từng loại lỗi:
Cúm là lớp dương tính, 1. Các lỗi nằm ngoài đường chéo: dương tính giả (báo động nhầm) và âm tính giả (bỏ sót trường hợp).
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
cm = confusion_matrix(y_test, pred) # Giá trị thực tế đặt trước
print(cm)
print(cm[1, 0]) # Hàng 1: mắc cúm, cột 0: dự đoán khỏe mạnh
ConfusionMatrixDisplay.from_predictions(y_test, pred, display_labels=["healthy", "flu"],
ax=ax, colorbar=False) # Không cần thanh màu: các con số đã thể hiện rõKết quả in ra:
[[50 3]
[ 5 42]]
5Chương này giúp giảm số trường hợp bị bỏ sót. Cuối chương, bạn sẽ có một bài kiểm tra sàng lọc gần như không bỏ sót ai.
Thử thách
Trung bìnhLực lượng cứu hộ nhận cảnh báo vào buổi sáng khi dòng chảy xa bờ có thể hình thành. Phần code khởi đầu huấn luyện mô hình cảnh báo và điền pred cho các buổi sáng dùng để kiểm tra (1 nghĩa là có dòng chảy xa bờ).
- Tạo ma trận nhầm lẫn và in ra bốn số đếm như bên dưới.
- Vẽ ma trận trên
ax, gắn nhãncalmvàrip, rồi hiển thị.
Với một mô hình khác:
Rips caught: 30
Rips missed: 2
False alarms: 9
Calm days cleared: 59Coddy mô tả biểu đồ của bạn. Biểu đồ sẽ trông giống biểu đồ này, từ một cảnh báo rò rỉ đường ống:
Tự làm thử
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
# Mỗi hàng ghi dữ liệu của một buổi sáng tại bãi biển có sóng lướt: 1 trong rip nghĩa là hôm đó có dòng chảy xa bờ
beach = pd.read_csv("rips.csv")
features = ["wave_height_m", "wave_period_s", "wind_kmh", "tide_change_m"]
X = beach[features]
y = beach["rip"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# Cảnh báo dòng chảy xa bờ của nhân viên cứu hộ
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
pred = model.predict(X_test)
fig, ax = plt.subplots()
ax.set_title("Rip Current Alerts")
# 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