Bộ dữ liệu Iris - Bộ dữ liệu mống mắt nổi tiếng [của Fisher hoặc Anderson] này cung cấp các phép đo tính bằng cm của các biến chiều dài và chiều rộng của đài hoa cũng như chiều dài và chiều rộng của cánh hoa, tương ứng, cho 50 bông hoa từ mỗi loài trong số 3 loài hoa diên vĩ. Các loài là Iris setosa, versicolor, và virginica
Bây giờ chúng ta đã có sẵn ma trận nhầm lẫn, hãy tính các giá trị TP, TN, FP và FN cho các loài setosa.
TP -> 5 [trường hợp giá trị dự đoán khớp với giá trị thực tế]
TN -> 10 [trường hợp ngoại trừ giá trị của lớp mà chúng tôi
FP -> 0 [sum of values of the columns except TP]
FN -> 0 [sum of values of the row except for TP]
Tiếp theo, chúng ta sẽ tính các giá trị TP, TN, FP và FN cho các loài đa sắc màu.
TP -> 3
TN -> 10
FP -> 1
FN -
Cuối cùng, chúng tôi sẽ tính các giá trị TP, TN, FP và FN cho các loài virginica.
TP -> 5
TN -> 8
FP -> 1
FN -
Đây là cách chúng ta có thể nhận được các giá trị TP, TN, FP và FN cho mỗi lớp. Sau đó, bạn có thể tính toán các giá trị Chính xác và Thu hồi cho các lớp này để kiểm tra hiệu suất của mô hình phân loại của bạn
Để hiểu số liệu nào là số liệu lý tưởng cho mô hình phân loại của bạn, bạn có thể xem qua hướng dẫn sau –
Tính toán ma trận nhầm lẫn nhiều nhãn theo lớp [mặc định] hoặc theo mẫu [samplewise=True] để đánh giá độ chính xác của phân loại và xuất ma trận nhầm lẫn cho từng lớp hoặc mẫu
Trong ma trận nhầm lẫn nhiều nhãn \[MCM\] , số lượng âm tính thực sự là \[ . ,0,0}\] , phủ định sai là \[MCM_{. ,1,0}\] , giá trị tích cực thực sự là \[MCM_{. ,1,1}\] và kết quả dương tính giả là \[MCM_{. ,0,1}\] .
Dữ liệu nhiều lớp sẽ được xử lý như thể được nhị phân hóa theo phép chuyển đổi một so với phần còn lại. Các ma trận nhầm lẫn được trả về sẽ theo thứ tự các nhãn duy nhất được sắp xếp trong liên kết của [y_true, y_pred]
Đọc thêm trong
Thông số . y_true {dạng mảng, ma trận thưa thớt} có dạng [n_samples, n_outputs] hoặc [n_samples,]Giá trị mục tiêu chân lý [chính xác]
y_pred {dạng mảng, ma trận thưa thớt} có dạng [n_samples, n_outputs] hoặc [n_samples,]Các mục tiêu ước tính được trả về bởi một bộ phân loại
sample_weight hình dạng giống như mảng [n_samples,], default=Nonetrọng lượng mẫu
nhãn hình dạng giống như mảng [n_classes,], default=NoneDanh sách các lớp hoặc chỉ mục cột để chọn một số [hoặc buộc đưa vào các lớp không có trong dữ liệu]
samplewise bool, mặc định=SaiTrong trường hợp nhiều nhãn, điều này sẽ tính toán ma trận nhầm lẫn trên mỗi mẫu
Trả về . multi_confusion ndarray của hình dạng [n_outputs, 2, 2]Ma trận nhầm lẫn 2x2 tương ứng với từng đầu ra trong đầu vào. Khi tính toán multi_confusion theo lớp [mặc định], thì n_outputs = n_labels; . Nếu labels
được xác định, kết quả sẽ được trả về theo thứ tự được chỉ định trong labels
, nếu không, kết quả sẽ được trả về theo thứ tự được sắp xếp theo mặc định
Xem thêm
Tính toán ma trận nhầm lẫn để đánh giá độ chính xác của bộ phân loại
ghi chú
multilabel_confusion_matrix
tính toán các ma trận nhầm lẫn nhiều nhãn theo lớp hoặc theo mẫu và trong các nhiệm vụ đa lớp, các nhãn được nhị phân hóa theo cách một đối với phần còn lại;
Trong bài đăng này, tôi giải thích cách ai đó có thể đọc ma trận nhầm lẫn và cách trích xuất các giá trị FP, FN, TP, TN, TPR, TNR, FPR, FNR & Độ chính xác của vấn đề phân loại nhiều lớp từ ma trận nhầm lẫn
Hình được tạo bằng cách sử dụng mã được tìm thấy trong tài liệu của scikit-learn. Giới thiệu
Trong một trong những bài đăng trước đây của tôi, “ROC Curve đã giải thích bằng ví dụ giả định về COVID-19. Hướng dẫn phân loại nhị phân & đa lớp”, tôi đã giải thích rõ ràng đường cong ROC là gì và cách nó được kết nối với Ma trận nhầm lẫn nổi tiếng. Nếu bạn không quen thuộc với thuật ngữ Ma trận nhầm lẫn và Tích cực thực sự, Tiêu cực thực sự, v.v. , tham khảo bài viết trên và tìm hiểu mọi thứ trong 6 phút hoặc tiếp tục đọc bản tóm tắt nhanh trong 2 phút
Tóm tắt 2 phút. TP, TN, FP, FN nghĩa là gì
Hãy tưởng tượng rằng chúng tôi có một bài kiểm tra có thể cho chúng tôi biết liệu một cá nhân có bị ảnh hưởng bởi vi-rút hay không trong vòng vài giây. Vì vậy, đầu ra của thử nghiệm có thể là Tích cực [bị ảnh hưởng] hoặc Tiêu cực [không bị ảnh hưởng]. Vì vậy, trong trường hợp giả định này, chúng ta có một trường hợp phân loại nhị phân
Phác thảo thủ công được thực hiện bởi tác giả. Một ví dụ về 2 quần thể, một quần thể bị ảnh hưởng bởi covid-19 và quần thể kia không bị ảnh hưởng, giả sử rằng chúng ta thực sự biết sự thật cơ bản. Ngoài ra, dựa trên đầu ra của thử nghiệm, chúng tôi có thể biểu thị một người là bị ảnh hưởng [dân số màu xanh] hoặc không bị ảnh hưởng [dân số màu đỏ]
- Những người tích cực thực sự [TP, phân phối màu xanh lam] là những người thực sự có vi-rút
- Người Âm tính Thực sự [TN, phân phối màu đỏ] là những người thực sự KHÔNG có vi-rút
- Dương tính giả [FP] là những người thực sự KHÔNG bị bệnh nhưng dựa trên xét nghiệm, họ bị biểu thị sai [Sai] là bị bệnh [Dương tính]
- Âm tính giả [FN] là những người thực sự bị bệnh nhưng dựa trên xét nghiệm, họ bị đánh giá sai [Sai] được biểu thị là KHÔNG bị bệnh [Âm tính]
Để lưu trữ tất cả các phép đo hiệu suất này, ma trận nhầm lẫn thường được sử dụng
Ma trận nhầm lẫn. Nhận TPR, TNR, FPR, FNR
Ma trận nhầm lẫn của bộ phân loại tóm tắt các phép đo hiệu suất TP, TN, FP, FN của mô hình của chúng tôi. Ma trận nhầm lẫn có thể được sử dụng thêm để trích xuất nhiều phép đo hiệu suất hơn, chẳng hạn như. TPR, TNR, FPR, FNR và độ chính xác
Sử dụng tất cả các thuật ngữ trên, chúng tôi cũng có thể xây dựng ma trận nhầm lẫn nổi tiếng bao gồm các số liệu này và sau đó chúng tôi có thể tính Tỷ lệ dương thực và Tỷ lệ dương sai như trong hình bên dưới cho trường hợp phân loại nhị phân
Hình từ Wikipedia
Xử lý các vấn đề về phân loại nhiều lớp
Ma trận nhầm lẫn có thể được xác định rõ cho bất kỳ vấn đề phân loại lớp N nào. Tuy nhiên, nếu chúng ta có nhiều hơn 2 lớp [N>2] thì các phương trình trên [trong hình ma trận nhầm lẫn] không còn đúng nữa
Trong bài viết này, tôi trình bày cách ước tính tất cả các biện pháp này cho bất kỳ số lớp nào [N]
Ví dụ làm việc với Python đa lớp
- Mô hình phân loại
Trong một bài viết trước, tôi đã giải thích mô hình SVC là gì nên ở đây chúng tôi sẽ sử dụng mô hình này làm công cụ phân loại của mình
- Bộ dữ liệu
Trong bộ dữ liệu iris, chúng tôi có 3 lớp hoa và 4 tính năng. Vì vậy, vấn đề phân loại không còn là trường hợp nhị phân nữa vì chúng ta có 3 lớp
Hãy tải dữ liệu và kiểm tra xem chúng ta có bao nhiêu lớp và mẫu trên mỗi lớp
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import plot_confusion_matrix
from sklearn.metrics import confusion_matrix# import some data to play with
iris = datasets.load_iris[]
X = iris.data
y = iris.target
class_names = iris.target_nameslabels, counts = np.unique[y, return_counts=True]
plt.bar[labels, counts, align='center']
plt.gca[].set_xticks[labels]
plt.show[]
Chúng ta có thể thấy rằng chúng ta có 3 lớp/nhóm [nhãn. 0,1,2] và trong mỗi lớp/nhóm chúng ta có 50 [i. e. chiều cao của các thanh] mẫu [ví dụ/quan sát]
Tiếp theo, chúng tôi sẽ chia dữ liệu thành các tập huấn luyện và kiểm tra trước khi khớp mô hình
# Split the data into a training set and a test set
X_train, X_test, y_train, y_test = train_test_split[X, y, random_state=0]
Tiếp theo, hãy tạo mô hình phân loại [SVC tuyến tính] và điều chỉnh mô hình bằng tập huấn luyện
# Fit the classifier
classifier = svm.SVC[kernel='linear'].fit[X_train, y_train]
Bây giờ, chúng ta sẽ dự đoán nhãn của các mẫu của bộ kiểm tra và chúng ta sẽ xây dựng ma trận nhầm lẫn của bài toán phân loại 3 lớp của chúng ta
# Predict the labels of the test set samples
predicted_labels = classifier.predict[X_test]# Build the confusion matrix of our 3-class classification problemcnf_matrix = confusion_matrix[y_test, predicted_labels]print[cnf_matrix]
#array[[[13, 0, 0],
# [ 0, 15, 1],
# [ 0, 0, 9]]]
Để đọc/hiểu rõ hơn về ma trận nhầm lẫn, hãy vẽ đồ thị
disp = plot_confusion_matrix[classifier, X_test, y_test,
display_labels=class_names,
cmap=plt.cm.Blues]
plt.show[]
Ma trận nhầm lẫn phân loại 3 lớp sử dụng mô hình SVC tuyến tính của chúng tôi. Làm thế nào để đọc nó
- Trên trục x, chúng ta có các nhãn được dự đoán và trên trục y, chúng ta có các nhãn thực của các mẫu của bộ thử nghiệm bên ngoài [hãy nhớ rằng dự đoán được thực hiện chỉ bằng bộ thử nghiệm]
- Lý tưởng nhất là một bộ phân loại hoàn hảo sẽ dẫn đến một ma trận nhầm lẫn trong đó chúng ta chỉ có các giá trị trên đường chéo i. e. trong trường hợp chúng tôi phân loại đúng tất cả các mẫu kiểm tra của cả 3 lớp/nhóm mà chúng tôi có
- Các giá trị trong hộp chỉ là số đếm. Chẳng hạn, trong trường hợp của chúng tôi, hộp phía trên bên trái có giá trị 13 bên trong và 2 hộp tiếp theo có 0 và 0. Điều này có nghĩa là chúng tôi có thể phân loại chính xác tất cả 13 mẫu thử nghiệm setosa
- Mặt khác, nhìn vào hàng thứ 2 chỉ nhóm đa sắc, có thể thấy chúng ta đã phân loại đúng 15 mẫu thử đa sắc [trên tổng số 16 mẫu có trong bộ thử] và bỏ sót 1 mẫu thử đa sắc.
Cuối cùng, đây là điều kỳ diệu
Chúng tôi sẽ ước tính FP, FN, TP, TN, TPR [Độ nhạy, tỷ lệ trúng, thu hồi hoặc tỷ lệ dương thực], TNR [Độ đặc hiệu hoặc Tỷ lệ âm thực], PPV [Giá trị dự đoán chính xác hoặc dương], NPV [Giá trị dự đoán âm]