Hướng dẫn how to print confusion matrix in python - làm thế nào để in ma trận nhầm lẫn trong python

Ghi chú

Nhấn vào đây để tải xuống mã ví dụ đầy đủ hoặc để chạy ví dụ này trong trình duyệt của bạn thông qua Binderhere to download the full example code or to run this example in your browser via Binder

Ví dụ về việc sử dụng ma trận nhầm lẫn để đánh giá chất lượng đầu ra của bộ phân loại trên tập dữ liệu IRIS. Các phần tử đường chéo biểu thị số lượng điểm mà nhãn dự đoán bằng với nhãn thực, trong khi các phần tử ngoài đường chéo là các điểm bị phân loại sai. Các giá trị đường chéo của ma trận nhầm lẫn càng cao, cho thấy nhiều dự đoán chính xác.

Các số liệu cho thấy ma trận nhầm lẫn có và không có chuẩn hóa theo kích thước hỗ trợ lớp (số phần tử trong mỗi lớp). Kiểu bình thường hóa này có thể thú vị trong trường hợp mất cân bằng lớp học để có một cách giải thích trực quan hơn về lớp nào đang bị phân loại sai.

Ở đây, kết quả không tốt như chúng có thể là lựa chọn của chúng tôi cho tham số chính quy hóa C không phải là tốt nhất. Trong các ứng dụng thực tế, tham số này thường được chọn bằng cách sử dụng điều chỉnh các tham số của công cụ ước tính.Tuning the hyper-parameters of an estimator.

Confusion matrix, without normalization
[[13  0  0]
 [ 0 10  6]
 [ 0  0  9]]
Normalized confusion matrix
[[1.   0.   0.  ]
 [0.   0.62 0.38]
 [0.   0.   1.  ]]

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 ConfusionMatrixDisplay

# import some data to play with
iris = datasets.load_iris()
X = iris.data
y = iris.target
class_names = iris.target_names

# 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)

# Run classifier, using a model that is too regularized (C too low) to see
# the impact on the results
classifier = svm.SVC(kernel="linear", C=0.01).fit(X_train, y_train)

np.set_printoptions(precision=2)

# Plot non-normalized confusion matrix
titles_options = [
    ("Confusion matrix, without normalization", None),
    ("Normalized confusion matrix", "true"),
]
for title, normalize in titles_options:
    disp = ConfusionMatrixDisplay.from_estimator(
        classifier,
        X_test,
        y_test,
        display_labels=class_names,
        cmap=plt.cm.Blues,
        normalize=normalize,
    )
    disp.ax_.set_title(title)

    print(title)
    print(disp.confusion_matrix)

plt.show()

Tổng thời gian chạy của tập lệnh: (0 phút 0.164 giây) ( 0 minutes 0.164 seconds)

Phòng trưng bày được tạo ra bởi Sphinx-Gallery


Trên trang này, W3Schools.com hợp tác với Học viện Khoa học Dữ liệu NYC, để cung cấp nội dung đào tạo kỹ thuật số cho sinh viên của chúng tôi.


Ma trận nhầm lẫn là gì?

Đó là một bảng được sử dụng trong các vấn đề phân loại để đánh giá các lỗi trong mô hình được thực hiện.

Các hàng đại diện cho các lớp thực tế mà kết quả nên có. Trong khi các cột đại diện cho các dự đoán chúng tôi đã thực hiện. Sử dụng bảng này, thật dễ dàng để xem dự đoán nào là sai.

Tạo ma trận nhầm lẫn

Ma trận nhầm lẫn có thể được tạo ra bởi các dự đoán được thực hiện từ hồi quy logistic.

Bây giờ chúng tôi sẽ tạo ra các giá trị thực tế và dự đoán bằng cách sử dụng Numpy:

import numpy

Tiếp theo chúng ta sẽ cần tạo các số cho các giá trị "thực tế" và "dự đoán".

actual = numpy.random.binomial(1, 0.9, size = 1000)
predicted = numpy.random.binomial(1, 0.9, size = 1000)

Để tạo ma trận nhầm lẫn, chúng ta cần nhập các số liệu từ mô -đun Sklearn.

from sklearn import metrics

Khi các số liệu được nhập, chúng ta có thể sử dụng hàm ma trận nhầm lẫn trên các giá trị thực tế và dự đoán của chúng ta.

confusion_matrix = metrics.confusion_matrix(actual, predicted)

Để tạo một màn hình trực quan dễ hiểu hơn, chúng ta cần chuyển đổi bảng thành màn hình ma trận nhầm lẫn.

cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix, display_labels = [False, True])

Vizualizing màn hình yêu cầu chúng tôi nhập pyplot từ matplotlib.

import matplotlib.pyplot as plt

Cuối cùng để hiển thị cốt truyện, chúng ta có thể sử dụng các hàm lô () và show () từ pyplot.

cm_display.plot()
plt.show()

Xem toàn bộ ví dụ trong hành động:

Thí dụ

Nhập matplotlib.pyplot với tư cách là pltimport numpyfrom sklearn nhập số
import numpy
from sklearn import metrics

thực tế = numpy.random.binomial (1, .9, size = 1000) dự đoán = numpy.random.binomial (1, .9, size = 1000)
predicted = numpy.random.binomial(1,.9,size = 1000)

Infusion_Matrix = Metrics.Confusion_Matrix (thực tế, dự đoán)

cm_display = metrics.confusionmatrixdisplay (influsion_matrix = confusion_matrix, display_labels = [false, true])

cm_display.plot()plt.show()
plt.show()

Kết quả

Hướng dẫn how to print confusion matrix in python - làm thế nào để in ma trận nhầm lẫn trong python

Chạy ví dụ »

Kết quả giải thích

Ma trận nhầm lẫn được tạo ra có bốn góc phần tư khác nhau:

Đúng tiêu cực (góc phần tư trên bên trái) Sai dương (Quadrant đứng đầu bên phải) Sai âm (Quadrant dưới bên trái) Đúng Tích cực (Quadrant dưới bên phải)
False Positive (Top-Right Quadrant)
False Negative (Bottom-Left Quadrant)
True Positive (Bottom-Right Quadrant)

Đúng có nghĩa là các giá trị đã được dự đoán chính xác, sai có nghĩa là có lỗi hoặc dự đoán sai.

Bây giờ chúng tôi đã tạo ra một ma trận nhầm lẫn, chúng tôi có thể tính toán các biện pháp khác nhau để định lượng chất lượng của mô hình. Đầu tiên, hãy nhìn vào độ chính xác.


QUẢNG CÁO


Tạo ra số liệu

Ma trận cung cấp cho chúng tôi nhiều số liệu hữu ích giúp chúng tôi đánh giá mô hình phân loại.

Các biện pháp khác nhau bao gồm: độ chính xác, độ chính xác, độ nhạy (thu hồi), độ đặc hiệu và điểm F, được giải thích dưới đây.


Sự chính xác

Các biện pháp chính xác tần suất mô hình là chính xác.

Làm thế nào để tính toán

(Đúng tích cực + Đúng tiêu cực) / Tổng dự đoán

Thí dụ

Nhập matplotlib.pyplot với tư cách là pltimport numpyfrom sklearn nhập số

Chạy ví dụ »


Kết quả giải thích

Ma trận nhầm lẫn được tạo ra có bốn góc phần tư khác nhau:

Làm thế nào để tính toán

(Đúng tích cực + Đúng tiêu cực) / Tổng dự đoán

Độ chính xác = Metrics.Accuracy_Score (thực tế, dự đoán)

Thí dụ

Nhập matplotlib.pyplot với tư cách là pltimport numpyfrom sklearn nhập số

Chạy ví dụ »


Kết quả giải thích

Ma trận nhầm lẫn được tạo ra có bốn góc phần tư khác nhau:

Đúng tiêu cực (góc phần tư trên bên trái) Sai dương (Quadrant đứng đầu bên phải) Sai âm (Quadrant dưới bên trái) Đúng Tích cực (Quadrant dưới bên phải)

Đúng có nghĩa là các giá trị đã được dự đoán chính xác, sai có nghĩa là có lỗi hoặc dự đoán sai.

Làm thế nào để tính toán

(Đúng tích cực + Đúng tiêu cực) / Tổng dự đoán

Độ chính xác = Metrics.Accuracy_Score (thực tế, dự đoán)

Thí dụ

Nhập matplotlib.pyplot với tư cách là pltimport numpyfrom sklearn nhập số

Chạy ví dụ »


Kết quả giải thích

Ma trận nhầm lẫn được tạo ra có bốn góc phần tư khác nhau:

Đúng tiêu cực (góc phần tư trên bên trái) Sai dương (Quadrant đứng đầu bên phải) Sai âm (Quadrant dưới bên trái) Đúng Tích cực (Quadrant dưới bên phải)

Làm thế nào để tính toán

(Đúng tích cực + Đúng tiêu cực) / Tổng dự đoán

Độ chính xác = Metrics.Accuracy_Score (thực tế, dự đoán)

Thí dụ

Nhập matplotlib.pyplot với tư cách là pltimport numpyfrom sklearn nhập số

Chạy ví dụ »


F-score

Kết quả giải thích

Ma trận nhầm lẫn được tạo ra có bốn góc phần tư khác nhau:

Làm thế nào để tính toán

(Đúng tích cực + Đúng tiêu cực) / Tổng dự đoán

Độ chính xác = Metrics.Accuracy_Score (thực tế, dự đoán)

Thí dụ

Nhập matplotlib.pyplot với tư cách là pltimport numpyfrom sklearn nhập số

Chạy ví dụ »

Kết quả giải thích

Thí dụ

Nhập matplotlib.pyplot với tư cách là pltimport numpyfrom sklearn nhập số
print({"Accuracy":Accuracy,"Precision":Precision,"Sensitivity_recall":Sensitivity_recall,"Specificity":Specificity,"F1_score":F1_score})

Chạy ví dụ »



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

Làm thế nào để tạo một ma trận nhầm lẫn trong Scikit-learn ?..
Chạy một thuật toán phân loại. classifier.fit (x_train, y_train) ....
Nhập số liệu từ mô -đun Sklearn. ....
Chạy hàm ma trận nhầm lẫn trên các giá trị thực tế và dự đoán. ....
Vẽ ma trận nhầm lẫn. ....
Kiểm tra báo cáo phân loại ..

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

Âm mưu ma trận nhầm lẫn bằng cách sử dụng Seaborn để vẽ một ma trận nhầm lẫn, chúng ta phải tạo một khung dữ liệu của ma trận nhầm lẫn, và sau đó chúng ta có thể sử dụng hàm HeatMap () của Seaborn để vẽ ma trận nhầm lẫn trong Python. Ví dụ: hãy tạo một ma trận nhầm lẫn ngẫu nhiên và vẽ nó bằng hàm HeatMap ().create a data frame of the confusion matrix, and then we can use the heatmap() function of Seaborn to plot the confusion matrix in Python. For example, let's create a random confusion matrix and plot it using the heatmap() function.

Làm cách nào để tìm nhãn cho ma trận nhầm lẫn trong Python?

@Revolucionformonica Khi bạn nhận được sự bối rối_matrix, các nhãn đánh dấu trục X là nhãn 1, 0 và y trục là 0, 1 (theo giá trị trục tăng).Nếu trình phân loại là CLF, bạn có thể nhận được thứ tự lớp bằng CLF.the X axis tick labels are 1, 0 and Y axis tick labels are 0, 1 (in the axis values increasing order). If the classifier is clf , you can get the class order by clf.

Làm thế nào để bạn in độ chính xác từ một ma trận nhầm lẫn?

Dưới đây là một số biện pháp hiệu suất phổ biến nhất bạn có thể sử dụng từ ma trận nhầm lẫn.Độ chính xác: Nó cung cấp cho bạn độ chính xác tổng thể của mô hình, có nghĩa là tỷ lệ của tổng số mẫu được phân loại chính xác.Để tính độ chính xác, sử dụng công thức sau: (TP+TN)/(TP+TN+FP+FN).(TP+TN)/(TP+TN+FP+FN).