zoukankan      html  css  js  c++  java
  • classification_report&精确度/召回率/F1值

    classification_report简介


    sklearn中的classification_report函数用于显示主要分类指标的文本报告.在报告中显示每个类的精确度,召回率,F1值等信息。
    主要参数:
    y_true:1维数组,或标签指示器数组/稀疏矩阵,目标值。
    y_pred:1维数组,或标签指示器数组/稀疏矩阵,分类器返回的估计值。
    labels:array,shape = [n_labels],报表中包含的标签索引的可选列表。
    target_names:字符串列表,与标签匹配的可选显示名称(相同顺序)。
    sample_weight:类似于shape = [n_samples]的数组,可选项,样本权重。
    digits:int,输出浮点值的位数.

    classification_report用法示例:

    from sklearn.metrics import classification_report
    y_true = [0, 1, 2, 2, 2]
    y_pred = [0, 0, 2, 2, 1]
    target_names = ['class 0', 'class 1', 'class 2']
    print(classification_report(y_true, y_pred, target_names=target_names))
    

      输出:

                 precision    recall  f1-score   support
    
        class 0       0.50      1.00      0.67         1
        class 1       0.00      0.00      0.00         1
        class 2       1.00      0.67      0.80         3
    
    avg / total       0.70      0.60      0.61         5
    

      

    其中列表左边的一列为分类的标签名,右边support列为每个标签的出现次数.avg / total行为各列的均值(support列为总和).
    precision recall f1-score三列分别为各个类别的精确度/召回率及 F1 F1值.

    精确度/召回率/F1值


    精确度&召回率


    精确度/召回率/F1值在<统计学习方法>和周志华的<机器学习>中都有详细介绍,以下参考维基百科中Precision and recall的说明:

    如下图所示,假设有若干张图片,其中12张是狗的图片其余是猫的图片.现在利用程序去识别狗的图片,结果在识别出的8张图片中有5张是狗的图片,3张是猫的图片(属于误报).


    图中,实心小圆代表狗的图片,虚心小圆代表猫的图片,圆形区域代表识别结果.

    则该程序的精度precision=5/8,召回率recall=5/12。

    当一个搜索引擎返回30个页面时,只有20页是相关的,而没有返回40个额外的相关页面,其精度为20/30 = 2/3,而其召回率为20/60 = 1/3。在这种情况下,精确度是“搜索结果有多大用处”,而召回是“结果如何完整”。

     F1 F1值


     F1 F1值是精确度和召回率的调和平均值:

     2F1=1P+1R 2F1=1P+1R
     F1=2P×RP+R F1=2P×RP+R


    精确度和召回率都高时, F1 F1值也会高. F1 F1值在1时达到最佳值(完美的精确度和召回率),最差为0.在二元分类中, F1 F1值是测试准确度的量度。

    示例说明:

    from sklearn.metrics import classification_report
    y_true = [0, 1, 2, 2, 2]
    y_pred = [0, 0, 2, 2, 1]
    print(classification_report(y_true, y_pred))
    

      


    输出:

                precision    recall  f1-score   support
    
              0       0.50      1.00      0.67         1
              1       0.00      0.00      0.00         1
              2       1.00      0.67      0.80         3
    
    avg / total       0.70      0.60      0.61         5
    

      

    例中:


    对示例程序中的结果:

      precision    recall  f1-score   support
    
    0       0.50      1.00      0.67         1
    1       0.00      0.00      0.00         1
    2       1.00      0.67      0.80         3
    

      

    第一行的计算:
    即0的预测情况:真实值中有1个0,预测值中有2个0,其中1个预测正确,1个预测错误.如图所示:

     

    则,
     P=12=0.5 P=12=0.5
     R=11=1 R=11=1
     F1=212×112+1=0.67 F1=212×112+1=0.67


    第二行的计算:
    即1的预测情况:真实值中有1个1,预测值中有1个1,且预测错误.如图所示:

    则,
     P=01=0 P=01=0
     R=01=0 R=01=0
     F1=0 F1=0
    第三行的计算:
    即2的预测情况:真实值中有3个2,预测值中有2个2,且预测正确.如图所示:

    则,
     P=22=1 P=22=1
     R=23=0.67 R=23=0.67
     F1=21×231+23+=0.8
    ————————————————

    原文:https://blog.csdn.net/akadiao/article/details/78788864

  • 相关阅读:
    常规渗透:没遇到过的anquan狗
    SQLi-db 批量注入工具+教程
    国外整理的一套在线渗透测试资源合集
    重大漏洞!PHP multipart/form-data头部解析远程拒绝服务漏洞
    MS15-051 修正版Exploit(Webshell可用)
    网站渗透常用到的Python小脚本
    项目<<魔兽登录系统>>
    第七章:存储过程
    第六章:事务,视图和索引
    SQL高级查询:嵌套和分页
  • 原文地址:https://www.cnblogs.com/cheflone/p/13199678.html
Copyright © 2011-2022 走看看