我有一个多类不平衡问题。因变量如下所示。
Injury
severe Injury (Class 0) 3394
Medium Injury (Class 1) 22318
No Injury (Class 2) 208753
我已经使用参数class_weight ='balanced'的随机森林算法来处理不平衡问题。该模型得出以下结果。
[[ 650 12 9]
[ 3 2938 1670]
[ 7 917 40569]]
Accuracy Score: 0.9440299305184393
precision score: 0.9016230160324789
Recall score: 0.8612021971135553
AUC Score: 0.8739141097167544
F1 score: 0.879571098748252
precision recall f1-score support
class 0 0.98 0.97 0.98 671
class 1 0.76 0.64 0.69 4611
class 2 0.96 0.98 0.97 41493
avg / total 0.94 0.94 0.94 46775
Kappa Score: 0.7391731672532447
由于我真的对0级和1级感兴趣,因此使用“宏”方法计算精度,召回率和F1得分。
ex:
print ('precision score:', precision_score(test_y,ry_pred, average='macro'))
所以,我的问题是,我可以采用单个类(0类和1类)的精度,召回率和f1吗?还是评估模型的总体平均得分(包括2类)?
ex: F1 score for all three classes = (98+69+97)/3 = 0.8795
F1 Score for 2 classes = (98+69)/2 = 83.5
如果我必须对各个班级进行评分,那么我可以对班级0和班级1进行汇总,以说明模型对次要班级的分类情况如何吗?
此外,对于0类,该模型在98分附近表现出高分。这是过拟合的问题吗?我使用k折CV技术评估模型,并显示以下分数。它显示了总体精度,召回率和F1得分。
precision score 0.9009562240704383
recall score 0.8576816035552879
F1 score 0.8776626709718627
请提出建议。