首页 > 编程语言 >分类算法中精确率、召回率、F1 Score的理解

分类算法中精确率、召回率、F1 Score的理解

时间:2024-05-15 10:22:02浏览次数:20  
标签:正例 F1 score 0.1 print Score 召回 method

在机器学习和深度学习中,将分类任务的预测结果分为以下四种,被称作混淆矩阵
True Positive(TP):预测出的为正例,标签值也为正例,预测正确

False Negative(FN):预测出的为负例,标签值为正例,预测错误

False Positive(FP):预测出的为正例,标签值为负例,预测错误

True Negative(TN):预测出的为负例,标签值为负例,预测正确
precision
查准率、精确率=正确预测到的正例数/预测正例总数

precision = TP/(TP+FP)
recall
查全率、召回率=正确预测到的正例数/实际正例总数

recall = TP/(TP+FN)
F1 score
F1 score 为精确率与召回率的调和均值

2/F1 = 1/P+1/R

F1 score = 2TP/(2TP+FP+FN)

准确率accuracy和精确率precision都高的情况下,F1 score也会显得很高

点击查看代码
import os
import sys

from pymetric import AllMetrics

def example_1():
  """for regression task
  """
  A = [[0.1, 0.2, 0.2, 0.6], [0.5, 0.1, 0.2, 0.3]]
  B = [[0.7, 0.5, 0.8, 0.7], [0.1, 0.3, 0.7, 0.1]]
  print ('Y_truth', A)
  print ('Y_pred ', B)
  for method in ['abs_error', 'rmse', 'r2', 'ndcg', 'cos']:
    try:
      print (method, AllMetrics.measure(A, B, method))
    except Exception as e:
      print ('Exception: %s' % repr(e))

def example_2():
  """for classification task
  """
  A = [[1, 0, 0, 1, 0, 1], [1, 0, 0, 1, 0, 1]]
  B = [[0, 1, 1, 0, 1, 0], [0.2, 0.3, 0.7, 0.1, 0.3, 0.8]]
  print ('Y_truth', A)
  print ('Y_pred ', B)
  for method in ['precision', 'recall', 'f1_score', 'auc', 'map']:
    try:
      print (method, AllMetrics.measure(A, B, method))
    except Exception as e:
      print ('Exception: %s' % repr(e))


if __name__ == '__main__':
  #example_1()
  example_2()


标签:正例,F1,score,0.1,print,Score,召回,method
From: https://www.cnblogs.com/SunshineWeather/p/18193276

相关文章

  • CF1965D Missing Subarray Sum题解
    题目链接点击打开链接题目解法感觉一点都不好想\fn因为最后的序列\(a\)是回文的,所以只有以中心点对称的子段和出现次数为奇数,其他都为偶数考虑有没有什么知道所有子段和的做法,可以方便推出缺失一个的答案令\(g_{l,r}\)为\(l\)到\(r\)的子段和知道\(g_{1,n}\)删......
  • CF1438C Engineer Artem
    题目链接:https://www.luogu.com.cn/problem/CF1438C一道很有意思的思维题。题目说每个元素只能进行加一操作。加一操作最重要的性质就是改变元素的奇偶性。那么我们可以考虑棋盘的性质即:101010101010101这样。其中1代表奇数,0代表偶数那么我们学习棋盘的这种......
  • 题解:CF1337A Ichihime and Triangle
    看到大佬们基本都是直接输出\(b\)\(c\)\(c\)了事儿,一身反骨有其它构造方法的我表示不服,遂作此篇。众所周知,两边之和大于第三边,所以,如果\(b+c>d\),那么\(b\)、\(c\)、\(d\)就是正确的。那如果不满足呢?在题目条件下\(b+c>b+c-1\),那么这一组就是合理的。分别验......
  • 野火指南者STM32F103+STM32CubeMX FSMC实现LCD屏幕显示
    MCU:STM32F103VET6开发环境:STM32CubeMX+MDK5最近针对STM32的LCD进行复习,顺便展开一下笔记。 STM32LCD液晶屏(ILI9341)本文章使用STM32F103VET6,野火指南者的3.2寸电阻屏,进行学习。 LCD液晶显示针对野火指南者配套资料:3.2寸LCD电阻屏,屏幕里自带ILI9341液晶控制器芯片,......
  • CF1967D Long Way to be Non-decreasing 题解
    CF1967DLongWaytobeNon-decreasing题解知识点二分答案,基环树。题意分析给定一个包含\(n\)个元素的数组\(\{a_i\}\)和一个\(m\)个元素的数组\(\{b_i\}\)。定义每次操作为:在\(\{a_i\}\)中选择任意个数,假设某个选的数为\(a_i\),那么将其变为\(b_{a_i}\)......
  • 题解:CF1956A Nene's Game
    这道题其实挺有意思,多测里面还套了个多测。思路就是用向量模拟删除过程,具体请看代码里的注释。#include<bits/stdc++.h>usingnamespacestd;intk,q,a[105];voidsolve(){ intn; cin>>n; vector<int>ve; for(inti=1;i<=n;i++)ve.push_back(i);//把每个人放到向量......
  • CF1385F Removing Leaves 题解
    看到题,感觉像树形DP,遂设计DP式子。\(dp_u\)表示以\(u\)为根的子树内最多能删多少次(不删\(u\))。那么每次子节点到父节点增加的贡献就是\(\lfloor\frac{子树大小为1的子节点个数}{k}\rfloor\)。得出式子\(dp_u=\sum_{v\inson_u}dp_v+(\sum_{v\inson_u}[dp_v\times......
  • CF1773E Easy Assembly
    链接:https://codeforces.com/problemset/problem/1773/E思路首先先得出最终序列,因为它具有唯一性,然后再根据其中的前后关系来判断原来的数列需要切几刀。然后再根据切几刀形成的最终数列判断需要合并几次。例如:目标数列是ABCDEF,而给出的某两段序列是ADBC,EF,那么必要的解法一定......
  • CF1787H Codeforces Scoreboard
    CF1787HCodeforcesScoreboard校内测试的一道题,考试时根本没动。。题面考虑\(k\)比较大的放前面肯定优,然后修门挨着放也肯定优,所以先按\(k\)排个序,然后我们就只考虑每个门修不修。设计状态\(f[i][j]\)表示前\(i\)个点,有\(j\)个门取\(b-kt\),少送回去的最少......
  • [题解]CF1907G Lights
    CF1907GLights我们可以把灯抽象成节点,而开关抽象成无向边(重边算作\(1\)条)。显然每个连通块要么是一棵树,要么是一棵基环树。对于基环树,我们把它看做若干棵树处理,最后我们再考虑如何处理环。如下图,这是一棵树,黄色的点表示亮灯。我们选定任意一条边,可以改变子节点和父节点的状......