ML/DL常用评估方法

import bisect
from sklearn import metrics
from sklearn.metrics import precision_recall_curve# 创建一个单独的Metircs.py文件
def calc_auc(y_true, y_pred): # y_pred:[0,1]之间任何数return metrics.roc_auc_score(y_true, y_pred)def calc_ks(y_true, y_pred): # y_pred:[0,1]之间任何数fpr, tpr, thresholds = metrics.roc_curve(y_true, y_pred)return max(tpr - fpr)def calc_acc(y_true, y_pred): # y_pred:{0,1} 必须事先通过阈值转变为0,1return metrics.accuracy_score(y_true, y_pred)def calc_f1(y_true, y_pred): # y_pred:{0,1} 必须事先通过阈值转变为0,1return metrics.recall_score(y_true, y_pred), metrics.precision_score(y_true, y_pred), metrics.f1_score(y_true, y_pred)# 召回率大于0.9时的准确率
def precision_at_r9(y_true, y_pred):p, r, tresholds = precision_recall_curve(y_true, y_pred)ind = bisect.bisect(r, 0.9)if ind >= len(p)-1:return r[-2], p[-2], tresholds[-1]else:return r[ind], p[ind], tresholds[ind]# 准确率大于0.9时的召回率
def recall_at_p9(y_true, y_pred):p, r, tresholds = precision_recall_curve(y_true, y_pred)ind = bisect.bisect(p, 0.9)if ind >= len(p)-1:return r[-2], p[-2], tresholds[-1]else:return r[ind], p[ind], tresholds[ind]

NDCG@K

def get_dcg(y_pred, y_true, k):# 注意y_pred与y_true必须是一一对应的,而且y_pred越大越接近label=1(用相关性的说法就是,与label=1越相关)df = pd.DataFrame({"y_pred": y_pred, "y_true": y_true})df = df.sort_values(by="y_pred", ascending=False)  # 对y_pred进行降序排列,越排在前面的,越接近label=1df = df.iloc[0:k, :]  # 取前K个dcg = (2 ** df["y_true"] - 1) / np.log2(np.arange(1, df["y_true"].count() + 1) + 1)  # 位置从1开始计数dcg = np.sum(dcg)return dcgdef calc_ndcg(y_true, y_pred, k):dcg = get_dcg(y_pred, y_true, k)idcg = get_dcg(y_true, y_true, k)ndcg = dcg / idcgreturn ndcg

Recall@K,Precision@K

def calc_f1(y_true, y_pred, k):  df = pd.DataFrame({"y_pred": y_pred, "y_true": y_true})df = df.sort_values(by="y_pred", ascending=False)  # 对y_pred进行降序排列,越排在前面的,越接近label=1df = df.iloc[0:k, :]  # 取前K个y_true = np.array(df["y_true"])y_pred = np.round(np.array(df["y_pred"])) # y_pred:{0,1} 必须事先通过阈值转变为0,1return recall_score(y_true, y_pred), precision_score(y_true, y_pred), f1_score(y_true, y_pred)

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

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

相关文章

Android远程服务与本地服务的特点以及功能差异

最近又重新看了点IPC的相关知识,以前看过不少Binder的知识,看到c层思路就很模糊了,回头再看也算是一种学习。 IPC全称为:interprocess communication内部进程间通信,官方地址:http://developer.android.com/intl/zh-c…

svn中文语言包安装(最详细步骤)+Language Pack+TortoiseSVN 安装

原文链接:https://blog.csdn.net/massillon/article/details/102780782 svn中文语言包安装(最详细步骤) 一. 查看自己的SVN 版本(这里省略也可以,同事1.9版本的直接在官网下载的语言包也能用,区别对待把,可以先直接在官网下载,不行再去找对应版本语言包) 1.打开SVN找…

我拿模型当朋友,模型却想泄漏我的隐私?

文 | 阿毅编 | 小轶相信大家对Facebook–Cambridge Analytica隐私泄露事件都还有印象。这事儿在当时可谓爆炸性新闻,激起了公众对数据隐私的强烈关注,也间接影响了美国总统选举结果(这不是重点)。不过从事后诸葛亮来看&#xff0c…

论文浅尝 | SPARQL 语言的 ASK 查询表达性研究进展

论文作者之一:杨炫兴,天津大学博士生。链接:http://cic.tju.edu.cn/faculty/zhangxiaowang/publication/ASK.pdf动机SPARQL是万维网联盟(World Wide Web Consortium,简记W3C)推荐的知识图谱标准查询语言&am…

LeetCode 1021. 删除最外层的括号(栈)

文章目录1. 题目2. 解题1. 题目 题目链接 示例 1:输入:"(()())(())" 输出:"()()()" 解释: 输入字符串为 "(()())(())",原语化分解得到 "(()())" "(())"&#xf…

仅使用numpy从头开始实现神经网络,包括反向传播公式推导过程

仅使用numpy从头开始实现神经网络,包括反向传播公式推导过程: https://www.ctolib.com/yizt-numpy_neural_network.html

JVM CPU Profiler技术原理及源码深度解析

研发人员在遇到线上报警或需要优化系统性能时,常常需要分析程序运行行为和性能瓶颈。Profiling技术是一种在应用运行时收集程序相关信息的动态分析手段,常用的JVM Profiler可以从多个方面对程序进行动态分析,如CPU、Memory、Thread、Classes、…

DGL实现同构/异构图卷积模型

同构图卷积 from time import time import numpy as np import dgl import torch import torch.nn as nn import torch.nn.functional as F# 模型 class TwoLayerModel(nn.Module):def __init__(self):super().__init__()# gcnself.conv1 dgl.nn.GraphConv(256, 128)self.con…

Facebook提出生成式实体链接、文档检索,大幅刷新SOTA!

文 | 花小花Posy导言最近ICLR的rebutal 前后分数对比出来了,很多评委都改了分数,有改多的,也有改少的。今天给大家介绍的这篇高分论文竟然在rebuttal前后都保持高分,证明评委们对它的认可程度是很高的。实体检索任务的定义是&…

详解TCP协议的服务特点以及连接建立与终止的过程(俗称三次握手四次挥手)

转载请附本文的链接地址:http://blog.csdn.net/sahadev_/article/details/50780825 ,谢谢。 tcp/ip技术常常会在我们面试的时候出现,很多公司也要求需要掌握tcp/ip,socket等,所以掌握这项技术会为我们面试的时候加分。…

论文浅尝 | 知识库问答中关系检测的学习表示映射

论文笔记整理:吴涵,天津大学硕士,研究方向:自然语言处理。链接:Paper: https://arxiv.org/pdf/1907.07328v1.pdfCode: https://github.com/wudapeng268/KBQA-Adapter引入在关系检测任务中,对于训练数据中已…

LeetCode 1175. 质数排列

文章目录1. 题目2. 解题1. 题目 请你帮忙给从 1 到 n 的数设计排列方案,使得所有的「质数」都应该被放在「质数索引」(索引从 1 开始)上;你需要返回可能的方案总数。 让我们一起来回顾一下「质数」:质数一定是大于 1…

CV模型,全目标检测等

CV视频全目标检测:https://www.bilibili.com/video/BV1zi4y137Xy?p63

ICLR最高分论文揭秘模型泛化,GNN是潜力股

文 | Jerry Qiu编 | 小轶我们都知道,人类在很多任务上都可以很好地完成“外推”,例如:啊不——我是说——例如,我们学会两位数的加减乘除后,就可以轻松将其推广至任意大整数的四则运算:从数学的角度来讲&am…

Android系统原生应用解析之桌面闹钟及相关原理应用之时钟任务的应用(一)

前段时间我一个朋友在面试回来问我:那个公司要5天之内完成一个项目,功能包括每天早上6点开始执行定时任务,大批量图片上传,大批量数据库同步。我心想,后两个功能还好说,可就是每天早上6点开始执行的这种定时…

PyTorch 读取大数据

PyTorch 读取大数据 数据量太大,必须分批从磁盘加载,下面是单机单卡的思路: from torch.utils.data import Dataset, DataLoader import torchclass PretrainData(Dataset):def __init__(self):假设data是个数据量很大的文件,每…

配送交付时间轻量级预估实践

1. 背景 可能很多同学都不知道,从打开美团App点一份外卖开始,然后在半小时内就可以从骑手小哥手中拿到温热的饭菜,这中间涉及的环节有多么复杂。而美团配送技术团队的核心任务,就是将每天来自祖国各地的数千万份订单,迅…

论文浅尝 | 面向 cQA 的跨语言问题检索方法

论文笔记整理:谭亦鸣,东南大学博士生,研究方向为知识库问答。来源:WWW2019链接:https://dl.acm.org/citation.cfm?doid3308558.3313502本文提出了一种面向cQA的跨语言问题检索方法,旨在对于给定的问题检索…

揭秘Python并发编程——协程

原文链接:https://baijiahao.baidu.com/s?id1649450510185145678&wfrspider&forpc Python并发编程一直是进阶当中不可跨越的一道坎,其中包括进程、线程、协程,今天我们就来聊一聊协程。协程的定义很简单,从头到尾只有一条…

LeetCode 804. 唯一摩尔斯密码词(哈希+set)

文章目录1. 题目2. 解题1. 题目 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: “a” 对应 “.-”, “b” 对应 “-…”, “c” 对应 “-.-.”, 等等。 为了方便,所有26个英文字母对应摩尔…