Machine learning scikit学习中的分类报告

Machine learning scikit学习中的分类报告,machine-learning,scikit-learn,report,classification,Machine Learning,Scikit Learn,Report,Classification,我想对设备的故障和无故障情况进行分类。标签A表示故障,标签B表示无故障 scikit learn为我提供了分类矩阵报告,如下所示: precision recall f1-score support A 0.82 0.18 0.30 2565 B 0.96 1.00 0.98 45100 现在,我应该使用哪个A或B结果来指定模型操作?简介 没有一个分数可以全面描述这个模

我想对设备的故障和无故障情况进行分类。标签A表示故障,标签B表示无故障

scikit learn
为我提供了分类矩阵报告,如下所示:

        precision    recall   f1-score   support
A       0.82         0.18     0.30       2565
B       0.96         1.00     0.98       45100
现在,我应该使用哪个A或B结果来指定模型操作?

简介 没有一个分数可以全面描述这个模型,这完全取决于你的目标是什么。在您的案例中,您处理的是故障检测,因此您感兴趣的是在更多的非故障案例中查找故障。同样的逻辑也适用于人群和发现携带病原体的个体

在这种情况下,对于“故障”案例(或您可能生病的案例),具有较高的召回率(也称为敏感性)通常非常重要。在这样的筛查中,诊断为“故障”通常是好的,实际上效果很好——这就是你的假阳性。为什么?因为在发动机或肿瘤中丢失故障部件的成本要比要求工程师或医生核实病例的成本高得多

解决方案 假设此假设(故障召回是最重要的指标)在您的案例中成立,那么您应该查看标签A(故障)的召回。按照这些标准,你的模型做得相当糟糕:它只发现了18%的错误。很可能是因为故障数量比非故障数量少约20倍,引入了严重偏差(需要解决)

我能想到很多情况下,这个分数实际上并不坏。如果你能检测到引擎中18%的故障(在其他系统之上),并且不引入假警报,那么它将非常有用——你不希望在一切正常的情况下经常向驾驶员发出火警。同时,您可能不想使用相同的逻辑进行癌症检测,并告诉患者“一切正常”,而诊断错误的风险非常高

韵律学 为了完整起见,我将解释这些术语。考虑这些定义:

  • tp-真正(真故障)
  • tn-真阴性(不是故障)
  • fp-假阳性(检测到故障,但正常)
  • fn-假阴性(检测正常,但为故障)

是一篇试图很好地解释什么是精度、召回率和F1的文章。

A.数据集严重不平衡,因此只有A的精度、召回率和F1分数提供了有关模型的信息。谢谢您提供完整的答案。正如您所提到的,我的数据中只有5%与故障案例有关(正如您所说的~20x),实际上,比率是这样的。你对改进结果有什么建议吗?(对于我使用的模型,我有类似的问题:svm、KNN和DT。)再次感谢您。@AliOk我很高兴它有帮助。事实上,这是一个典型的情况,你有一个非常严重的阶级不平衡。有大量的研究和不同的方法来解决这个问题,但它们与你的问题无关。如果我回答了你的问题,请接受/赞成答案,然后再问一个新的问题,最好是更具体的问题。为了让您开始学习,请查看例如SMOTE及其加权mod(WSMOTE)之类的技术。简单地选择一个不同的算法并不能解决你的问题。注释的字符太少,无法给出完整的答案。