sklearn【F1 Scoree】F1分数原理及实战代码!

devtools/2024/11/30 10:28:36/

目录

    • 一、F1 Scoree 介绍
    • 二、案例学习
    • 三、总结

一、F1 Scoree 介绍

在分类任务中,评估模型的性能是至关重要的。除了准确率(Accuracy)之外,我们还需要考虑其他指标,如精确度(Precision)和查全率(Recall),以更全面地了解模型在识别不同类别样本时的表现。而F1分数(F1 Score)是Precision和Recall的调和平均值,能够综合这两个指标,为我们提供一个更加平衡的评估模型性能的视角。

本文将介绍如何使用sklearn库来计算F1分数,并解释其背后的计算原理。

首先,我们需要理解F1分数的计算方式。F1分数综合考虑了Precision和Recall,其计算公式为:

F 1 S c o r e = 2 ( P r e c i s i o n ∗ R e c a l l ) / ( P r e c i s i o n + R e c a l l ) F1 \ Score = 2 (Precision * Recall) / (Precision + Recall) F1 Score=2(PrecisionRecall)/(Precision+Recall)

其中:

  • Precision 衡量的是模型预测为正例的样本中真正为正例的比例。
  • Recall 衡量的是所有真正为正例的样本中被模型正确预测为正例的比例。

二、案例学习

sklearn库中提供了f1_score函数,可以方便地计算F1分数。下面我们将通过一个简单的例子来演示如何使用这个函数。

首先,我们需要导入必要的库,并准备数据集。在这个例子中,我们将使用sklearn自带的鸢尾花(Iris)数据集,并将其转化为二分类问题来简化演示。

python">from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import label_binarize
from sklearn.metrics import f1_score
from sklearn.linear_model import LogisticRegression# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target# 将多分类问题转化为二分类问题(例如,只区分山鸢尾和非山鸢尾)
y = label_binarize(y, classes=[2])
y = y.ravel()# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

接下来,我们创建一个分类模型,并使用训练数据进行训练。在这个例子中,我们将使用逻辑回归作为分类器。

python"># 创建逻辑回归模型
model = LogisticRegression()# 使用训练数据进行训练
model.fit(X_train, y_train)

训练完成后,我们可以使用模型对测试集进行预测,并使用sklearnf1_score函数来计算F1分数。

python"># 对测试集进行预测
y_pred = model.predict(X_test)# 计算F1分数
f1 = f1_score(y_test, y_pred)
print(f'F1 Score: {f1:.2f}')# F1 Score: 0.99

在上面的代码中,f1_score函数接受实际的目标值(y_test)和模型预测的值(y_pred)作为输入,然后返回F1分数的值。F1分数是一个介于0和1之间的值,越接近1表示模型的性能越好。

需要注意的是,F1分数综合考虑了Precision和Recall,因此它能够更全面地评估模型在识别正例和反例时的性能。当Precision和Recall都很高时,F1分数也会很高,这表示模型在识别正例和反例时都表现良好。相反,如果Precision和Recall中有一个较低,F1分数也会受到影响,这可以帮助我们发现模型在哪方面存在问题,从而进行针对性的优化。

此外,当数据集的正反例样本数不平衡时,F1分数特别有用。准确率可能会因为多数类的正确分类而被高估,而F1分数则能够更准确地反映模型在少数类上的性能。

三、总结

通过上面的示例,我们展示了如何使用sklearn来训练和评估一个分类模型,并计算其在测试集上的F1分数。在实际应用中,我们可以根据具体的问题和数据集选择合适的分类模型和评估指标,以得到更准确的分类结果和性能评估。F1分数作为一个综合指标,能够帮助我们更全面地了解模型的性能,并指导我们进行模型的优化和改进。


http://www.ppmy.cn/devtools/4840.html

相关文章

static+单例模式+类的复合继承

汇编语言 汇编语言是最靠谱的验证“编程语言相关知识点”正确性的方式 汇编语言与机器语言一一对应,每一条机器语言都有与之对应的汇编指令 机器语言是计算机使用的语言,它是一串二进制数字 汇编语言可以通过汇编得到机器语言机器语言可以通过反汇编得到…

【蓝桥·算法双周赛 第 9 场 小白入门赛】盖印章【算法赛】题解(数学+解方程)

思路 考虑到题目中的规则,每个印章图案的边必须和网格图边重合,网格图上的每一个格子最多只能被一个印章图案覆盖,印章的图案在网格图上必须是完整的。这意味着每个印章图案都会覆盖一个独立的、完整的区域,且这些区域不会相互重…

统计selenium模拟登录的一些方法

驱动安装 之前常常是先根据浏览器版本下载对应版本的驱动,但其实有一个办法是可以自动获取当前浏览器的版本,自动下载对应的驱动到本地的。 from webdriver_manager.chrome import ChromeDriverManagerbrowser webdriver.Chrome(ChromeDriverManager()…

安全开发实战(1)--Cdn

目录 安全开发专栏 CDN介绍 1.信息收集阶段 1.1判断CDN是否存在 1.1.1, One 1.1.2,Two(改进) 1.1.3,进行整合 增加输入功能 1.1.4 批量读取监测存储(进行测试) 问题1: 问题2: 解决方案: 1.1.4 基本编写完成 命令框中: cdn存在.txt 总结 这里我是根据整个渗透测…

实体类List重复校验

如果实体类有多个属性,并且你希望根据所有属性的组合来进行重复校验,你可以考虑以下几种方法: 使用集合存储已经出现过的实体对象: 将每个实体对象放入一个 Set 中进行重复校验。在 Set 中元素的比较可以使用自定义的 equals 方法…

OWASP发布十大开源软件安全风险清单

OWASP发布了“十大开源软件风险”TOP10清单,并针对每种风险给出了安全建议。 近年来开源软件安全风险快速增长,不久前曝光的XZ后门更是被称为“核弹级”的开源软件供应链漏洞。虽然XZ后门事件侥幸未酿成灾难性后果,但为全球科技界敲响了警钟&…

如何查看项目中使用的Qt版本

如何查看项目中使用的Qt版本 1.点击左下角电脑按钮查看Qt版本。 2.点击左侧栏项目按钮查看Qt版本。

《综合品酒师》培训中FENDI CLUB精酿啤酒掀起品质生活新浪潮

近日,云仓酒庄的《综合品酒师》培训活动成功刷新了世界纪录,这一壮举不仅彰显了云仓酒庄在人才培养方面的专业实力,更以其与众不同的FENDI CLUB精酿啤酒掀起了酒水行业的新风尚。作为一名业内专业人士,我深入剖析了此次培训对酒水…