如何正确理解混淆矩阵和classification_report

时间:2019-06-04 05:14:57

标签: python confusion-matrix

我知道这个问题在某种程度上是重复的,但是我所看到的答案都没有清楚地解决我的问题,因此我想再次询问有关混淆矩阵和此处classification_report所特有的问题。

通常,我使用随机森林分类器来预测用户是否返回我的网页,或者返回1 =“返回”并且0 =“不返回”

  1. 在训练和预测数据之后,我运行了一些评估指标,如下所示:
print('Precision score: {:.2f}'.format(precision_score(y_test, y_pred)))
print('Recall_score score: {:.2f}'.format(recall_score(y_test, y_pred)))
print('AUC.ROC score: {:.2f}'.format(roc_auc_score(y_test, y_pred)))
  

精度得分:0.63
  Recall_score得分:0.16
  AUC.ROC评分:0.56

在这一点上,我的理解是,结果代表了“返回”(值= 1)的观点,因此recall = 0.16表示正确识别了返回用户的百分比。

  
    

所以我的第一个问题是:到目前为止我的理解正确吗?

  
  1. 我计算了混淆矩阵和classification_report以确认上述结果:

print(confusion_matrix(y_test, y_pred))

  

[[99981 3250]

     

[28799 5447]]

从此混淆矩阵输出中,计算Precision和Recall会返回不同的值(分别为0.97和0.78)。

对于classification_report

print(classification_report(y_test, y_pred))

               precision    recall  f1-score   support

           0       0.78      0.97      0.86    103231
           1       0.63      0.16      0.25     34246

从分类报告中,我的假设是我对问题(1)的理解是正确的,并且上面的混淆矩阵结果表示“无回报”用户。

  
    

所以我的第二个问题是:以上结论正确吗?如果是,那么为什么混淆矩阵返回“不返回”用户的值而不是“返回”,我如何为“返回”用户计算相似的混淆矩阵?

  

0 个答案:

没有答案