Bạn có thể sử dụng gói seaborn trong Python để hiển thị ma trận sống động hơn. Để hoàn thành nhiệm vụ này, bạn sẽ cần thêm hai thành phần sau vào mã
- nhập seaborn là sn
- sn. bản đồ nhiệt [confusion_matrix, annot=True]
Bạn cũng cần sử dụng gói matplotlib để vẽ kết quả bằng cách thêm
- nhập matplotlib. pyplot dưới dạng plt
- plt. buổi bieu diễn[]
Đặt mọi thứ lại với nhau
import pandas as pd import seaborn as sn import matplotlib.pyplot as plt data = {'y_actual': [1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0], 'y_predicted': [1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0] } df = pd.DataFrame[data] confusion_matrix = pd.crosstab[df['y_actual'], df['y_predicted'], rownames=['Actual'], colnames=['Predicted']] sn.heatmap[confusion_matrix, annot=True] plt.show[]
Theo tùy chọn, bạn cũng có thể thêm tổng số ở lề của ma trận nhầm lẫn bằng cách đặt margins=True
Vì vậy, mã Python của bạn sẽ trông như thế này
import pandas as pd import seaborn as sn import matplotlib.pyplot as plt data = {'y_actual': [1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0], 'y_predicted': [1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0] } df = pd.DataFrame[data] confusion_matrix = pd.crosstab[df['y_actual'], df['y_predicted'], rownames=['Actual'], colnames=['Predicted'], margins=True] sn.heatmap[confusion_matrix, annot=True] plt.show[]
Nhận số liệu thống kê bổ sung bằng pandas_ml
Bạn có thể in các số liệu thống kê bổ sung [chẳng hạn như Độ chính xác] bằng cách sử dụng gói pandas_ml trong Python. Bạn có thể cài đặt gói pandas_ml bằng PIP
pip install pandas_ml
Sau đó, bạn sẽ cần thêm cú pháp sau vào mã
confusion_matrix = ConfusionMatrix[df['y_actual'], df['y_predicted']] confusion_matrix.print_stats[]
Đây là mã hoàn chỉnh mà bạn có thể sử dụng để lấy số liệu thống kê bổ sung
import pandas as pd from pandas_ml import ConfusionMatrix data = {'y_actual': [1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0], 'y_predicted': [1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0] } df = pd.DataFrame[data] confusion_matrix = ConfusionMatrix[df['y_actual'], df['y_predicted']] confusion_matrix.print_stats[]
Chạy mã và bạn sẽ thấy các phép đo bên dưới [ lưu ý rằng nếu bạn gặp lỗi khi chạy mã, . Ví dụ: bạn có thể thay đổi phiên bản pandas thành 0. 23. 4 sử dụng lệnh này. pip cài đặt pandas==0. 23. 4].
y_actual y_predicted
0 1 1
1 0 1
2 0 0
3 1 1
4 0 0
5 1 1
6 0 1
7 0 0
8 1 1
9 0 0
10 1 0
11 0 0
0ví dụ của chúng tôi
- TP = Tích cực Đúng = 4
- TN = True Phủ định = 5
- FP = Tích cực sai = 2
- FN = Phủ định sai = 1
Bạn cũng có thể quan sát TP, TN, FP và FN trực tiếp từ Ma trận nhầm lẫn
TN5
FP2
FN1
TP.4
Đối với dân số 12 người, Độ chính xác là
Độ chính xác = [TP+TN]/dân số = [4+5]/12 = 0. 75
Làm việc với dữ liệu phi số
Đến đây bạn đã thấy cách tạo Ma trận nhầm lẫn bằng cách sử dụng dữ liệu số. Nhưng nếu dữ liệu của bạn không phải là số thì sao?
Ví dụ: nếu dữ liệu của bạn chứa các giá trị không phải là số, chẳng hạn như 'Có' và 'Không' [thay vì '1' và '0'] thì sao?
Danh sách các nhãn để lập chỉ mục cho ma trận. Điều này có thể được sử dụng để sắp xếp lại hoặc chọn một tập hợp con các nhãn. Nếu cho trước None
, những cái xuất hiện ít nhất một lần trong y_true
hoặc y_pred
được sử dụng theo thứ tự đã sắp xếp
trọng lượng mẫu
Mới trong phiên bản 0. 18
chuẩn hóa {'true', 'pred', 'all'}, default=NoneBình thường hóa ma trận nhầm lẫn trên các điều kiện thực [hàng], dự đoán [cột] hoặc toàn bộ dân số. Nếu Không, ma trận nhầm lẫn sẽ không được chuẩn hóa
Ma trận nhầm lẫn có mục nhập hàng thứ i và cột thứ j cho biết số lượng mẫu có nhãn thực là loại thứ i và nhãn dự đoán là loại thứ j
Xem thêm
ConfusionMatrixDisplay.from_estimator
Vẽ ma trận nhầm lẫn cho một công cụ ước tính, dữ liệu và nhãn
import pandas as pd import seaborn as sn import matplotlib.pyplot as plt data = {'y_actual': [1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0], 'y_predicted': [1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0] } df = pd.DataFrame[data] confusion_matrix = pd.crosstab[df['y_actual'], df['y_predicted'], rownames=['Actual'], colnames=['Predicted'], margins=True] sn.heatmap[confusion_matrix, annot=True] plt.show[]0
Vẽ ma trận nhầm lẫn cho các nhãn đúng và dự đoán
import pandas as pd import seaborn as sn import matplotlib.pyplot as plt data = {'y_actual': [1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0], 'y_predicted': [1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0] } df = pd.DataFrame[data] confusion_matrix = pd.crosstab[df['y_actual'], df['y_predicted'], rownames=['Actual'], colnames=['Predicted'], margins=True] sn.heatmap[confusion_matrix, annot=True] plt.show[]1
Trực quan hóa ma trận nhầm lẫn
Người giới thiệu
[ 1 ]
Mục nhập Wikipedia cho ma trận Nhầm lẫn [Wikipedia và các tài liệu tham khảo khác có thể sử dụng một quy ước khác cho các trục]