Scikit learn sklearn中的精确性、召回和混淆矩阵问题

Scikit learn sklearn中的精确性、召回和混淆矩阵问题,scikit-learn,neural-network,artificial-intelligence,metrics,Scikit Learn,Neural Network,Artificial Intelligence,Metrics,我已经在keras培训了一个模型,并做了一些预测。为了评估我的模型的性能,我使用sklearn库计算了精度和召回分数以及混淆矩阵。这是我的代码: final\u predictions=模型。预测生成器(生成器测试,步骤=每个历元测试的步骤) 如果x的precision\u得分和recall\u得分的默认pos\u标签为1,则四舍五入的\u pred=[0] 从sklearn.metrics导入混淆矩阵、精度分数、召回分数、分类报告 y_true=[0]*1568+[1]*58 y_pred=[

我已经在keras培训了一个模型,并做了一些预测。为了评估我的模型的性能,我使用sklearn库计算了精度和召回分数以及混淆矩阵。这是我的代码:

final\u predictions=模型。预测生成器(生成器测试,步骤=每个历元测试的步骤)

如果x的
precision\u得分
recall\u得分
的默认
pos\u标签
1,则四舍五入的\u pred=[0]

从sklearn.metrics导入混淆矩阵、精度分数、召回分数、分类报告
y_true=[0]*1568+[1]*58
y_pred=[0]*1555+[1]*13+[0]*9+[1]*49
打印('混淆矩阵:\n',混淆矩阵(y\u真,y\u pred))
打印('precision\u score:\n',precision\u score(y\u true,y\u pred,pos\u label=1))
打印('recall_score:\n',recall_score(y_true,y_pred,pos_label=1))
打印('classification\u report:\n',classification\u report(y\u true,y\u pred))
混淆矩阵:
[[1555   13]
[   9   49]]
精密度评分:
0.7903225806451613
回忆分数:
0.8448275862068966
分类报告:
精确回忆f1分数支持
0       0.99      0.99      0.99      1568
1       0.79      0.84      0.82        58
微平均值0.99 0.99 0.99 1626
宏平均值0.89 0.92 0.90 1626
加权平均值0.99 0.99 0.99 1626
如果您想获得
label=1
precision\u score
recall\u score
。您可以设置
pos\u label=0
来设置类别

print('precision\u score:\n',precision\u score(y\u true,y\u pred,pos\u label=0))
打印('recall_score:\n',recall_score(y_true,y_pred,pos_label=0))
精密度评分:
0.9942455242966752
回忆分数:
0.9917091836734694

您是否尝试过切换
混乱矩阵()的参数
。在我看来,精度和召回率的计算方法是将49视为真正而不是真负。感谢您的回答,但是设置
python label=0
我得到的召回分数不正确。我得到0.991,应该是0.844。@Negreanu
0.8448
label=1
的召回分数。您可以请参见回答中的分类报告。哦,是的!谢谢!
Test confusion matrix :

 [[1555   13]

 [   9   49]]

Precision and recall:

Test Precision :: 0.845
Test Recall :: 0.79