Scikit learn sklearn中的精确性、召回和混淆矩阵问题
我已经在keras培训了一个模型,并做了一些预测。为了评估我的模型的性能,我使用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=[
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。@Negreanu0.8448
是label=1
的召回分数。您可以请参见回答中的分类报告。哦,是的!谢谢!
Test confusion matrix :
[[1555 13]
[ 9 49]]
Precision and recall:
Test Precision :: 0.845
Test Recall :: 0.79