【问题标题】:Confusion Matrix query混淆矩阵查询
【发布时间】:2020-08-28 20:39:59
【问题描述】:

我有下面的代码来生成混淆矩阵,它生成 heatmapaccuracy_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。有人可以帮我修改代码,以便它显示正确的准确度分数

问候,

Bharath Vikas

【问题讨论】:

  • 调用“accuracy_score”时,您忘记提及数据框。您只提到了列名。

标签: python pandas confusion-matrix


【解决方案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]

【讨论】:

  • 我已将accuray_score_in_percentage = accuracy_score(['Actual'], ['Pred']) 替换为accuracy_score(confusion_matrix['Actual'], confusion_matrix['Pred']),但抛出错误**KeyError: Actual**
  • 对不起,我在之前的回答中犯了一个错误。我更新了。
猜你喜欢
  • 2015-12-17
  • 2020-10-01
  • 2012-01-20
  • 2019-11-23
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 2014-07-09
  • 2018-09-26
相关资源
最近更新 更多