一、相关概念

对于数据测试结果有下面4种情况:
真阳性(TP): 预测为正, 实际也为正
假阳性(FP): 预测为正, 实际为负
假阴性(FN): 预测为负,实际为正
真阴性(TN): 预测为负, 实际也为负

准确率(P) : TP/ (TP+FP)

召回率(R) : TP(TP + FN)

F1-score : 2(PR)/(P+R

f1_score原型:

sklearn.metrics.f1_score(y_true, y_pred,labels=None, pos_label=1, average=’binary’, sample_weight=None)

参数详解

1. y_true: 数据真实标签 Ground truth (correct) target values.

2. y_pred : 分类器分类标签 Estimated targets as returned by a classifier.

3. average : [None, ‘binary’ (default), ‘micro’, ‘macro’, ‘samples’, ‘weighted’] 
            多类/多标签目标需要此参数。默认为‘binary’,即二分类
    
    4. labels : 类别标签,可不填

二、实例分析

一、数据

实际数据:1, 2, 3, 4, 5, 6, 7, 8, 9

真实类别:A, A, A, A, B, B, B, C, C
预测类别:A, A, B, C, B, B, C, B, C

则各个类别的真假阳阴性:

A      B      C     总计

TP   2      2      1       5
FP   0      2      2       4
FN   2      1      1       4

二、各个类别的准确率、召回率、F1-score

A类别的准确率   : PA = 2/(2+0)= 1
A类别的召回率   : RA = 2/(2+2)= 0.5
A类别的F1-score  : FA = 2*(1*0.5)/(1+0.5) = 0.667

B类别的准确率   : PB = 2/(2+2)= 0.5
B类别的召回率   : RB = 2/(2+1)= 0.667
B类别的F1-score  : FB = 2*(0.5*0.667)/(0.5+0.667) = 0.572

C类别的准确率   : PC = 1/(1+2)= 0.333
C类别的召回率   : RC = 1/(1+1)= 0.5
C类别的F1-score  : FC = 2*(0.333*0.5)/(0.333+0.5) = 0.39976

三、F1-score

所有数据的F1-score:
有两种方式
第一种方式是计算数据中所有的TP,FP,FN,然后计算F1-score,即micro;
第二种方式是分别计算各个类别的TP,FP,FN,然后计算各个类被的F1-score,然后对F-score求平均,即macro.

micro:
P = 5/(5+4) = 0.556
R = 5/(5+4) = 0.556
F1-score = 2*(0.556*0.556)/(0.556+0.556) = 0.556

macro :
F1-score = (0.667+0.572+0.39976)/3 = 0.5462

四、使用sklearn计算f1-score

一、f1_score

为了使用sklearn的接口,分别使用1表示A类别,2表示B类别,3表示C类别,则
真实类别y_true     : 1, 1, 1, 1, 2, 2, 2, 3, 3
预测类别 y_pred   : 1, 1, 2, 3, 2, 2, 3, 2, 3

from sklearn.metrics import f1_scorey_true = [1, 1, 1, 1, 2, 2, 2, 3, 3]
y_pred = [1, 1, 2, 3, 2, 2, 3, 2, 3]f1_micro = f1_score(y_true,y_pred,average='micro')
f1_macro = f1_score(y_true,y_pred,average='macro')print('f1_micro: {0}'.format(f1_micro))
print('f1_macro: {0}'.format(f1_macro))

输出结果为:

f1_micro: 0.5555555555555556
f1_macro: 0.546031746031746

可见,与手动计算的结果一样

二、precision_recall_fscore_support

也可以使用sklearn计算各个类别的召回率准确率等

# 计算各个类别的准确率,召回率,与F1-score
from sklearn.metrics import precision_recall_fscore_supporty_true = [1, 1, 1, 1, 2, 2, 2, 3, 3]
y_pred = [1, 1, 2, 3, 2, 2, 3, 2, 3]p_class, r_class, f_class, support_micro = precision_recall_fscore_support(y_true,y_pred,labels=[1,2,3])print(p_class)
print(r_class)
print(f_class)
print(support_micro)

输出结果:

[1.         0.5        0.33333333]
[0.5        0.66666667 0.5       ]
[0.66666667 0.57142857 0.4       ]
[4 3 2]

与手动计算的一样。

注:

precision_recall_fscore_support返回每个类别的准确率,召回率,f1-score,各个指标中,每个类别的顺序与参数labels的顺序相同,比如:

p_class = [1.     0.5     0.33333333]

labels=[1,2,3]

类别1的准确率是1

类别2的准确率是0.5

类别3的准确率是0.3333333

sklearn 中F1-score的计算相关推荐

  1. 机器学习中精准度、召回率、准确率、F1 Score、G分数计算学习笔记

    目录 1.基本符号表示 2.类别下的精准度计算(precision) 3.类别下的召回率计算(recall) 4.准确率的计算(accuracy) 5.F1 Score 6.G分数 1.基本符号表示 ...

  2. sklearn计算准确率、精确率、召回率、F1 score

    目录 混淆矩阵 准确率 精确率 召回率 P-R曲线 F1 score 参考资料 分类是机器学习中比较常见的任务,对于分类任务常见的评价指标有准确率(Accuracy).精确率(Precision).召 ...

  3. R语言计算F1评估指标实战:F1 score、使用R中caret包中的confusionMatrix()函数为给定的logistic回归模型计算F1得分(和其他指标)

    R语言计算F1评估指标实战:F1 score.使用R中caret包中的confusionMatrix()函数为给定的logistic回归模型计算F1得分(和其他指标) 目录

  4. 『NLP学习笔记』Sklearn计算准确率、精确率、召回率及F1 Score

    Sklearn计算准确率.精确率.召回率及F1 Score! 文章目录 一. 混淆矩阵 1.1. 混淆矩阵定义 1.2. 例子演示 二. 准确率 2.1. 准确率定义 2.2. 例子演示 三. 精确率 ...

  5. TP、TN、FP、FN、Recall、Miss Rate、MCC、F1 Score 等指标计算

    对一个二分类问题,实际取值只有正.负两例,而实际预测出来的结果也只会有0,1两种取值.如果一个实例是正类,且被预测为正类,就是真正类(True Positive),如果是负类,被预测为正类,为假正类( ...

  6. 机器学习中的 precision、recall、accuracy、F1 Score

    1. 四个概念定义:TP.FP.TN.FN 先看四个概念定义:  - TP,True Positive  - FP,False Positive  - TN,True Negative  - FN,F ...

  7. sklearn中的支持向量机SVM(下)

    1 二分类SVC的进阶 1.1 SVC用于二分类的原理复习 sklearn中的支持向量机SVM(上) 1.2 参数C的理解进阶 有一些数据,可能是线性可分的,但在线性可分状况下训练准确率不能达到100 ...

  8. 机器学习指标(Precision、Recall、mAP、F1 Score等)

    以下文章摘录自: <机器学习观止--核心原理与实践> 京东: https://item.jd.com/13166960.html 当当:http://product.dangdang.co ...

  9. 分类指标:准确率、精确率、召回率、F1 score以及ROC、AUC、宏平均、加权平均

    本文将介绍: 混淆矩阵(Confusion Matrix) 准确率(accuracy) 召回率(recall) 精确率(precision) F1score ROC和AUC 宏平均(macro avg ...

  10. sklearn中的线性回归大家族

    1 概述 1.1 线性回归大家族 回归是一种应用广泛的预测建模技术,这种技术的核心在于预测的结果是连续型变量.决策树.随机森林.支持向量机的分类器等分类算法的预测标签是分类变量,多以{0,1}来表示, ...

最新文章

  1. 在创建的Silverlight Control中使用图片
  2. 13条注释 tips
  3. 下拉加载 实现 java_[Java教程]iscroll5实现一个下拉刷新上拉加载的效果
  4. 理解T-SQL: 脚本和批处理
  5. Visible Lattice Points SPOJ - VLATTICE
  6. 【Linux网络编程学习】阻塞、非阻塞、同步、异步以及五种I/O模型
  7. 随心所欲的DateTime显示格式
  8. Android开发实践:自定义ViewGroup的onLayout()分析
  9. JAVA 蔡羽 基础知识漫谈
  10. php 类中输出所有属性,PHP基于反射获取一个类中所有属性
  11. 如何实现pdf转换成cad呢?
  12. JavaScript设计模式----策略模式
  13. [论文笔记]Teaching Machines to Read and Comprehend
  14. 东方财富通l2决策版_东方财富三季度报点评:券茅券商中的茅台!
  15. 【NOIP2015模拟10.28B组】终章-剑之魂
  16. 视频GPU硬解码方案对比
  17. a到z的ascii码值是多少_大小写字母和数字的ascii码值是多少
  18. 算数基本定理和代数基本定理
  19. Keil无法跳转到(go to definition)函数定义的地方,而是出现Browser
  20. web前端开发技术期末考试_智慧职教mooc2020HTML5+CSS3 Web前端开发技术期末考试大全答案...

热门文章

  1. five86-2靶机渗透攻略
  2. 如何在html页面中左尖括号,想要在HTML中显示一个尖括号“
  3. 米狗族 Android平台Qt开发入门教程
  4. php捕捉Warning、Notice错误
  5. 【时光纪念】愿有岁月可回头
  6. 如何在macOS 中让Gatekeeper在任何地方允许应用程序
  7. Flink编程中遇到”scala.tools.reflect.ToolBoxError: reflective compilation has failed“的解决方法
  8. ubuntu java 中文_Ubuntu下 JAVA GUI 程序汉字显示为方框解决办法
  9. 反向代理为何叫反向代理?
  10. 6款超实用微信小程序,任何手机都需要!