Hướng dẫn confusion matrix python pandas - gấu trúc trăn ma trận nhầm lẫn

Trong hướng dẫn ngắn này, bạn sẽ thấy một ví dụ đầy đủ về một ma trận nhầm lẫn trong Python.

Các chủ đề cần được xem xét:

  • Tạo ma trận nhầm lẫn bằng cách sử dụng gấu trúc
  • Hiển thị ma trận nhầm lẫn bằng cách sử dụng Seaborn
  • Nhận chỉ số bổ sung thông qua & nbsp; pandas_ml
  • Làm việc với dữ liệu không phải là số

Tạo ma trận nhầm lẫn trong Python bằng cách sử dụng gấu trúc

Để bắt đầu, đây là bộ dữ liệu được sử dụng cho ma trận nhầm lẫn trong Python:

y_actual y_predicted
1 1
0 1
0 0
1 1
0 0
1 1
0 1
0 0
1 1
0 0
1 0
0 0

Sau đó, bạn có thể ghi dữ liệu này bằng Python bằng cách tạo gấu trúc DataFrame bằng mã này:

import pandas as pd

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)
print(df)

Đây là cách dữ liệu sẽ trông như thế nào khi bạn chạy mã:

    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

Để tạo ma trận nhầm lẫn bằng gấu trúc, bạn sẽ cần phải áp dụng & nbsp; pd.crosstab như sau:

confusion_matrix = pd.crosstab(df['y_actual'], df['y_predicted'], rownames=['Actual'], colnames=['Predicted'])
print (confusion_matrix)

Và đây là mã Python đầy đủ để tạo ma trận nhầm lẫn:

import pandas as pd

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'])
print(confusion_matrix)

Chạy mã và bạn sẽ nhận được ma trận sau:

Predicted  0  1
Actual         
0          5  2
1          1  4

Hiển thị ma trận nhầm lẫn bằng cách sử dụng & nbsp; Seaborn seaborn

Ma trận bạn vừa tạo trong phần trước là khá cơ bản.

Bạn có thể sử dụng gói Seaborn trong Python để có một màn hình hiển thị sống động hơn của ma trận. Để thực hiện nhiệm vụ này, bạn sẽ cần thêm hai thành phần sau vào mã:

  • nhập seeborn dưới dạng sn
  • Sn.HeatMap (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 như PLT
  • plt.show()

Đặ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()

Tùy chọn, & nbsp; 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 lề = 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 chỉ số bổ sung bằng cách sử dụng & nbsp; pandas_ml

Bạn có thể in các số liệu thống kê bổ sung (chẳng hạn như & nbsp; độ 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 cần thêm cú pháp sau vào mã:

confusion_matrix = ConfusionMatrix(df['y_actual'], df['y_predicted'])
confusion_matrix.print_stats()

Dưới đây là mã hoàn chỉnh mà bạn có thể sử dụng để có được các 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 đang gặp lỗi khi chạy mã, bạn có thể xem xét thay đổi phiên bản của gấu trúc. Ví dụ: bạn có thể thay đổi phiên bản của gấu trúc thành 0,23.4 Sử dụng lệnh này: PIP Cài đặt pandas == 0,23,4):note that if you’re getting an error when running the code, you may consider changing the version of pandas. For example, you may change the version of pandas to 0.23.4 using this command: pip install 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
0

Ví dụ của chúng tôi:

  • TP = tích cực đúng = 4 = True Positives = 4
  • TN = Đúng là phủ định = 5 = True Negatives = 5
  • Fp = dương tính giả = 2 = False Positives = 2
  • Fn = âm âm giả = 1 = False Negatives = 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:

Đố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 = (4+5)/12 = 0.75

Làm việc với dữ liệu không phải là số

Tạo ma trận nhầm lẫn trong Python bằng cách sử dụng gấu trúc

Để bắt đầu, đây là bộ dữ liệu được sử dụng cho ma trận nhầm lẫn trong Python:

Sau đó, bạn có thể ghi dữ liệu này bằng Python bằng cách tạo gấu trúc DataFrame bằng mã này:

  • Đây là cách dữ liệu sẽ trông như thế nào khi bạn chạy mã:
  • Để tạo ma trận nhầm lẫn bằng gấu trúc, bạn sẽ cần phải áp dụng & nbsp; pd.crosstab như sau:

Và đây là mã Python đầy đủ để tạo ma trận nhầm lẫn:

y_actual y_predicted
Chạy mã và bạn sẽ nhận được ma trận sau:Chạy mã và bạn sẽ nhận được ma trận sau:
Hiển thị ma trận nhầm lẫn bằng cách sử dụng & nbsp; SeabornChạy mã và bạn sẽ nhận được ma trận sau:
Hiển thị ma trận nhầm lẫn bằng cách sử dụng & nbsp; SeabornHiển thị ma trận nhầm lẫn bằng cách sử dụng & nbsp; Seaborn
Chạy mã và bạn sẽ nhận được ma trận sau:Chạy mã và bạn sẽ nhận được ma trận sau:
Hiển thị ma trận nhầm lẫn bằng cách sử dụng & nbsp; SeabornHiển thị ma trận nhầm lẫn bằng cách sử dụng & nbsp; Seaborn
Chạy mã và bạn sẽ nhận được ma trận sau:Chạy mã và bạn sẽ nhận được ma trận sau:
Hiển thị ma trận nhầm lẫn bằng cách sử dụng & nbsp; SeabornChạy mã và bạn sẽ nhận được ma trận sau:
Hiển thị ma trận nhầm lẫn bằng cách sử dụng & nbsp; SeabornHiển thị ma trận nhầm lẫn bằng cách sử dụng & nbsp; Seaborn
Chạy mã và bạn sẽ nhận được ma trận sau:Chạy mã và bạn sẽ nhận được ma trận sau:
Hiển thị ma trận nhầm lẫn bằng cách sử dụng & nbsp; SeabornHiển thị ma trận nhầm lẫn bằng cách sử dụng & nbsp; Seaborn
Chạy mã và bạn sẽ nhận được ma trận sau:Hiển thị ma trận nhầm lẫn bằng cách sử dụng & nbsp; Seaborn
Hiển thị ma trận nhầm lẫn bằng cách sử dụng & nbsp; SeabornHiển thị ma trận nhầm lẫn bằng cách sử dụng & nbsp; Seaborn

Ma trận bạn vừa tạo trong phần trước là khá cơ bản.

Bạn có thể sử dụng gói Seaborn trong Python để có một màn hình hiển thị sống động hơn của ma trận. Để thực hiện nhiệm vụ này, bạn sẽ cần thêm hai thành phần sau vào mã:

    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
1

nhập seeborn dưới dạng sn

    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
2

Sn.HeatMap (Confusion_Matrix, Annot = true)

    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
0