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://xiahunao.cn/news/2980244.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

A*B 问题

题目描述 输入两个正整数 A 和 B,求 AB 的值。注意乘积的范围和数据类型的选择。 输入格式 一行,包含两个正整数 A 和 B,中间用单个空格隔开。1≤A,B≤50000。 输出格式 一个整数,即 AB 的值。 输入输出样例 输入 #1 3 4 …

yolov8 区域声光报警+计数

yolov8 区域报警计数 1. 基础2. 报警功能2. 1声音报警代码2. 2画面显示报警代码 3. 完整代码4. 源码 1. 基础 本项目是在 yolov8 区域多类别计数 的基础上实现的,具体区域计数原理可见上边文章 2. 报警功能 设置一个区域region_points,当行人这一类别…

牛客NC195 二叉树的直径【simple DFS C++ / Java /Go/ PHP】

题目 题目链接: https://www.nowcoder.com/practice/15f977cedc5a4ffa8f03a3433d18650d 思路 最长路径有两种情况: 1.最长条路径经过根节点,那么只需要找出根节点的左右两棵子树的最大深度然后相加即可。 2.最长路径没有经过根节点&#xf…

【Linux】对system V本地通信的内核级理解

一、system V版本的进程间通信技术 通过之前的学习,我们大致可以感受出来,共享内存,消息队列和信号量在使用的时候是有很多共性的。它们三个的接口,包括接口中传的参数有的都有很大的相似度。其实,共享内存&#xff…

Harmony OS应用开发性能优化全面指南

优化应用性能对于应用开发至关重要。通过高性能编程、减少丢帧卡顿、提升应用启动和响应速度,可以有效提升用户体验。本文将介绍一些优化应用性能的方法,以及常用的性能调优工具。 ArkTS高性能编程 为了提升代码执行速度,进而提升应用整体性…

IPRally巧用Google Kubernetes Engine和Ray改善AI

专利检索平台提供商 IPRally 正在快速发展,为全球企业、知识产权律师事务所以及多个国家专利和商标局提供服务。随着公司的发展,其技术需求也在不断增长。它继续训练模型以提高准确性,每周添加 200,000 条可供客户访问的可搜索记录&#xff0…

iOS ------代理 分类 拓展

代理协议 一,概念: 代理,又称委托代理(delegate),是iOS中常用的一种设计模式。顾名思义,它是把某个对象要做的事委托给别的对象去做。那么别的对象就是这个对象的代理,代替它来打理…

安装eog照片查看程序

安装eog照片查看程序 apt-get install --reinstall liburi-perl apt-get install eog解决 参考文章

milvus对象存储和消息中间件的工厂设计模式分析

milvus对象存储和消息中间件的工厂设计模式分析 需求 根据参数设置创建mq和storage mq有kafka,pulsar storage有local,minio,remote 配置文件 根据配置文件选择初始化mq和存储: mq:type: pulsarcommon:storageType: minio对于这种类型一个是mq,一个是存储&…

ClickHouse用UDF解析XML字符串和XML文件

一.如果是读取xml文件的时候,文件入库需要使用文件读取UDF 创建了1个测试文件 wsdFileRead(): 直接读取文件内容 SELECT wsdFileRead(/home/temp/wsd_test.xml)Query id: 09b6e5fe-7169-43f7-b001-90e2eeabb8da┌─wsdFileRead(/home/temp/wsd_test.xm…

OpenHarmony实战开发-内存快照Snapshot Profiler功能使用指导。

DevEco Studio集成的DevEco Profiler性能调优工具(以下简称为Profiler),提供Time、Allocation、Snapshot、CPU等场景化分析任务类型。内存快照(Snapshot)是一种用于分析应用程序内存使用情况的工具,通过记录…

鸟哥的Linux私房菜 总结索引 | 第二章:主机规划与磁盘分区

要安装好一部Linux主机并不是那么简单的事情,你必须要针对distributions的特性、服务器软件的能力、 未来的升级需求、硬件扩充性需求等等来考虑,还得要知道磁盘分区、文件系统、Linux操作较频繁的目录等等, 都得要有一定程度的了解才行 1、…

LlamaIndex 加 Ollama 实现 Agent

AI Agent 是 AIGC 落地实现的场景之一,与 RAG 不同,RAG 是对数据的扩充,是模型可以学习到新数据或者本地私有数据。AI Agent 是自己推理,自己做,例如你对 AI Agent 说我要知道今天上海的天气怎么样,由于 AI…

李沐56_门控循环单元——自学笔记

关注每一个序列 1.不是每个观察值都是同等重要 2.想只记住的观察需要:能关注的机制(更新门 update gate)、能遗忘的机制(重置门 reset gate) !pip install --upgrade d2l0.17.5 #d2l需要更新import torch from tor…

集群工具之HAProxy

集群工具之HAProxy HAProxy简介 它是一款实现负载均衡的调度器适用于负载特别大的web站点HAProxy的工作模式 mode http:只适用于web服务mode tcp:适用于各种服务mode health:仅做健康检查,很少使用 配置HAProxy client&#x…

Datawhale |【独家】万字长文带你梳理Llama开源家族:从Llama-1到Llama-3

本文来源公众号“Datawhale”,仅用于学术分享,侵权删,干货满满。 原文链接:【独家】万字长文带你梳理Llama开源家族:从Llama-1到Llama-3 0. 引言 在AI领域,大模型的发展正以前所未有的速度推进技术的边界…

4(第三章,数据治理)

目录 概述 业务驱动因素 目标和原则 1、可持续发展 2、嵌入式 3、可度量 基本概念 数据治理与数据管理的关系 数据治理组织 数据治理运营模型类型 数据管理岗位的类型 数据治理的成果体现 国内的数据治理 什么是数据治理 为什么进行数据治理 数据治理的必要性 …

Linux 操作系统的引导过程

Linux系统开机引导过程: 开机自检 检测硬件设备,找到能够引导系统的设备,比如硬盘MBR引导 运行MBR扇区里的主引导程序GRUB启动GRUB菜单 系统读取GRUB配置文件(/boot/grub2/grub.cfg)获取内核的设置和…

《内向者优势》:不要低估一个内向的人

#世界读书日 作者主页: 🔗进朱者赤的博客 精选专栏:🔗经典算法 作者简介:阿里非典型程序员一枚 ,记录在大厂的打怪升级之路。 一起学习Java、大数据、数据结构算法(公众号同名) ❤…

[RTOS 学习记录] 复杂工程项目的管理

[RTOS 学习记录] 复杂工程项目的管理 这篇文章是我阅读《嵌入式实时操作系统μCOS-II原理及应用》后的读书笔记,记录目的是为了个人后续回顾复习使用。 前置内容: 工程管理工具make及makefile 文章目录 1 批处理文件与makefile的综合使用1.1 批处理文件…