Độ chính xác và Thu hồi là các số liệu được sử dụng để đánh giá các thuật toán học máy vì chỉ độ chính xác thôi là không đủ để hiểu hiệu suất của các mô hình phân loại
Giả sử chúng ta đã phát triển một mô hình phân loại để chẩn đoán một căn bệnh hiếm gặp, chẳng hạn như ung thư. Chỉ 5% bệnh nhân ung thư, mô hình dự đoán tất cả bệnh nhân khỏe mạnh sẽ có độ chính xác 95%. Nếu chỉ 0. 1% bệnh nhân bị ung thư, cùng một mô hình dự đoán tất cả bệnh nhân đều khỏe mạnh đạt 99. độ chính xác 9%. Tất nhiên, "độ chính xác" là sai lệch. Cả hai mô hình này đều vô dụng để phát hiện bệnh vì chúng bỏ sót tất cả các bệnh ung thư. Chúng tôi cần các số liệu khác giúp chúng tôi cân nhắc chi phí của các loại lỗi khác nhau
Chúng ta có thể tạo một ma trận nhầm lẫn để biểu thị kết quả của phân loại nhị phân
Learn Data Science with
Tiếp theo, chúng tôi xác định các biến dự đoán và mục tiêu
x = dataset['data'][:,3] # Column 3 is mean area of the tumor y = dataset['target'] # Apply min-max normalization x = (x - np.min(x)) / (np.max(x) - np.min(x) )
Learn Data Science with
Bây giờ, chúng ta có thể định nghĩa một bộ phân loại đơn giản
def a_simple_classifier(x, thres = 0.5): predicted = np.zeros(len(x)) for i in range(len(x)): if x[i] < thres: predicted[i] = 1 return predicted
Learn Data Science with
Ở đây, chúng ta sẽ tạo hàm để lấy các giá trị Accuracy, Precision, Recall và F1 Score
def calculate_metrics(predicted, actual): TP, FP, TN, FN = 0, 0, 0, 0 for i in range(len(predicted)): if (predicted[i] == 0) & (actual[i] == 0): TP += 1 elif (predicted[i] == 0) & (actual[i] == 1): FP += 1 elif (predicted[i] == 1) & (actual[i] == 1): TN += 1 else: FN += 1 accuracy = (TP + TN) / (TP + FP + TN + FN) precision = (TP) / (TP + FP) recall = (TP) / (TP + FN) f1_score = (2 * precision * recall) / (precision + recall) return accuracy, precision, recall, f1_score
Learn Data Science with
Bây giờ chúng ta sẽ áp dụng trình phân loại được xác định ở trên cho các giá trị ngưỡng khác nhau. Chúng tôi đã xác định 20 giá trị ngưỡng khác nhau bằng cách sử dụng def a_simple_classifier(x, thres = 0.5): predicted = np.zeros(len(x)) for i in range(len(x)): if x[i] < thres: predicted[i] = 1 return predicted
Learn Data Science with
1 và một mảng cho từng chỉ số. Sau đó, chúng tôi lặp qua từng giá trị ngưỡng, nhận dự đoán từ trình phân loại của chúng tôi, nhận từng chỉ số và in một cột cho từng kết quảthresh = np.linspace(0,1,20) accuracy = np.zeros(len(thresh)) precision = np.zeros(len(thresh)) recall = np.zeros(len(thresh)) f1_score = np.zeros(len(thresh)) print('Threshold \t Accuracy \t Precision\t Recall \t F1 Score ') for i in range(len(thresh)): prediction = a_simple_classifier(x, thresh[i]) accuracy[i], precision[i], recall[i], f1_score[i]=calculate_metrics(prediction, y) print(f'{thresh[i]: .2f}\t\t {accuracy[i]: .2f}\t\t {precision[i]: .2f}\t\t {recall[i]: .2f}\t\t {f1_score[i]: .2f}')
Learn Data Science with
Ngoài
Threshold Accuracy Precision Recall F1 Score 0.00 0.37 0.37 1.00 0.54 0.05 0.41 0.39 1.00 0.56 0.11 0.55 0.45 0.99 0.62 0.16 0.78 0.63 0.94 0.76 0.21 0.86 0.81 0.83 0.82 0.26 0.86 0.96 0.67 0.79 0.32 0.83 0.99 0.56 0.71 0.37 0.78 1.00 0.42 0.59 0.42 0.75 1.00 0.32 0.49 0.47 0.70 1.00 0.19 0.32 0.53 0.66 1.00 0.10 0.18 0.58 0.65 1.00 0.07 0.12 0.63 0.65 1.00 0.06 0.11 0.68 0.64 1.00 0.03 0.06 0.74 0.63 1.00 0.02 0.04 0.79 0.63 1.00 0.02 0.04 0.84 0.63 1.00 0.01 0.03 0.89 0.63 1.00 0.01 0.02 0.95 0.63 1.00 0.01 0.02 1.00 0.63 1.00 0.00 0.01
Learn Data Science with
Kết quả cho thấy tác động của việc thay đổi ngưỡng. Tăng ngưỡng sẽ tăng cường Độ chính xác và giảm Thu hồi. Độ chính xác cân bằng Điểm F1 với Thu hồi cao nhất ở ngưỡng. 21
Biểu đồ sau biểu đồ Chính xác so với Thu hồi để xem các thay đổi đối với nhau
import matplotlib.pyplot as plt plt.plot(precision, recall) plt.xlabel('Precision') plt.ylabel('Recall') plt.title('Precision versus Recall') plt.show()
Learn Data Science with
KẾT QUẢ
Learn Data Science with
Bây giờ chúng ta sẽ thực hiện năm bước để tạo mô hình và lấy các số liệu cần thiết
Bước 1. Xác định các biến giải thích và biến mục tiêu
X = dataset['data'] y = dataset['target']
Learn Data Science with
Bước 2. Áp dụng hoạt động chuẩn hóa cho sự ổn định số
x = dataset['data'][:,3] # Column 3 is mean area of the tumor y = dataset['target'] # Apply min-max normalization x = (x - np.min(x)) / (np.max(x) - np.min(x) )
Learn Data Science with
0Bước 3. Khớp mô hình hồi quy logistic với dữ liệu tàu
x = dataset['data'][:,3] # Column 3 is mean area of the tumor y = dataset['target'] # Apply min-max normalization x = (x - np.min(x)) / (np.max(x) - np.min(x) )
Learn Data Science with
1Bước 4. Đưa ra dự đoán về dữ liệu bằng xác thực chéo
x = dataset['data'][:,3] # Column 3 is mean area of the tumor y = dataset['target'] # Apply min-max normalization x = (x - np.min(x)) / (np.max(x) - np.min(x) )
Learn Data Science with
2Bước 5. Tính toán Ma trận Nhầm lẫn theo các giá trị thực tế và dự đoán
x = dataset['data'][:,3] # Column 3 is mean area of the tumor y = dataset['target'] # Apply min-max normalization x = (x - np.min(x)) / (np.max(x) - np.min(x) )
Learn Data Science with
3Cuối cùng, chúng ta có thể tạo một bản đồ nhiệt để hiển thị ma trận nhầm lẫn
x = dataset['data'][:,3] # Column 3 is mean area of the tumor y = dataset['target'] # Apply min-max normalization x = (x - np.min(x)) / (np.max(x) - np.min(x) )
Learn Data Science with
4Ngoài ra, hãy in báo cáo phân loại để quan sát các số liệu đánh giá
x = dataset['data'][:,3] # Column 3 is mean area of the tumor y = dataset['target'] # Apply min-max normalization x = (x - np.min(x)) / (np.max(x) - np.min(x) )
Learn Data Science with
5Ngoài
x = dataset['data'][:,3] # Column 3 is mean area of the tumor y = dataset['target'] # Apply min-max normalization x = (x - np.min(x)) / (np.max(x) - np.min(x) )
Learn Data Science with
6Từ báo cáo phân loại, chúng ta có thể quan sát giá trị của các chỉ số đánh giá cho từng lớp và giá trị trung bình của từng chỉ số. Ví dụ: độ chính xác và độ thu hồi của mô hình cho Lớp 0 đều là 1. 00, có nghĩa là mô hình có thể dự đoán chính xác tất cả các trường hợp của Lớp 0
Lưu ý rằng báo cáo đưa ra số lượng phiên bản cho mỗi lớp. def a_simple_classifier(x, thres = 0.5): predicted = np.zeros(len(x)) for i in range(len(x)): if x[i] < thres: predicted[i] = 1 return predicted
Learn Data Science with
2 và def a_simple_classifier(x, thres = 0.5): predicted = np.zeros(len(x)) for i in range(len(x)): if x[i] < thres: predicted[i] = 1 return predicted
Learn Data Science with
3 lần lượt là giá trị trung bình không có trọng số và giá trị trung bình có trọng số so với mức hỗ trợHơn nữa, thư viện def a_simple_classifier(x, thres = 0.5): predicted = np.zeros(len(x)) for i in range(len(x)): if x[i] < thres: predicted[i] = 1 return predicted
Learn Data Science with
4 có các chức năng riêng biệt cho từng chỉ số đánh giá mà bạn có thể tìm thấy trong tài liệu của họDưới đây là các ví dụ về cách tính riêng từng chỉ số bằng cách sử dụng def a_simple_classifier(x, thres = 0.5): predicted = np.zeros(len(x)) for i in range(len(x)): if x[i] < thres: predicted[i] = 1 return predicted
Learn Data Science with
4x = dataset['data'][:,3] # Column 3 is mean area of the tumor y = dataset['target'] # Apply min-max normalization x = (x - np.min(x)) / (np.max(x) - np.min(x) )
Learn Data Science with
7Ngoài
x = dataset['data'][:,3] # Column 3 is mean area of the tumor y = dataset['target'] # Apply min-max normalization x = (x - np.min(x)) / (np.max(x) - np.min(x) )
Learn Data Science with
8Các số liệu đánh giá trên đưa ra mức trung bình của các lớp. Nếu chúng ta muốn quan sát độ chính xác cho từng lớp riêng biệt, chúng ta cần xác định tham số def a_simple_classifier(x, thres = 0.5): predicted = np.zeros(len(x)) for i in range(len(x)): if x[i] < thres: predicted[i] = 1 return predicted
Learn Data Science with
6. Một ví dụ cho Lớp 1 được đưa ra dưới đâyx = dataset['data'][:,3] # Column 3 is mean area of the tumor y = dataset['target'] # Apply min-max normalization x = (x - np.min(x)) / (np.max(x) - np.min(x) )
Learn Data Science with
9Ngoài
def a_simple_classifier(x, thres = 0.5): predicted = np.zeros(len(x)) for i in range(len(x)): if x[i] < thres: predicted[i] = 1 return predicted
Learn Data Science with
0Bắt đầu học miễn phí
Nhận thông tin cập nhật trong hộp thư đến của bạn
Tham gia cùng hơn 7.500 người học khoa học dữ liệu
Bài viết gần đây
Ưu đãi khóa học tốt nhất cho Thứ Sáu Đen và Thứ Hai Điện Tử 2022Hàm sigmoidchấm sản phẩm7 khóa học về trí tuệ nhân tạo (AI) tốt nhất năm 20237 khóa học về trí tuệ nhân tạo (AI) tốt nhất
Các khóa học hàng đầu bạn có thể tham gia ngay hôm nay để bắt đầu hành trình vào lĩnh vực Trí tuệ nhân tạo
Tìm hiểu thêmNhận thông tin cập nhật trong hộp thư đến của bạn
Tham gia cùng hơn 7.500 người học khoa học dữ liệu
Gặp gỡ các tác giả
Fatih Karabiber Ph. D. trong Kỹ thuật máy tính, Nhà khoa học dữ liệu
Phó Giáo sư Kỹ thuật Máy tính. Tác giả/đồng tác giả của hơn 30 ấn phẩm tạp chí. Giảng viên các khóa học sau đại học/đại học. Người hướng dẫn luận văn tốt nghiệp. Tư vấn cho các công ty CNTT