Độ chính xác và độ thu hồi
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 22 trên 58.
Hai câu hỏi dùng để đánh giá các câu trả lời về bệnh cúm của một bài kiểm tra. Trong số các trường hợp bài kiểm tra báo có cúm, có bao nhiêu trường hợp chính xác? Trong số các ca cúm thực tế, bài kiểm tra phát hiện được bao nhiêu ca?
Độ chính xác trả lời câu hỏi thứ nhất: 42 trong số 45 cảnh báo. Độ bao phủ trả lời câu hỏi thứ hai: 42 trong số 47 trường hợp.
from sklearn.metrics import precision_score, recall_score
print(f"{precision_score(y_test, pred):.3f}")
print(f"{recall_score(y_test, pred):.3f}"):.3f luôn hiển thị 3 chữ số thập phân, vì vậy 0.9 sẽ được in ra thành 0.900. Kết quả in ra là:
0.933
0.894Hãy chọn theo lỗi gây tốn kém hơn. Bỏ sót ca cúm có thể khiến dịch bệnh lây lan, vì vậy phép kiểm tra này cần độ bao phủ. Bộ lọc thư rác làm ẩn thư thật cần độ chính xác.
Thử thách
Trung bìnhBộ lọc của một cửa hàng ẩn các bài đánh giá có vẻ giả mạo. Mã khởi đầu tạo hai phiên bản từ cùng một mô hình, strict_pred và eager_pred, rồi đọc xem lỗi nào gây hại nhiều hơn: missed (bài đánh giá giả vẫn hiển thị) hay hidden (bài đánh giá thật biến mất).
- In độ chính xác và độ thu hồi của mỗi bộ lọc, với 3 chữ số thập phân.
- In bộ lọc gây ra ít lỗi đó hơn, như bên dưới (với
missed:Fewer fakes missed: ...).
Với một cửa hàng khác và hidden:
Strict: precision 0.900, recall 0.450
Eager: precision 0.640, recall 0.800
Fewer real reviews hidden: strictTự làm thử
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import precision_score, recall_score
# Sai sót nào gây hại hơn: bỏ sót (đánh giá giả vẫn hiển thị) hay ẩn nhầm (đánh giá thật bị ẩn)?
worse = input()
# Mỗi đánh giá chiếm một hàng: giá trị 1 trong fake nghĩa là đánh giá đó được viết theo đơn đặt hàng
reviews = pd.read_csv("reviews.csv")
features = ["words", "exclamations", "account_days", "user_reviews", "stars", "photo"]
X_train, X_test, y_train, y_test = train_test_split(reviews[features], reviews["fake"], test_size=0.25, random_state=0)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
proba = model.predict_proba(X_test)[:, 1]
# Hai bộ lọc từ cùng một mô hình: strict ẩn đánh giá khi xác suất là giả đạt 0.7, còn eager ẩn khi xác suất đạt 0.3
strict_pred = proba >= 0.7
eager_pred = proba >= 0.3
# 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