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_score

y_pred = [0, 2, 1, 3]
y_true = [0, 1, 2, 3]
accuracy_score(y_true, y_pred)
#0.5

accuracy_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.5





y_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 值,则定义用于平均误差的权重

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux:Win10平台上,用VMware安装Centos7.x及系统初始化关键的相关配置(分步骤操作,详细,一篇足以)

VMware安装Centos7.x镜像的详细步骤:VMWare安装Centos系统(无桌面模式) 我这里是为了安装Hadoop集群,所以,以下这些步骤是必须进行的 如果你是学习Linux,可以跳过非必须的那些配置项 我安装的版本是&…

前端实现将二进制文件流,并下载为excel文件

目录 一、关于二进制流二、项目实践三、常见问题及解决 一、关于二进制流 含义:二进制流是一种计算机文件格式,它的数据以二进制形式存储,与文本文件不同。 二进制文件可以包含任意类型的数据,例如:图像、音频、视频…

智慧园区引领产业智慧化:深入探索智慧技术如何点亮园区创新发展之路,构建未来产业生态圈,驱动区域经济持续升级

目录 一、引言 二、智慧园区的内涵与特征 三、智慧技术点亮园区创新发展之路 1、智慧技术推动产业转型升级 2、智慧技术促进新兴产业发展 3、智慧技术提升园区创新能力 四、智慧园区在产业智慧化中的作用与价值 1、优化资源配置,提高经济效益 2、提升服务品…

Kibana安装部署(Linux)

Kibana是Elasticsearch的开源可视化工具,与存储在Elasticsearch中的数据进行交互。 1. 下载软件 这里使用的Elasticsearch的版本是7.12.0,所以kibana选择同样的7.12.0版本。 官网下载地址:https://www.elastic.co/cn/downloads/past-releas…

【全网首发】Mogdb 5.0.6新特性:CM双网卡生产落地方案

在写这篇文章的时候,刚刚加班结束,顺手写了这篇文章。 前言 某大型全国性行业核心系统数据库需要A、B两个物理隔离的双网卡架构方案,已成为行业标准。而最新发布的MogDB 5.0.6的CM新增支持流复制双网段部署,用于网卡级高可用容灾(…

Meta 向第三方开放 MR 操作系统;黄仁勋:人形机器人成本可能比人们预期要低得多丨 RTE 开发者日报 Vol.190

开发者朋友们大家好: 这里是「RTE 开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real Time Engagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有…

大厂产品专家是做晋升述职的?

在大厂里,晋升都是需要述职的。与年终述职不同,晋升述职要求严格很多。这种情况下,如何完美表达自己才是适合晋升的人选?这篇文章,值得即将晋升和准备晋升的各位看看。 之前学姐写了一篇文章,讲怎么做年度述职,反响还不错~有兴趣的童鞋可以戳这里复习。今天学姐来讲一个…

25计算机考研院校数据分析 | 上海交通大学

上海交通大学电子信息与电气工程学院成立于2001年12月,其前身可湖源至百年前的电机专科,具有中国电气工程师“摇篮”之美称。50年代根据学科发展需要分为电工与计算机科学系(三系)和电子工程系(四系)。1985年,三系和四系合并,成立…

【LeetCode:216. 组合总和 III + 递归】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

类之间的关系

文章目录 一、横向关系复合(组合)委托(聚合)依赖关联 二、纵向关系(继承)继承下构造析构执行的顺序继承方法继承中的作用域多重继承 总结 一、横向关系 复合(组合) 包含与被包含黑色…

跟着野火从零开始手搓FreeRTOS(6)多优先级的配置

在 FreeRTOS 中,数字优先级越小,逻辑优先级也越小。 之前提过,就绪列表其实就是一个数组, 里面存的是就绪任务的TCB(准确来说是 TCB 里面的 xStateListItem 节点),数组的下标对应任务的优先级&a…

mmclassification 训练自己的数据集

文章目录 从源码安装数据集准备config文件训练附录 从源码安装 git clone https://github.com/open-mmlab/mmpretrain.git cd mmpretrain pip install -U openmim && mim install -e .下面是我使用的版本 /media/xp/data/pydoc/mmlab/mmpretrain$ pip show mmcv mmpr…

npm install 卡在still idealTree buildDeps不动

前言 再使用npm install 安装包依赖时 发现一直卡住 停留在 观察node_cache下的_logs文件 发现一直在拉取包 37 silly idealTree buildDeps 38 silly fetch manifest riophae/vue-treeselect0.4.0尝试解决 尝试设置了taobao镜像源 依然如此 获取已经设置的镜像源 确实是ta…

6.3 实现Session 共享

1. Session 共享配置 2. Nginx 负载均衡 3. 测试请求分发 经过如上步骤 ,就完成了利用 Redis 实现 Session 共享的功能. 基本上不需要额外配置,开箱即用

【SpringBoot】-MyBatis详解+单表操作

作者:学Java的冬瓜 博客主页:☀冬瓜的主页🌙 专栏:【Framework】 主要内容:什么是MyBatis框架?MyBatis框架有什么用?MyBatis实现查询步骤详解。MyBatis实现单表的增删查改。MyBatis模糊查询&…

LeetCode刷题实战4:寻找两个正序数组的中位数

题目内容 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 示例 1: 输入:nums1 [1,3], nums2 [2] 输出:2.0…

微博评论爬取

import requests import csv# 打开CSV文件以写入数据 f open(data.csv, modea, encodingutf-8-sig, newline) csv_writer csv.DictWriter(f, fieldnames[昵称, 性别, 归属地, 内容]) csv_writer.writeheader()# 定义一个函数用于获取评论内容 def GetContent(max_id):# 设置请…

SRS服务接入华为云CDN

CDN简介: CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网…

为何3C电子精密件测量首选闪测仪?

在工业生产中,精密件的测量是至关重要的环节,它直接关系到产品的质量和性能。大部分3c电子工厂以及精密五金加工厂中,产品质检环节中大部分测量仪器都采用闪测仪。为什么呢? 测量精度与稳定性 闪测仪能够提供更高的测量精度和稳定…

window11上修改字符编码方式

windos11字符编码方式为gbk。我们有时候要用cmd命令行检测中文的代码里面含有中文的时候就会出现乱码,将gbk更改为utf-8后便可以解决这一情况。 步骤: 1、windows上【设置】-【时间和语言】【语言与区域】-【管理语言设置】 打开区域界面,点…