Ma trận nhầm lẫn cho mã python phân loại nhiều lớp

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=None

trọng lượng mẫu

nhãn hình dạng giống như mảng [n_classes,], default=None

Danh 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=Sai

Trong 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_names
labels, 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]

Cách tính ma trận nhầm lẫn cho đa

Ma trận nhầm lẫn đưa ra so sánh giữa giá trị Thực tế và giá trị dự đoán. Ma trận nhầm lẫn là ma trận N x N, trong đó N là số lượng lớp hoặc đầu ra . Đối với 2 lớp, chúng tôi nhận được ma trận nhầm lẫn 2 x 2. Đối với lớp 3, chúng tôi nhận được ma trận nhầm lẫn 3 X 3.

Cách tính độ chính xác trong đa

Điểm chính xác = [TP + TN] / [TP + TN + FP + FN] .
Độ chính xác trung bình vĩ mô. tính toán độ chính xác cho tất cả các lớp riêng lẻ và sau đó tính trung bình cho chúng
Độ chính xác trung bình vi mô. tính toán lớp khôn ngoan true positive và false positive và sau đó sử dụng nó để tính toán độ chính xác tổng thể

Thuật toán nào phù hợp nhất cho đa

Các thuật toán phổ biến có thể được sử dụng để phân loại nhiều lớp bao gồm. .
k-Hàng xóm gần nhất
Cây quyết định
Naive Bayes
rừng ngẫu nhiên
Tăng cường độ dốc

Ma trận nhầm lẫn nhiều nhãn là gì?

Ma trận 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 theo mẫu và trong các tác vụ có nhiều lớp, các nhãn được nhị phân hóa theo một đối đầu . ví dụ.

Chủ Đề