Запрос матрицы путаницы

#python #pandas #confusion-matrix

#python #панды #путаница-матрица

Вопрос:

У меня есть приведенный ниже код для генерации матрицы путаницы, где он генерирует тепловую карту и accuracy_score

Источник

введите описание изображения здесь

код

 import pandas as pd
import seaborn as sn
import matplotlib.pyplot as plt
from sklearn.metrics import accuracy_score
from sklearn import metrics

data = pd.read_excel(r"Confusion Matrix.xlsx")

df = pd.DataFrame(data)
confusion_matrix = pd.crosstab(df['Actual'], df['Pred'], rownames=['Actual'], colnames=['Predicted'], margins = True)

sn.heatmap(confusion_matrix, annot=True)
plt.show()

accuray_score_in_percentage = accuracy_score(['Actual'], ['Pred'])
accuray_score_in_count = accuracy_score(['Actual'], ['Pred'], normalize=False)

print('The Precentage Accuracy is : ', accuray_score_in_percentage)
print('The Count of corrects are : ', accuray_score_in_count)
  

ВЫВОД

введите описание изображения здесь

Из приведенного выше вывода вы можете видеть, что точность преценденции равна: 0.0, а количество исправлений равно: 0 но это должно быть , точность преценденции равна: 0.3, а количество исправлений равно: 3. Может ли кто-нибудь помочь мне изменить код, чтобы он показывал мне правильные показатели точности.

С уважением,

Бхарат Викас

Комментарии:

1. При вызове ‘accuracy_score’ вы забыли упомянуть фрейм данных. Вы упомянули только имя столбца.

Ответ №1:

Вам не нужна матрица путаницы для вычисления точности.
Попробуйте :

 accuray_score_in_percentage = accuracy_score(df['Actual'], df['Pred'])  
accuray_score_in_count = accuracy_score(df['Actual'], df['Pred'], normalize=False)
  

Если вы действительно хотите использовать свою матрицу путаницы, вы можете сделать :

 accuray_score_in_percentage = (confusion_matrix.loc[0,0] confusion_matrix.loc[1,1])/confusion_matrix.loc["All","All"]
accuray_score_in_count = confusion_matrix.loc[0,0] confusion_matrix.loc[1,1]
  

Комментарии:

1. Я заменил accuray_score_in_percentage = accuracy_score(['Actual'], ['Pred']) на accuracy_score(confusion_matrix['Actual'], confusion_matrix['Pred']) , но выдал мне ошибку **KeyError: Actual**

2. Извините, я допустил ошибку в своем предыдущем ответе. Я обновил его.