python机器学习classification_report()函数 输出模型评估报告

简介: python机器学习classification_report()函数 输出模型评估报告

classification_report()是python在机器学习中常用的输出模型评估报告的方法。

classification_report()函数介绍

classification_report()语法如下:

classification_report(
         y_true,
         y_pred,
         labels=None,
         target_names=None,
         sample_weight=None,
         digits=2,
         output_dict=False,
         zero_division=“warn”
)

参数 描述
y_true 真实值 ,一维数组形式(也可以是列表元组之类的)
y_pred 预测值,一维数组形式(也可以是列表元组之类的)
labels 标签索引列表,可选参数,数组形式
target_names 与标签匹配的名称,可选参数,数组形式
sample_weight 样本权重,数组形式
digits 格式化输出浮点值的位数。默认为2。当“output_dict”为“True”时,这将被忽略,并且返回的值不会四舍五入。
output_dict 是否输出字典。默认为False,如果为True则输出结果形式为字典。
zero_division 设置存在零除法时返回的值。默认为warn。如果设置为“warn”,这相当于0,但也会引发警告。

使用示例

from sklearn.metrics import classification_report

# 测试集真实数据
y_test = [1, 2, 3, 1, 2, 3, 1, 2, 3]
# 预测结果
y_predicted = [1, 2, 3, 3, 2, 1, 3, 2, 3]

以这两行数据为例,不难直接看出,
预测中预测了

  • 2次1标签,成功1次,1标签预测的准确率率为0.5
  • 3次2标签,成功3次,2标签预测的准确率为1.0
  • 4次3标签,成功2次,3标签预测的准确率为0.5
print(classification_report(y_test, y_predicted))

在这里插入图片描述

也可以加上target_names参数,效果如下:

print(classification_report(y_test, y_predicted, target_names=['a类', 'b类', 'c类']))

如图左边显示出了新传入的标签名。
在这里插入图片描述


输出分析

由图可见,precisoin即准确率,也称查准率
recall是召回率 ,也称查全率
f1-score简称F1

对于其中一个标签预测结果进行评估,引入以下概念:

名称 简写 通俗描述
真正例 TP 预测结果是该标签,实际是该标签的样例个数
假正例 FP 预测结果是该标签,实际不是该标签的样例个数
假反例 FN 预测结果不是该标签,实际是该标签的样例个数
真反例 TN 预测结果不是该标签,实际是该标签的样例个数

其中, 满足TP+FP+FN+TN=样例总数

查准率的定义公式为
在这里插入图片描述

可以描述为 预测结果是该标签的样例中,实际是该标签的所占比。

查全率的定义公式为


在这里插入图片描述

可以描述为 实际是该标签的样例中,预测结果是该标签的所占比。


以该例的标签’3’为例,
‘3’标签预测了4次,成功了2次,则查准率


在这里插入图片描述

所有标签一共预测了9次,其中3标签预测了4次,则其它标签预测了5次,这五次中有1次是3标签,即FN=1则查全率为:
在这里插入图片描述

查准率和查全率是一对矛盾的度量,一般来说,查准率高时,查全率往往会偏低,查全率高时,查准率往往会偏低。通常只可能在一些简单任务中,才可能使查准率和查全率都很高。

此时结合名字,不难看出:查全率,是在衡量关于某标签的预测结果涵盖的是否“周全”,查全率高意味着,即某个标签预测得准确率不一定高,但是其真实值会大量存在于或者被包含于预测值中。


f1-score也称F1,


在这里插入图片描述

F1是基于查准率查重率 的调和平均定义的:


在这里插入图片描述

accruracy 整体的准确率 即正确预测样本量与总样本量的比值。(不是针对某个标签的预测的正确率)

macro avg 即宏均值,可理解为普通的平均值。
macro-P 宏查准率
macro-R 宏查全率
macro-F1 宏F1

对应的概念还有 微均值 micro avg
在这里插入图片描述
公式经过等价转换,分子分母同时乘以标签个数,micro-P等价于所有类别中预测正确量与总样本量的比值。
micro-R 同理,即所有类别中预测正确的量占该标签实际数量的比例

目录
相关文章
|
2月前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
146 67
|
7天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
20 3
|
11天前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
24 2
|
1月前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
52 18
|
30天前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
62 8
|
1月前
|
Python
Python中的函数
Python中的函数
46 8
|
2月前
|
机器学习/深度学习 Python
机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况
本文介绍了机器学习中评估模型性能的重要工具——混淆矩阵和ROC曲线。混淆矩阵通过真正例、假正例等指标展示模型预测情况,而ROC曲线则通过假正率和真正率评估二分类模型性能。文章还提供了Python中的具体实现示例,展示了如何计算和使用这两种工具来评估模型。
80 8
|
2月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
46 6
|
2月前
|
监控 测试技术 数据库
Python中的装饰器:解锁函数增强的魔法####
本文深入探讨了Python语言中一个既强大又灵活的特性——装饰器(Decorator),它以一种优雅的方式实现了函数功能的扩展与增强。不同于传统的代码复用机制,装饰器通过高阶函数的形式,为开发者提供了在不修改原函数源代码的前提下,动态添加新功能的能力。我们将从装饰器的基本概念入手,逐步解析其工作原理,并通过一系列实例展示如何利用装饰器进行日志记录、性能测试、事务处理等常见任务,最终揭示装饰器在提升代码可读性、维护性和功能性方面的独特价值。 ####
|
2月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段。本文介绍了 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,强调了样本量、随机性和时间因素的重要性,并展示了 Python 在 A/B 测试中的具体应用实例。
36 1