Làm cách nào để vẽ ma trận nhầm lẫn theo cách thủ công trong python?

def consault_matrix[pred, original]. # chuyển nhãn ban đầu và dự đoán cho chức năng này

ma trận = np. số không[[2,2]] # từ ma trận trống 2x2

cho tôi trong phạm vi [len [pred]]. #ma trận nhầm lẫn dành cho 2 lớp. 1,0

nếu int[pred[i]]==1 và int[ original[i]]==0

matrix[0,0]+=1 #True positive

elif int[pred[i]]==-1 và int[ original[i]]==1

matrix[0,1]+=1 #False positive

elif int[pred[i]]==0 và int[ original[i]]==1

matrix[1,0]+=1 #False Phủ định

elif int[pred[i]]==0 và int[ original[i]]==0

matrix[1,1]+=1 #True Phủ định

độ chính xác=ma trận[0,0]/[ma trận[0,0]+ma trận[0,1]]

in ["Chính xác. ",độ chính xác]

gọi lại=ma trận[0,0]/[ma trận[0,0]+ma trận[1,0]]

độ đặc hiệu=ma trận[1,1]/[ma trận[0,1]+ma trận[1,1]]

print["Tính đặc hiệu. ", tính đặc hiệu]

negative_pred_value=ma trận[1,1]/[ma trận[1,0]+ma trận[1,1]]

print["Giá trị dự đoán âm. ",negative_pred_value]

f1=2[độ chính xác*thu hồi]/[độ chính xác+thu hồi]

#đoạn mã trên cộng các tần số của tps,tns,fps,fns và một ma trận được hình thành

Cách thêm nhãn và tỷ lệ phần trăm vào ma trận nhầm lẫn được vẽ bằng bản đồ nhiệt Seaborn. Cộng với một số tùy chọn bổ sung

Một công cụ tuyệt vời để đánh giá hành vi và hiểu tính hiệu quả của phân loại nhị phân hoặc phân loại là Ma trận nhầm lẫn. Một giáo sư khoa học dữ liệu khôn ngoan đã từng nói

“Việc sử dụng ma trận nhầm lẫn tốt giúp phân biệt một nhà khoa học dữ liệu giỏi với một vụ hack. ”

Ahh… những kỷ niệm đẹp từ nhóm học tập

lưu ý bên lề. Tôi cực kỳ thích ma trận nhầm lẫn tên vì nó khiến tôi nhớ đến Giosue Cozzarelli - thí sinh cuộc thi sắc đẹp người Panama, khi được yêu cầu giải thích câu nói của Khổng Tử. “Đọc sách mà không suy ngẫm là một công việc vô ích. ” tuyên bố rằng “Khổng Tử là một trong những người đã phát minh ra sự nhầm lẫn… Vì điều này, ông ấy là một trong những người già nhất… là một trong những người già nhất. Cảm ơn bạn. ”

Khi tôi nghe thấy ma trận nhầm lẫn, tôi luôn nghĩ về điều này và sau đó cười một mình. … Dù sao thì, nói về khiếu hài hước kỳ lạ của tôi đủ rồi, hãy quay lại với Ma trận bối rối

Ma trận nhầm lẫn là một mảng 2 chiều so sánh các nhãn danh mục được dự đoán với nhãn thực. Đối với phân loại nhị phân, đây là các danh mục Tích cực Thực sự, Tiêu cực Thực sự, Tích cực Sai và Tiêu cực Sai

Giả sử rằng bạn đã phù hợp với mô hình hồi quy logistic, ma trận nhầm lẫn có thể được tính toán theo cách thủ công hoặc nếu bạn lười biếng [hay còn gọi là thông minh]… bạn có thể sử dụng hàm mess_matrix từ sklearn

Đoạn mã dưới đây phù hợp với Mô hình hồi quy logistic và xuất ra ma trận nhầm lẫn. X là khung dữ liệu của các yếu tố dự đoán của tôi trong khi y chứa dữ liệu cho danh mục mục tiêu [Tôi bỏ qua phân tách kiểm tra đào tạo để đơn giản vì nó không liên quan đến bài đăng trên blog này]

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix
#Fit the model
logreg = LogisticRegression[C=1e5]
logreg.fig[X,y]
#Generate predictions with the model using our X values
y_pred = logreg.predict[X]
#Get the confusion matrix
cf_matrix = confusion_matrix[y, y_pred]
print[cf_matrix]

đầu ra

array[[[23,  5],
[ 3, 30]]]

Đầu ra có ý nghĩa, nhưng trông giống như rác tuyệt đối. May mắn thay, chúng ta có thể làm cho nó đẹp hơn với bản đồ nhiệt từ thư viện Seaborn

import seaborn as sns
sns.heatmap[cf_matrix, annot=True]

Oooooh gọn gàng làm sao. Nhưng sẽ không hay sao nếu tôi có thể thấy bao nhiêu phần trăm dữ liệu của mình được thể hiện trong mỗi góc phần tư?

Nó có thể được thực hiện dễ dàng như sau

sns.heatmap[cf_matrix/np.sum[cf_matrix], annot=True, 
fmt='.2%', cmap='Blues']

Cái này cũng hay đấy. Tôi thậm chí đã thay đổi màu sắc thành thứ gì đó hấp dẫn hơn với thuộc tính cmap… nhưng nếu tôi muốn xem cả số lượng và tỷ lệ phần trăm cùng một lúc thì sao?

Tạo bản đồ nhiệt có nhãn

labels = [‘True Neg’,’False Pos’,’False Neg’,’True Pos’]
labels = np.asarray[labels].reshape[2,2]
sns.heatmap[cf_matrix, annot=labels, fmt=‘’, cmap='Blues']

cái này hay đấy. Trường fmt đã được thêm vào để ngăn định dạng được áp dụng cho nhãn thủ công. …nhưng với hình ảnh trực quan này, tôi đã mất tất cả thông tin chi tiết giúp nó hữu ích

Với khả năng thêm nhãn tùy chỉnh bằng chuỗi chú thích, tôi nhận ra rằng tôi có thể tạo nhãn tùy chỉnh chứa tất cả thông tin tôi muốn

Nếu tôi có thể tạo các chuỗi chứa tất cả thông tin mà tôi muốn, tôi có thể áp dụng chúng vào bản đồ nhiệt và hiển thị mọi thứ cùng một lúc

group_names = [‘True Neg’,’False Pos’,’False Neg’,’True Pos’]group_counts = [“{0:0.0f}”.format[value] for value in
cf_matrix.flatten[]]
group_percentages = [“{0:.2%}”.format[value] for value in
cf_matrix.flatten[]/np.sum[cf_matrix]]
labels = [f”{v1}\n{v2}\n{v3}” for v1, v2, v3 in
zip[group_names,group_counts,group_percentages]]
labels = np.asarray[labels].reshape[2,2]sns.heatmap[cf_matrix, annot=labels, fmt=‘’, cmap='Blues']

Việc này thật là tuyệt. Tôi đã có một số tên nhóm, số lượng và tỷ lệ phần trăm

Vậy… điều gì sẽ xảy ra nếu tôi đưa tất cả vào một chức năng và bao gồm các tùy chọn hiển thị hoặc không hiển thị một số tham số nhất định, đồng thời chuyển qua một số tùy chọn bẩm sinh khác như bản đồ màu hoặc hiển thị thanh màu? . Với những suy nghĩ này trong đầu, tôi đã tạo ra một chức năng thực hiện điều đó. Vui lòng truy cập kho lưu trữ bên dưới

DTrimarchi10/confusion_matrix

Chứa cf_matrix. py có chức năng tạo hình ảnh đẹp mắt về ma trận nhầm lẫn. …

github. com

Hàm sẽ lấy một mảng Numpy 2 chiều biểu thị một ma trận nhầm lẫn. Nó có nhiều tùy chọn để thay đổi đầu ra. Các giá trị mặc định là hiển thị [không ẩn] mọi thứ. Hàm chứa một chuỗi tài liệu hiển thị tất cả các tùy chọn. Tôi đã bao gồm chuỗi tài liệu bên dưới để thuận tiện

This function will make a pretty plot of an sklearn Confusion Matrix cm using a Seaborn heatmap visualization.

Arguments
---------
cf: confusion matrix to be passed in

group_names: List of strings that represent the labels row by row
to be shown in each square.

categories: List of strings containing the categories to be
displayed on the x,y axis. Default is 'auto'

count: If True, show the raw number in the confusion matrix.
Default is True.

normalize: If True, show the proportions for each category.
Default is True.

cbar: If True, show the color bar. The cbar values are
based off the values in the confusion matrix.
Default is True.

xyticks: If True, show x and y ticks. Default is True.

xyplotlabels: If True, show 'True Label' and 'Predicted Label' on
the figure. Default is True.

sum_stats: If True, display summary statistics below the figure.
Default is True.

figsize: Tuple representing the figure size. Default will be
the matplotlib rcParams value.

cmap: Colormap of the values displayed from
matplotlib.pyplot.cm. Default is 'Blues'

Dưới đây là một số ví dụ với kết quả đầu ra

labels = [‘True Neg’,’False Pos’,’False Neg’,’True Pos’]
categories = [‘Zero’, ‘One’]
make_confusion_matrix[cf_matrix,
group_names=labels,
categories=categories,
cmap=’binary’]

Dưới đây là một ví dụ sử dụng bộ phân loại không nhị phân [3x3 trong trường hợp này]

________số 8

Bạn thực sự có thể làm bất cứ điều gì với nó. Tôi hy vọng rằng bạn thích bản demo nhanh này về việc cải thiện trực quan hóa ma trận nhầm lẫn. Thật tuyệt khi có một cách hay để trực quan hóa dữ liệu của bạn. Vui lòng sao chép mã của tôi hoặc đưa ra đề xuất về cách cập nhật chức năng. Chúc mừng

Chúng ta có thể vẽ ma trận nhầm lẫn cho hồi quy không?

Ma trận nhầm lẫn là một trong những số liệu dễ dàng và trực quan nhất được sử dụng để tìm độ chính xác của mô hình phân loại, trong đó đầu ra có thể thuộc hai hoặc nhiều loại. Đây là phương pháp phổ biến nhất được sử dụng để đánh giá hồi quy logistic .

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

confusion_matrix[] được sử dụng để tìm ma trận nhầm lẫn từ các dự đoán và nhãn. .
cú pháp. dòng chảy căng. môn Toán. sự nhầm lẫn_ma trận [nhãn, dự đoán, num_classes, trọng số, dtype, tên]
Thông số
trả lại. Nó trả về một ma trận nhầm lẫn có dạng [n,n] trong đó n là số lượng nhãn có thể có

Chủ Đề