Hướng dẫn plot confusion matrix for multiple classes python - ma trận nhầm lẫn âm mưu cho nhiều lớp python

Bài viết này đã được xuất bản như một phần của & NBSP; Data Science Blogathon

Giới thiệu

Ma trận nhầm lẫn được sử dụng để biết hiệu suất của phân loại máy học. Nó được đại diện trong một hình thức ma trận.

Ma trận nhầm lẫn cho một so sánh giữa các giá trị thực tế và dự đoán.

Ma trận nhầm lẫn là ma trận N X N, trong đó n là số lượng các lớp hoặc đầu ra.

Đối với 2 lớp, chúng ta nhận được ma trận nhầm lẫn 2 x 2.

Đối với 3 lớp, chúng tôi nhận được ma trận nhầm lẫn 3 x 3.

Ma trận nhầm lẫn có 4 thuật ngữ để hiểu dương tính thực (TP), dương tính giả (FP), tiêu cực thực (TN) và âm tính giả (FN).

Ma trận nhầm lẫn trông như thế nào?

Dưới đây là đại diện của ma trận nhầm lẫn.

Hướng dẫn plot confusion matrix for multiple classes python - ma trận nhầm lẫn âm mưu cho nhiều lớp python

Hãy cho chúng tôi hiểu ma trận nhầm lẫn cho một ví dụ phân loại nhị phân đơn giản.

Phân loại nhị phân có 2 đầu ra, đầu vào cho phân loại này sẽ rơi vào một trong 2 đầu ra hoặc lớp.

Ví dụ: Dựa trên một số đầu vào nhất định, chúng tôi phải quyết định xem người đó có bị bệnh hay không, tiểu đường hay không.

Hãy cho chúng tôi xem cách xây dựng một ma trận nhầm lẫn và hiểu các thuật ngữ của nó. Hãy xem xét chúng ta phải mô hình hóa một trình phân loại phân loại 2 loại trái cây.

Chúng tôi có 2 loại táo và nho và chúng tôi muốn mô hình học máy của chúng tôi xác định hoặc phân loại trái cây đã cho là một quả táo hoặc nho.

Vì vậy, chúng tôi lấy 15 mẫu của 2 loại trái cây, trong đó có 8 mẫu thuộc về táo và 7 mẫu thuộc lớp nho. (Lớp không có gì ngoài đầu ra, trong ví dụ này, chúng tôi có 2 lớp đầu ra Apple và nho). Chúng tôi sẽ đại diện cho Apple là 1 và nho là lớp 0.

Lớp thực tế cho 8 quả táo và 7 nho, có thể được biểu diễn dưới dạng

Thực tế = [1,1,1,1,1,1,1,1,0,0,0,0,0,0,0]]

Mô hình phân loại để dự đoán 1 cho Apple và 0 cho nho.

Giả sử rằng trình phân loại lấy tất cả 15 đầu vào và, đưa ra các dự đoán sau:

· Trong số 8 quả táo, nó sẽ phân loại 5 chính xác là Apple và dự đoán sai 3 là nho.

· Trong số 7 nho, nó sẽ phân loại 5 chính xác là nho và dự đoán sai 2 là một quả táo.

Dự đoán của trình phân loại có thể là:

Dự đoán = [1,0,0,0,1,1,1,1,0,0,0,0,0,1,1]]

Ma trận nhầm lẫn cho ví dụ này có thể được hiển thị như dưới đây.

Hướng dẫn plot confusion matrix for multiple classes python - ma trận nhầm lẫn âm mưu cho nhiều lớp python

Ví dụ của chúng tôi, giá trị dương là Apple và giá trị âm là nho.

Tích cực thực sự::

Nó có nghĩa là giá trị thực tế và các giá trị dự đoán là như nhau.

Trong trường hợp của chúng tôi, giá trị thực tế cũng là Apple và dự đoán mô hình cũng là Apple.

Nếu bạn quan sát cho ô TP, giá trị dương là giống nhau cho thực tế và dự đoán.

Sai âm::

Điều này có nghĩa là giá trị thực tế là dương trong trường hợp của chúng tôi là Apple nhưng mô hình đã dự đoán nó là âm, tức là, nho. Vì vậy, mô hình đã đưa ra dự đoán sai, nó được cho là cho một tích cực (Apple) nhưng nó đã đưa ra một tiêu cực (nho) vì vậy bất cứ điều gì đầu ra tiêu cực chúng ta có là sai, do đó cái tên giả âm.

Dương tính giả:

Điều này có nghĩa là giá trị thực tế là âm trong trường hợp của chúng tôi là nho nhưng mô hình đã dự đoán nó là dương, tức là, táo. Vì vậy, mô hình đã đưa ra dự đoán sai, nó được cho là âm tính (nho) nhưng nó đã cho tích cực (Apple) vì vậy bất cứ điều gì đầu ra tích cực chúng ta có là sai, do đó tên là dương tính.

Đúng là tiêu cực::

Nó có nghĩa là giá trị thực tế và các giá trị dự đoán là như nhau. Trong trường hợp của chúng tôi, các giá trị thực tế cũng là nho và dự đoán cũng là nho.

Các giá trị cho ví dụ trên là:

TP = 5, fn = 3, fp = 2, tn = 5.

Ma trận nhầm lẫn để phân loại nhiều lớp.

Ví dụ trên là phân loại nhị phân chỉ có 2 đầu ra nên chúng tôi có ma trận 2 x 2.

Vì vậy, điều gì sẽ xảy ra nếu các đầu ra lớn hơn 2 lớp, tức là phân loại đa lớp.

Làm thế nào để tính toán TP, FN, FP, TN?

Ma trận nhầm lẫn cho phân loại lớp 3:

Hãy cùng cố gắng trả lời câu hỏi trên với bộ dữ liệu phổ biến - bộ dữ liệu iris.

Bộ dữ liệu có 3 hoa dưới dạng đầu ra hoặc lớp, Versolor, Virginia, Setosa.

Hướng dẫn plot confusion matrix for multiple classes python - ma trận nhầm lẫn âm mưu cho nhiều lớp python

Nguồn: Google

Với sự trợ giúp của chiều dài cánh hoa, chiều rộng cánh hoa, chiều dài sepal, chiều rộng sepal, mô hình phải phân loại thể hiện đã cho là hoa Verscolor hoặc Virginia hoặc Setosa.

Hãy để áp dụng một mô hình phân loại ở đây, trình phân loại cây quyết định được áp dụng trên bộ dữ liệu trên. Bộ dữ liệu có 3 lớp do đó chúng ta nhận được ma trận nhầm lẫn 3 x 3.

Nhưng làm thế nào để biết các giá trị TP, TN, FP, FN !!!!!

Trong vấn đề phân loại đa lớp, chúng tôi đã giành được các giá trị TP, TN, FP, FN trực tiếp như trong vấn đề phân loại nhị phân. Chúng ta cần tính toán cho mỗi lớp.

#importing packages
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
#Importing of dataset to dataframe. 
df = pd.read_csv("../input/iris-flower-dataset/IRIS.csv")
______2

Cách tính FN, FP, TN, TP:

Fn: Giá trị âm tính giả cho một lớp sẽ là tổng giá trị của các hàng tương ứng ngoại trừ giá trị TP.fp: Giá trị dương tính giả cho một lớp sẽ là tổng giá trị của cột tương ứng ngoại trừ giá trị TP .Tn: Giá trị âm thực sự cho một lớp sẽ là tổng của các giá trị của tất cả các cột và hàng ngoại trừ các giá trị của lớp đó mà chúng tôi đang tính toán các giá trị cho.

TP: Giá trị dương thực sự là nơi giá trị thực tế và giá trị dự đoán là giống nhau.

Ma trận nhầm lẫn cho bộ dữ liệu IRIS như dưới đây:

Hướng dẫn plot confusion matrix for multiple classes python - ma trận nhầm lẫn âm mưu cho nhiều lớp python

1. Hãy cho chúng tôi tính toán các giá trị TP, TN, FP, FN cho lớp setosa bằng cách sử dụng các thủ thuật trên:Setosa using the Above tricks:

TP: Giá trị thực tế và giá trị dự đoán phải giống nhau. Vì vậy, liên quan đến lớp setosa, giá trị của ô 1 là giá trị TP.: The actual value and predicted value should be the same. So concerning Setosa class, the value of cell 1 is the TP value.

Fn: tổng giá trị của các hàng tương ứng ngoại trừ giá trị TP: The sum of values of corresponding rows except the TP value

Fn = (ô 2 + cell3)

= (0 + 0)

= 0

FP: Tổng giá trị của cột tương ứng ngoại trừ giá trị TP.The sum of values of corresponding column except the TP value.

Fp = (ô 4 + ô 7)

= (0 + 0)

= 0

FP: Tổng giá trị của cột tương ứng ngoại trừ giá trị TP.The sum of values of all columns and row except the values of that class that we are calculating the values for.

Fp = (ô 4 + ô 7)

TN: Tổng giá trị của tất cả các cột và hàng ngoại trừ các giá trị của lớp đó mà chúng tôi đang tính toán các giá trị cho.

TN = (ô 5 + ô 6 + ô 8 + ô 9)

= 17 + 1 +0 + 11Versicolor class the values/ metrics are calculated as below:

= 29

Tương tự, đối với lớp Versolor, các giá trị/ số liệu được tính như dưới đây:

TP: 17 (ô 5)

FN: 0 + 1 = 1 (ô 4 + ô 6)

FP: 0 + 0 = 0 (ô 2 + ô 8)

TN: 16 +0 +0 + 11 = 27 (ô 1 + ô 3 + ô 7 + ô 9).

Tôi hy vọng khái niệm này rõ ràng bạn có thể thử cho lớp Virginia.
Accuracy and AUC-ROC curve are the metrics to measure the performance of
the model.

Tại sao & nbsp; Ma trận hỗn loạn?

Ma trận nhầm lẫn cho phép chúng tôi đo lường thu hồi, độ chính xác, độ chính xác và đường cong AUC-ROC là các số liệu để đo lường hiệu suất của mô hình.

Cảm ơn vì đã đọc : )

Nếu có bất kỳ nghi ngờ và đề xuất nào, hãy kết nối với tôi qua email: [Email & NBSP; được bảo vệ]

Làm thế nào để bạn vẽ hai ma trận nhầm lẫn trong Python?

Ma trận nhầm lẫn sơ đồ cho các lớp nhị phân với nhãn bạn cần tạo danh sách các nhãn và chuyển đổi nó thành một mảng bằng NP. Phương pháp Asarray () có hình 2,2. Sau đó, mảng nhãn này phải được chuyển đến Annot thuộc tính. Điều này sẽ vạch ra ma trận nhầm lẫn với chú thích nhãn.create a list of the labels and convert it into an array using the np. asarray() method with shape 2,2 . Then, this array of labels must be passed to the attribute annot . This will plot the confusion matrix with the labels annotation.

Làm thế nào để bạn vẽ ma trận nhầm lẫn với các nhãn trong Python?

# Nhận dự đoán.....
y_pred = pipeline.predict (x_test) ....
# Tính ma trận nhầm lẫn.....
conf_matrix = confusion_matrix (y_true = y_test, y_pred = y_pred) ....
# In ma trận nhầm lẫn bằng matplotlib.....
Hình, AX = PLT.Subplots (FIGSIZE = (7.5, 7.5)) ....
Đối với tôi trong phạm vi (conf_matrix.shape [0]):.

Làm thế nào để bạn tính toán ma trận nhầm lẫn cho nhiều

Ma trận nhầm lẫn cho một so sánh giữa các giá trị thực tế và dự đoán.Ma trận nhầm lẫn là ma trận n x n, trong đó n là số lượng các lớp hoặc đầu ra.Đối với 2 lớp, chúng ta nhận được ma trận nhầm lẫn 2 x 2.Đối với 3 lớp, chúng tôi nhận được ma trận nhầm lẫn 3 x 3.The confusion matrix is a N x N matrix, where N is the number of classes or outputs. For 2 class ,we get 2 x 2 confusion matrix. For 3 class ,we get 3 X 3 confusion matrix.

Làm thế nào để bạn hiển thị một ma trận nhầm lẫn trong Python?

Tạo một ma trận nhầm lẫn..
nhập khẩu numpy ..
thực tế = numpy.random.binomial (1, 0,9, kích thước = 1000) dự đoán = numpy.random.binomial (1, 0.9, kích thước = 1000).
từ các số liệu nhập khẩu sklearn ..
cm_display = metrics.confusionmatrixdisplay (confusion_matrix = confusion_matrix, display_labels = [false, true]).
Nhập matplotlib.pyplot như plt ..