sklearn 笔记 metrics

1 分类

1.1  accuracy_score 分类准确率得分

在多标签分类中,此函数计算子集准确率:y_pred的标签集必须与 y_true 中的相应标签集完全匹配。

1.1.1 参数

y_true真实(正确)标签
y_pred由分类器返回的预测标签
normalize
  • 默认为 True,返回正确分类的样本比例

  • 如果为 False,返回正确分类的样本数量

sample_weight样本权重
  • 二元分类中,等同于 jaccard_score

1.1.2 举例

from sklearn.metrics import accuracy_scorey_pred = [0, 2, 1, 3]
y_true = [0, 1, 2, 3]
accuracy_score(y_true, y_pred)
#0.5accuracy_score(y_true, y_pred, normalize=False)
#2

1.2 balanced_accuracy_score 计算平衡准确率

平衡准确率用于二元和多类分类问题中处理数据不平衡的情况。它定义为每个类别上获得的召回率的平均值。

当 adjusted=False 时,最佳值为 1,最差值为 0

sklearn.metrics.balanced_accuracy_score(y_true, y_pred, *, sample_weight=None, adjusted=False)

1.2.1 参数

y_true真实(正确)的目标值
y_pred由分类器返回的预估目标值
sample_weight样本权重
adjusted当为真时,结果会进行机会调整,使随机性能得分为 0,而完美性能保持得分为 1

1.2.2 举例

from sklearn.metrics import balanced_accuracy_score
y_true = [0, 1, 0, 0, 1, 0]
y_pred = [0, 1, 0, 0, 0, 1]
balanced_accuracy_score(y_true, y_pred),accuracy_score(y_true, y_pred)
#(0.625, 0.6666666666666666)'''
3/4+1/2=0.625
'''

1.3 top_k_accuracy_scoreTop-k 准确率分类得分

计算正确标签位于预测(按预测得分排序)的前 k 个标签中的次数

sklearn.metrics.top_k_accuracy_score(y_true, y_score, *, k=2, normalize=True, sample_weight=None, labels=None)

1.3.1 参数

y_true真实(正确)的目标值
y_pred由分类器返回的预估目标值
ktopk的k
normalize
  • 默认为 True,返回正确分类的样本比例

  • 如果为 False,返回正确分类的样本数量

sample_weight样本权重

1.3.2 举例

import numpy as np
from sklearn.metrics import top_k_accuracy_score
y_true = np.array([0, 1, 2, 2])
y_score = np.array([[0.5, 0.2, 0.2],  # 0 is in top 2[0.3, 0.4, 0.2],  # 1 is in top 2[0.2, 0.4, 0.3],  # 2 is in top 2[0.7, 0.2, 0.1]]) # 2 isn't in top 2
top_k_accuracy_score(y_true, y_score, k=2)
#0.75

1.4 f1_score F1 分数

sklearn.metrics.f1_score(y_true, y_pred, *, labels=None, pos_label=1, average='binary', sample_weight=None, zero_division='warn')

1.4.1  参数

y_true真实(正确)的目标值
y_pred由分类器返回的预估目标值
labels

average != 'binary' 时包括的标签集,以及 average 为 None 时的标签顺序。

可以排除labels数据中存在的标签,例如在多类分类中可视为被排除的“负类”

默认情况下,labels=None,即使用 y_true 和 y_pred 中的所有标签,按排序顺序

pos_label

如果 average='binary' 且数据为二元,则报告该类

对于多类或多标签目标,设置 labels=[pos_label] 并且 average != 'binary' 来仅报告一个标签的指标

average

这是对多类/多标签目标必需的。

如果为 None,则返回每个类的分数。

否则,这决定了对数据执行的平均类型:

  • 'binary':仅报告由 pos_label 指定的类的结果
  • 'micro':通过计算总的真正例、假负例和假正例来全局计算指标
  • 'macro':为每个标签计算指标,并找到它们的无权重平均。这不考虑标签不平衡。
  • 'weighted':为每个标签计算指标,并根据支持度(每个标签的真实实例数)找到它们的加权平均
  • 'samples':为每个实例计算指标,并找到它们的平均
sample_weight样本权重
zero_division当发生零除法时返回的值,即所有预测和标签都是负的情况

1.4.2 举例

import numpy as np
from sklearn.metrics import f1_score
y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 2, 1, 0, 0, 1]
f1_score(y_true, y_pred, average='macro')
#0.26666666666666666
f1_score(y_true, y_pred, average='micro')
#0.3333333333333333
f1_score(y_true, y_pred, average='weighted')
#0.26666666666666666
f1_score(y_true, y_pred, average=None)
#array([0.8, 0. , 0. ])

这个是怎么算出来的呢?

1.5 precision_score & recall_score

参数和用法和f1_score一致,就不多说了

1.6 jaccard_score

参数和f1_score一致

1.6 log loss 交叉熵损失

对于具有真实标签 y 和概率估计 p 的单个样本,log loss 为:

1.6.1 参数

y_true真实(正确)的目标值
y_pred由分类器返回的预估目标值
eps

Log loss 在 p=0 或 p=1 时未定义,因此概率被剪辑到 max(eps, min(1 - eps, p))

默认值取决于 y_pred 的数据类型

normalize
  • bool,默认为 True则返回每个样本的平均损失
  • 否则,返回每个样本损失的总和。
sample_weight样本权重
labels

labels array-like,默认为 None

  • 如果未提供,将从 y_true 推断出标签。
    • 提取出所有unique的label,然后排序?
  • 如果 labels 为 None 且 y_pred 的形状为 (n_samples,),则假定标签为二进制,并从 y_true 中推断出来

1.6.2 举例

from sklearn.metrics import log_loss
log_loss(["spam", "ham", "ham", "spam"],[[.1, .9], [.9, .1], [.8, .2], [.35, .65]])
#0.21616187468057912

怎么算出来的呢?

首先,这里没有提供labels,所以需要自己从y_true中infer出来,这边有两个不同的label:“ham"和”spam",通过排序,可以知道每一个二元组中的第一个元素是ham的概率,第二个元素是spam的概率’‘

import math# 计算第一个样本的 log loss
loss1 = -(1 * math.log(0.9) + 0 * math.log(0.1))# 计算第二个样本的 log loss
loss2 = -(0 * math.log(0.1) + 1 * math.log(0.9))# 计算第三个样本的 log loss
loss3 = -(0 * math.log(0.2) + 1 * math.log(0.8))# 计算第四个样本的 log loss
loss4 = -(1 * math.log(0.65) + 0 * math.log(0.35))# 计算平均 log loss
average_log_loss = (loss1 + loss2 + loss3 + loss4) / 4
average_log_loss
#0.21616187468057912

2 聚类

2.1 调整互信息

sklearn.metrics.adjusted_mutual_info_score(labels_true, labels_pred, *, average_method='arithmetic')
  • 调整互信息(AMI,Adjusted Mutual Information)是互信息(MI,Mutual Information)的一个改进版本,用于考虑随机性的影响。
  • 互信息通常会随着聚类数量的增加而增加,无论是否实际上共享了更多的信息。
  • AMI通过修正互信息,排除了这种数量上的偏差。
  • 对于两个聚类 U 和 V,AMI的计算公式如下:

2.1.1 参数

y_true真实(正确)的目标值
y_pred由分类器返回的预估目标值
average_method

{‘min’, ‘geometric’, ‘arithmetic’, ‘max’},默认为 ‘arithmetic’

计算分母中规范化因子的方法

2.1.2 举例

from sklearn.metrics import adjusted_mutual_info_score
labels_true = [0, 0, 1, 1, 2, 2]
labels_pred = [0, 0, 1, 2, 2, 2]
ami_score = adjusted_mutual_info_score(labels_true, labels_pred)
print("Adjusted Mutual Information (AMI) score:", ami_score)
#Adjusted Mutual Information (AMI) score: 0.5023607027202738

3 回归

3.1 max_error 

sklearn.metrics.max_error(y_true, y_pred)
y_true真实(正确)的目标值
y_pred由分类器返回的预估目标值
from sklearn.metrics import max_error
y_true = [3, 2, 17, 1]
y_pred = [4, 2, 7, 1]
max_error(y_true, y_pred)
#10

 3.2 mean_absolute_error

sklearn.metrics.mean_absolute_error(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average')

3.2.1 参数

y_true真实(正确)的目标值
y_pred由分类器返回的预估目标值
sample_weight样本权重
multioutput

定义多输出值的聚合方式

  • ‘raw_values’:在多输出输入的情况下,返回每个输出的完整误差集。
  • ‘uniform_average’:所有输出的误差将以均匀权重进行平均。
  • 若为 array-like 值,则定义用于平均误差的权重

3.2.2  举例

from sklearn.metrics import mean_absolute_error
y_true = [0.5, -1, 7]
y_pred = [0, -1, 8]
mean_absolute_error(y_true, y_pred)
#0.5y_true = [[0.5, 1], [-1, 1], [7, -6]]
y_pred = [[0, 2], [-1, 2], [8, -5]]
mean_absolute_error(y_true, y_pred, multioutput='raw_values')
#array([0.5, 1. ])mean_absolute_error(y_true, y_pred)
#0.75
#上式两个取平均mean_absolute_error(y_true, y_pred, multioutput=[0.3, 0.7])
#0.85
#0.5*0.3+1*0.7

3.3mean_squared_error

sklearn.metrics.mean_squared_error(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average', squared='deprecated')
y_true真实(正确)的目标值
y_pred由分类器返回的预估目标值
sample_weight样本权重
multioutput

定义多输出值的聚合方式

  • ‘raw_values’:在多输出输入的情况下,返回每个输出的完整误差集。
  • ‘uniform_average’:所有输出的误差将以均匀权重进行平均。
  • 若为 array-like 值,则定义用于平均误差的权重
squared

如果为True,就是MSE;

如果为False,就是RMSE

3.4 root_mean_squared_error

y_true真实(正确)的目标值
y_pred由分类器返回的预估目标值
sample_weight样本权重
multioutput

定义多输出值的聚合方式

  • ‘raw_values’:在多输出输入的情况下,返回每个输出的完整误差集。
  • ‘uniform_average’:所有输出的误差将以均匀权重进行平均。
  • 若为 array-like 值,则定义用于平均误差的权重

3.5mean_squared_log_error

sklearn.metrics.mean_squared_log_error(y_true,     y_pred, *, sample_weight=None, multioutput='uniform_average', squared='deprecated')

y_true真实(正确)的目标值
y_pred由分类器返回的预估目标值
sample_weight样本权重
multioutput

定义多输出值的聚合方式

  • ‘raw_values’:在多输出输入的情况下,返回每个输出的完整误差集。
  • ‘uniform_average’:所有输出的误差将以均匀权重进行平均。
  • 若为 array-like 值,则定义用于平均误差的权重
squared

如果为True,就是MSLE;

如果为False,就是RMSLE

3.6  root_mean_squared_log_error

root_mean_squared_log_error(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average')
y_true真实(正确)的目标值
y_pred由分类器返回的预估目标值
sample_weight样本权重
multioutput

定义多输出值的聚合方式

  • ‘raw_values’:在多输出输入的情况下,返回每个输出的完整误差集。
  • ‘uniform_average’:所有输出的误差将以均匀权重进行平均。
  • 若为 array-like 值,则定义用于平均误差的权重

3.7  median_absolute_error

sklearn.metrics.median_absolute_error(y_true, y_pred, *, multioutput='uniform_average', sample_weight=None)
y_true真实(正确)的目标值
y_pred由分类器返回的预估目标值
sample_weight样本权重
multioutput

定义多输出值的聚合方式

  • ‘raw_values’:在多输出输入的情况下,返回每个输出的完整误差集。
  • ‘uniform_average’:所有输出的误差将以均匀权重进行平均。
  • 若为 array-like 值,则定义用于平均误差的权重

 

3.8 median_absolute_error

sklearn.metrics.median_absolute_error(y_true, y_pred, *, multioutput='uniform_average', sample_weight=None)

absolute error的中位数

y_true真实(正确)的目标值
y_pred由分类器返回的预估目标值
sample_weight样本权重
multioutput

定义多输出值的聚合方式

  • ‘raw_values’:在多输出输入的情况下,返回每个输出的完整误差集。
  • ‘uniform_average’:所有输出的误差将以均匀权重进行平均。
  • 若为 array-like 值,则定义用于平均误差的权重

3.9 mean_absolute_percentage_error

sklearn.metrics.mean_absolute_percentage_error(y_true, y_pred, *,     sample_weight=None, multioutput='uniform_average')

 

y_true真实(正确)的目标值
y_pred由分类器返回的预估目标值
sample_weight样本权重
multioutput

定义多输出值的聚合方式

  • ‘raw_values’:在多输出输入的情况下,返回每个输出的完整误差集。
  • ‘uniform_average’:所有输出的误差将以均匀权重进行平均。
  • 若为 array-like 值,则定义用于平均误差的权重

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/827625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LLama的激活函数SwiGLU 解释

目录 Swish激活函数 1. Swish函数公式 LLaMA模型中的激活函数 1. SwiGLU激活函数 2. SwiGLU激活函数的表达式 3. SwiGLU激活函数的优势 Swish激活函数 Swish是一种激活函数,其计算公式如下: 1. Swish函数公式 Swish(x) x * sigmoid(x) 其中&am…

概率图模型在机器学习中的应用:贝叶斯网络与马尔可夫随机场

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

【重要】Heygen订阅指南和用法详解!让照片学说话?一张照片变演讲?Heygen订阅值得吗?

常见问题 Q:Heygen是什么?Heygen是什么玩意? A:Heygen是一款由AI视频工具,创作者只需要上传视频并选择要翻译的语言,该工具可实现自动翻译、调整音色、匹配嘴型。为了方便理解,笔者利用Heygen制作了一个AI视…

裤裤带你一起学C语言内存函数啦!

目录 1.memcpy的使用和模拟实现 2.memmove使用和模拟实现 3.memset函数的使用 4.memcmp函数的使用 内存函数在<string.h>库中&#xff0c;我们使用内存函数必须先引入<string.h>头文件 1.memcpy的使用和模拟实现 memcpy的函数原型如下&#xff1a; void * m…

Vue--》深入了解 VueUse 功能性工具集

今天博主为大家介绍一款实用性的插件名字叫做 VueUse &#xff0c;它是专门为 Vue.js 生态系统设计的功能性工具集合。其提供了许多可重用的功能函数&#xff0c;可以帮助开发者更轻松地构建 Vue.js 应用程序。其提供了大量的功能&#xff0c;包括状态管理、副作用管理、组合式…

【刷题】前缀和入门

送给大家一句话&#xff1a; 既然已经做出了选择&#xff0c;最好还是先假定自己是对的。焦虑未来和后悔过去&#xff0c;只经历一个就够了。 – 张寒寺 《不正常人类症候群》 ☆ミヾ(∇≦((ヾ(≧∇≦)〃))≧∇)ノ彡☆ ☆ミヾ(∇≦((ヾ(≧∇≦)〃))≧∇)ノ彡☆ ☆ミヾ(∇≦((ヾ…

react引入iconfont的svg图标

react引入iconfont的svg图标 本文目录 react引入iconfont的svg图标普通图标通过link引入css组件内引入css使用 svg图标通过script引入js组件内引入js使用 通过封装组件自定义封装组件中调用 通过antd封装使用 普通图标 通过link引入css <link rel"stylesheet" h…

基于springboot实现在线考试系统设计【项目源码+论文说明】计算机毕业设计

基于springboot实现在线考试管理系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了基于JavaWeb技术的在线考试系统设计与实现的开发全过程。通过分析基于Java Web技术的在线考试系统设计与实现管理的不…

http 3.0 有哪些新特性

HTTP/3 是超文本传输协议&#xff08;HTTP&#xff09;的最新主要版本&#xff0c;其显著特点是放弃了传统的TCP作为传输层协议&#xff0c;转而采用基于UDP的QUIC&#xff08;Quick UDP Internet Connections&#xff09;协议。以下是HTTP/3利用QUIC实现高性能传输的关键特性&…

sketchup{su}安装错误1402

错误如图 解决方法如下 打开autoremove&#xff0c;点击扩展&#xff0c;输入1402&#xff0c;点击搜索 等待修复成功既可尝试重新安装su 软件每周六选择其他方式登录免费使用

微软github技术公开课(web开发、生成式AI、ML、数据科学、物联网)

一些微软在github上公开的课程整理&#xff1a; web开发基础入门 面向初学者的数据数据科学课程 https://microsoft.github.io/Data-Science-For-Beginners/#/ 面向初学者的AI入门课程 https://github.com/microsoft/ai-for-beginners 面向初学者的生成式AI课程 https://…

WordPress自动采集发布AutoPostPro汉化版插件

WP-AutoPostPro 是一款极为出色的WordPress自动采集发布插件&#xff0c;其显著优势在于能够从任何网站抓取内容并自动将其发布到你的WordPress网站上。它实现了对任何网页内容的自动采集和发布&#xff0c;整个采集过程完全自动化&#xff0c;无需手动操作。 项 目 地 址 &…

网络 (基础概念, OSI 七层模型, TCP/IP 五层模型)

网络互连 网络互连: 将多台计算机连接在一起, 完成数据共享 数据共享的本质是网络数据传输, 即计算机之间通过网络来传输数, 也叫做网络通信 根据网络互连的规模不同, 将网络划分为局域网和广域网 注意: 局域网和广域网是相对的概念 局域网LAN 又称内网, 局域网和局域网之间在没…

生成式AI在B端产品的应用分析

AI产品发展到现在&#xff0c;消费端的产品应用还受到比较大的限制&#xff1b;但是在B端&#xff0c;已经有了不错的表现。作者总结了AI产品在B端的几款应用&#xff0c;一起来看看表现如何。 生成式AI在B端产品的应用分析© 由 ZAKER 提供 随着今年生成式AI应用的大范围…

Python基础06-日期和时间的操作方法

在Python中处理日期和时间是编程中常见的需求&#xff0c;无论是安排任务、记录日志还是分析数据。本文将介绍如何在Python中获取当前日期和时间、创建特定日期和时间、格式化日期和时间、解析字符串中的日期和时间、使用时间差、比较日期和时间、从日期/时间中提取组件、处理时…

2024年Java接单平台强力推荐!各个都知名!

Java这几年真卷飞了&#xff0c;一点都不夸张。因此&#xff0c;很多程序员朋友都已经试着转方向、换赛道了。试着接单、找私活就是一大途径。当然&#xff0c;特别是有技术、又有相对空闲时间的朋友&#xff0c;更值得一试。既是增加收入的捷径&#xff0c;又可以提升自我——…

在Milk-v Duo上部署YOLOV8模型

建议自己编译images固件&#xff0c;我使用官方给的固件在部署中出现了一些问题&#xff0c;请参考: 编译Milkv-duo固件-CSDN博客 下载YOLOv8 git clone https://github.com/ultralytics/ultralytics.git 下载yolo_export.zip 下载链接&#xff1a;链接&#xff1a;百度网盘…

mysql常见语法操作笔记

1. 数据库的基本操作 1.1. MYSQL登录与退出 D:\phpstudy_pro\Extensions\MySQL5.7.26\bin 输入 mysql -uroot -proot -h127.0.0.1 退出的三种方法 mysql > exit; mysql > quit; mysql > \q; 1.2. MYSQL数据库的一些解释 注意&#xff1a;数据库就相当于文件夹 …

Nacos的简介及安装和使用

Nacos的简介及安装和使用 1. Nacos简介1.1 核心特性1.2 常见的注册中心1.3 Nacos结构图 2. 如何安装和配置Nacos&#xff1f;2.1 Nacos的安装2.2 如何使用Nacos&#xff1f; 1. Nacos简介 ​ Nacos是一个开源的动态服务发现、配置和服务管理平台&#xff0c;由阿里巴巴开发和维…

南京邮电大学数学实验A答案 | 《MATLAB数学实验》第三版课后习题答案

数学实验A 本仓库收集了2024年我在学习《数学实验A》课程期间完成的作业。课程使用的教材为《MATLAB数学实验》第三版&#xff0c;作者为胡良剑和孙晓君教授。 这个资源库的建立初衷是为了帮助南京邮电大学的同学们在学习过程中有一个参考的依据&#xff0c;减少一些无端浪费…