内容

参考博文:

  1. F1分数以及micro、macro区别
    对于上面说的矩阵是不是挺懵的,它的真名叫混下矩阵,看下面

  2. 混淆矩阵
    所有正确的预测结果都在对角线上,所以从混淆矩阵中可以很方便直观的看出哪里有错误,因为他们呈现在对角线外面。
    它允许我们做出更多的分析,而不仅仅是局限在正确率。准确率对于分类器的性能分析来说,并不是一个很好地衡量指标,因为如果数据集不平衡(每一类的数据样本数量相差太大),很可能会出现误导性的结果。例如,如果在一个数据集中有95只猫,但是只有5条狗,那么某些分类器很可能偏向于将所有的样本预测成猫。整体准确率为95%,但是实际上该分类器对猫的识别率是100%,而对狗的识别率是0%。

  3. 怎么求F1分数呢? 代码实现?
    在Sklearn库中有现成的代码:
    输入: 必须是1-array的预测和GT
    输出: 得到相应的结果
    sklearn.metrics.f1_score 使用方法
    sklearn.metrics.f1_score中micro、macro、samples理解

  4. 适用什么场景?

    也就是后者会注重所有分类效果都得好! 平均效果!
    而micro则是会带有权重的思想

代码

我的实现:

def evaluation_metric(pred, label):'''pred: Prediction results with whatever sizelabel: Label with whatever sizereturn: [Evaluation Metric]'''# average=None, get the P, R, and F1 value of a single classpred = numpy.asarray(pred)label = numpy.asarray(label)Precision = precision_score(y_true=label, y_pred=pred, average="macro")Recall = recall_score(y_true=label, y_pred=pred, average="macro")F1_score = f1_score(y_true=label, y_pred=pred, average="macro")F1_score_micro = f1_score(y_true=label, y_pred=pred, average="micro")return Precision, F1_score, Recall, F1_score_micro

其中average参数有下面的几个选项

y_true:1d数组,或标签指示符数组/稀疏矩阵基本事实(正确)目标值。y_pred:1d数组,或标签指示符数组/稀疏矩阵分类器返回的估计目标。labels:list,optional包括when的标签集,以及if的顺序。可以排除数据中存在的标签,例如,以忽略多数否定类别的方式计算多类平均值,而数据中不存在的标签将导致宏平均值中的0成分。对于多标签目标,标签是列索引。默认情况下,和 中的所有标签均按排序顺序使用。average != 'binary'average is Noney_truey_predpos_label:str或int,默认值为1要报告是否average='binary'以及数据是否为二进制的类。如果数据是多类或多标签的,则将被忽略;设置,labels=[pos_label]并且只会报告该标签的得分。average != 'binary'average:string, [None, ‘binary’ (default), ‘micro’, ‘macro’, ‘samples’, ‘weighted’]对于多类/多标签目标,此参数是必需的。如果为None,则返回每个班级的分数。否则,这将确定对数据执行的平均类型:'binary':仅报告由指定的类的结果pos_label。仅在目标(y_{true,pred})为二进制时适用。'micro':通过计算正确,错误和否定的总数来全局计算指标。'macro':计算每个标签的指标,并找到其未加权平均值。这没有考虑数据数量的不平衡。而是平等地对待每一类'weighted':计算每个标签的指标,并找到其平均权重(受支持)(每个标签的真实实例数)。这改变了“宏观”以解决标签的不平衡。这可能导致F得分不在精确度和召回率之间。'samples':计算每个实例的指标,并找到其平均值(仅对不同于的多标签分类有意义 accuracy_score)。sample_weight:array-like of shape (n_samples,), default=None样品重量。zero_division:“warn”, 0 or 1, default=”warn”设置除法为零(即所有预测和标签均为负)时返回的值。如果设置为“ warn”,则该值为0,但也会发出警告。

返回值:

f1_score:float or array of float, shape = [n_unique_labels]二进制分类中的阳性类别的F1分数,或者对于多类别任务,每个类别的F1分数的加权平均值。

例子:

 Examples-------->>> from sklearn.metrics import precision_score>>> y_true = [0, 1, 2, 0, 1, 2]>>> y_pred = [0, 2, 1, 0, 0, 1]>>> precision_score(y_true, y_pred, average='macro')0.22...>>> precision_score(y_true, y_pred, average='micro')0.33...>>> precision_score(y_true, y_pred, average='weighted')0.22...>>> precision_score(y_true, y_pred, average=None)array([0.66..., 0.        , 0.        ])>>> y_pred = [0, 0, 0, 0, 0, 0]>>> precision_score(y_true, y_pred, average=None)array([0.33..., 0.        , 0.        ])>>> precision_score(y_true, y_pred, average=None, zero_division=1)array([0.33..., 1.        , 1.        ])"""

其中micro是求的全部的准确率! 没有考虑数据的平衡性!

average = “micro” = average=NULL

precision_score
recall_score
f1_score


记录F1分数和召回率相关推荐

  1. 准确率 召回率_机器学习tips(四):精确率(precision)和召回率(recall)

    精确率(precision)和召回率(recall) 混淆矩阵 True Positive(真正, TP):将正类预测为正类数. True Negative(真负 , TN):将负类预测为负类数. F ...

  2. 8. 关于打分函数F1分数 TPR PPV等

    总结至https://blog.csdn.net/qq_21997625/article/details/79853483 1.PPV=nrow(tp)/(nrow(tp)+nrow(fp)) #wy ...

  3. 一文详尽混淆矩阵、准确率、精确率、召回率、F1值、P-R 曲线、ROC 曲线、AUC 值、Micro-F1 和 Macro-F1

    文章目录 二分类的评价指标 一.混淆矩阵与 TP.TN.FP.FN 二.准确率.精确率.召回率.F1值 三.P-R 曲线 四.ROC 曲线.AUC 值 五.P-R曲线和ROC曲线有什么区别,如何选择? ...

  4. F1值(F-Measure)、准确率(Precision)、召回率(Recall)简单理解

    准确率与召回率(Precision && Recall) 准确率和召回率是广泛用于信息检索和统计学分类领域的两个度量值,用来评价结果的质量. 准确率(Precision) Precis ...

  5. 02_混淆矩阵、准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F值(F-Measure) +Roc曲线和PR曲线+sklearn中分类模型评估API+ 自己补充整理

    此博文参考: 关于ROC绘制参考博文: https://blog.csdn.net/u011630575/article/details/80250177 Python+ROC相关的博文: https ...

  6. 机器学习中精准率/召回率/PR曲线/AUC-ROC曲线等概念

    目录 TP/TN/FP/FN accuracy(准确率) precision(精确率/查准率) recall(召回率/查全率) F1分数与Fβ分数 PR曲线(precision recall curv ...

  7. python计算召回率_序列标注的准确率和召回率计算

    最近在用BiLSTM+CRF做命名实体识别问题.关于模型效果评估,很多提到用conlleval.pl来实现,conlleval.pl是perl语言写的,原谅我没看懂.最后还是决定自己写个程序算一算准确 ...

  8. 召回率(Recall),精确率(Precision),交除并(Intersection-over-Union(IoU)

    简介 做一下记录,方便查看 召回率和精准率 混淆矩阵 True Positive(真正, TP):将正类预测为正类数. True Negative(真负 , TN):将负类预测为负类数. False ...

  9. python计算召回率代码_序列标注的准确率和召回率计算

    最近在用BiLSTM+CRF做命名实体识别问题.关于模型效果评估,很多提到用conlleval.pl来实现,conlleval.pl是perl语言写的,原谅我没看懂.最后还是决定自己写个程序算一算准确 ...

最新文章

  1. 前方高能:1024程序员节读书攻略来来来来啦!
  2. 学python是看书还是看视频-自学Python是看书还是看视频?
  3. 1、cocos2dx开发学习第一篇-项目工程的创建
  4. 字符串的方法、注释及示例1.
  5. [.NET] 建构子中传递子对象的对象
  6. 逐步优化求解最大子序列和
  7. 如何通过Windows Server 2008 R2建立NFS存储
  8. 用css实现模仿火狐社区的一个提示框
  9. 【java】Java运行时动态生成类几种方式
  10. 使用Xamarin在Visual Studio中开发Android应用
  11. 《数据结构》严蔚敏与陈越伪代码总结
  12. 使用Maven导出war包
  13. bootstrap-table分页插件使用
  14. 扫地机器人 杂牌_国内扫地机器人哪个牌子好?
  15. 初学原生ajax(1):原生AJAX的简单介绍与使用
  16. 软件工程第4次作业------石墨文档Android客户端案例分析
  17. 修复硬盘坏道故障及其后期处理方法
  18. 智能优化与机器学习结合算法实现数据分类matlab代码清单
  19. 有限元方法入门:有限元方法简单的二维算例(三角形剖分)
  20. 计算机对英语写作的帮助,计算机文字处理与英语写作教学的融合

热门文章

  1. servlet中web.xml配置详解
  2. std::make_unique<T>和std::make_shared<T>
  3. 一个深入学习Linux/C/C++的原创技术号
  4. 这个结构体对齐输出有意思
  5. Cortex M3存储器映射
  6. javaScript——内置函数1
  7. 经纬度坐标系转东北天_大地坐标系(WGS-84)、地心地固坐标系(ECEF)与东北天坐标系(ENU)的相互转换C语言代码分享...
  8. python爬虫什么网站都能爬吗_python如何爬取动态网站
  9. 【Pytorch神经网络基础理论篇】 04 线性代数
  10. Promise学习——解决回调地狱问题