【笔记】F1 score
F1 score
关于精准率和召回率
精准率和召回率可以很好的评价对于数据极度偏斜的二分类问题的算法,有个问题,毕竟是两个指标,有的时候这两个指标也会产生差异,对于不同的算法,精准率可能高一些,召回率可能低一些,反之一样,真正使用的时候应该根据具体的使用场景来去解读这两个指标
想要得到这两个指标之间的平衡,希望能同时照顾到精准率和召回率,这样就可以使用新的指标,F1 score
F1 score的目的就是兼顾这两个指标,描述的是精准率和召回率的调和平均值,公式可以写成
这种的好处就是,如果说一个值特别低,另外一个值特别高,最终得到的F1 score的值也会很低,只有两个值都很高,得到的值才会非常高
可以将式子进行化简通分变形,最后可以得到
具体实现
(在notebook中)
首先实现一个F1 score,根据上式即可写出,设置如果分母为0,直接返回0即可
import numpy as np
def f1_score(precision,recall):
try:
return 2*precision*recall / (precision+recall)
except:
return 0.0
如果精准率为0.5,召回率为0.5,求出对应的F1 score
precision = 0.5
recall = 0.5
f1_score(precision,recall)
结果如下
如果精准率为0.1,召回率为0.9,求出对应的F1 score
precision = 0.1
recall = 0.9
f1_score(precision,recall)
结果如下
如果精准率为0.0,召回率为1.0,求出对应的F1 score
precision = 0.0
recall = 1.0
f1_score(precision,recall)
结果如下
使用手写识别数据集,相应的设置为极度偏斜的数据情况,然后对数据集进行分割
from sklearn import datasets
digits = datasets.load_digits()
X = digits.data
y = digits.target.copy()
y[digits.target==9] = 1
y[digits.target!=9] = 0
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=666)
使用sklearn中的逻辑回归后,计算准确度
from sklearn.linear_model import LogisticRegression
log_reg = LogisticRegression()
log_reg.fit(X_train,y_train)
log_reg.score(X_test,y_test)
结果如下
对训练的结果进行预测,使用混淆矩阵得出
y_predict = log_reg.predict(X_test)
from sklearn.metrics import confusion_matrix
confusion_matrix(y_test,y_predict)
结果如下
计算准确率
from sklearn.metrics import precision_score
precision_score(y_test,y_predict)
结果如下
计算召回率
from sklearn.metrics import recall_score
recall_score(y_test,y_predict)
结果如下
使用sklearn中的f1_score计算F1 score,传入真实值和预测值
from sklearn.metrics import f1_score
f1_score(y_test,y_predict)
结果如下
以上就是F1 score的实现以及概念
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!