C++计算AUC

AUC计算方法总结 AUC(Area Under The Curve)是一种用来度量分类模型好坏的一个标准,这里不详细叙述AUC的定义及意义,详见WIKI。 算法1:如下图是一个分类器的结果,计算点形成的折线的面积就是AUC的值  代码如下: public double aucAlg1()    {         double n0 =scores[0].size();//scores[0] 阅读详情
  • 按预测值和标签升序排序
  • 遍历数组,遇到负样本neg+1,遇到正样本sum+=neg
  • 考虑到存在正负样本预测值相同,需要加0.5的情况,增加辅助变量tmp和val
  • 理论看这里
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

struct val_np {
  double val;
  char np;
};

bool auc_cmp(val_np a, val_np b) {
  if(a.val == b.val) return a.np < b.np;
  return a.val < b.val;
}

double AUC(vector<val_np> v) {
  sort(v.begin(), v.end(), auc_cmp);
  int neg = 0, tmp = 0, n = v.size(), m = 0;
  double val = 0, sum = 0;
  for(int i = 0; i < n; ++i) {
    if(v[i].np == 'p') ++m;
  }
  if(m == 0 || m == n) return 0;
  for(int i = 0; i < n; ++i) {
    // 大于之前的预测值,更新变量,如果是正样本tmp=0,是负样本tmp=1
    if(v[i].val != val) {
      val = v[i].val;
      neg += tmp;
      tmp = 1;
      // 正样本需要更新sum
      if(v[i].np == 'p') {
        tmp = 0;
        sum += neg;
      }
    } else {  
      // 等于之前的预测值且是正样本,sum加小于它的neg个和等于它的tmp个
      if(v[i].np == 'p') {
        sum += neg+0.5*tmp;
      } else {
        ++tmp;
      }
    }
  }
  return sum/m/(n-m);
}

int main(int argc, char **argv) {
	vector<val_np> v(8);
  v[0].val = 0.2, v[0].np = 'p';
  v[1].val = 0.2, v[1].np = 'n';
  v[2].val = 0.1, v[2].np = 'n';
  v[3].val = 0.2, v[3].np = 'n';
  v[4].val = 0.3, v[4].np = 'p';
  v[5].val = 0.2, v[5].np = 'p';
  v[6].val = 0.3, v[6].np = 'n';;
  v[7].val = 0.2, v[7].np = 'n';
  cout << AUC(v) << endl;

  return 0;
}
用c++写代码之AUC算法 用c++写代码之AUC算法 算法来源 在统计和机器学习中,常常用AUC来评估二分类模型的性能。AUC的全称是 area under the curve,即曲线下的面积。通常这里的曲线指的是受试者操作曲线(Receiver operating characteristic, ROC)。ROC曲线早在第二次世界大战期间就被使用在电子工程和雷达工程当中,被用于军事目标检测。 后来,ROC曲线也被应用到... 阅读详情

相关推荐

目标检测AP计算(C++)

计算目标检测结果评估的c++实现

weixin_46206829的博客 410

2022-05-10AUC_CPP两种方法实现

https://zhuanlan.zhihu.com/p/462734871 int main() { vector<int> label = { 1,0,0 }; vector<double> pre = { 0.9, 0.8, 0.3 }; vector<double> pos; vector<double> neg; int n = label.size(); double auc = 0; int

lucifer80861的博客 311

计算auc和acc以及svm的demo

print("下面这只是一个SVM测试") from sklearn import svm import warnings warnings.filterwarnings("ignore", category=FutureWarning, module="sklearn", lineno=196) X = [[0, 0], [0, 1], [1, 0], [1, 1]] # training samples y = [0, 1, 2, 3] # training target y_test = [0,

qeqjkqjklq的博客 1079

【携程】计算AUC

AUC计算方法:https://blog.youkuaiyun.com/qq_22238533/article/details/78666436 #include<iostream> #include<algorithm> #include<cmath> #include<queue> #include<stack> #include<st...

sclczk的博客 264

SVM机器学习模型的AUC和ROC评估

支持向量机(Support Vector Machine, SVM)是一种强大的监督学习模型,主要用于分类问题。它通过在高维特征空间中寻找最大间隔的超平面,将不同类别的数据有效分隔开。SVM以其卓越的泛化能力,在图像识别、文本分类、生物信息学以及金融分析等多个领域都有着广泛的应用。SVM的核心思想在于找到一个最能代表两个类别数据分布的决策边界。在实际操作中,通过优化目标函数,求解得到支持向量,这些支持向量恰好位于决策边界上,从而定义了最优超平面。

weixin_36184718的博客 1342

C++ GBDT 源码拆解:训练日志、直方图分裂与叶子权重

梯度提升树(GBDT)是一类基于加法模型的集成学习方法,通过多轮拟合负梯度逐步降低损失。其核心在于梯度与二阶 Hessian 驱动的树分裂、直方图候选切分,以及带正则项的叶子权重计算,这些机制共同决定模型的收敛速度与泛化能力。在风控建模、在线推理和 C++ 服务内嵌等场景中,可调试、低依赖、易部署的 GBDT 实现具有较高工程价值。围绕 C++ GBDT 源码 source code 的拆解,从训练日志不抖、直方图分裂到叶子权重与模型序列化,呈现一套可嵌入在线服务的工程实践路径。

weixin_29165725的博客 225

tensorflow添加自定义的auc计算operator

tensorflow可以很方便的添加用户自定义的operator(如果不添加也可以采用sklearn的auc计算函数或者自己写一个 但是会在python执行,这里希望在graph中也就是c++端执行这个计算) 这里根据工作需要添加一个计算auc的operator,只给出最简单实现,后续高级功能还是参考官方wiki https://www.tensorflow.org/ver...

weixin_33910434的博客 199

更快的 ROC-AUC:用 C++ 编写的用于二元分类问题的 ROC 的 AUC 的快速计算。-matlab开发

AUC = fastAUC(标签,分数,posclass) 计算涉及两个不同目标的问题(即二元分类问题)的 ROC 曲线下面积 (AUC)。 使用此功能的主要优点是: *速度用C ++编写,它的性能比perfcurve(Matlab统计工具箱)快得多。 在 2000 万个实例的基准测试中,此函数在 perfcurve 方面实现了超过 100 的加速因子。 *独立无需安装统计工具箱即可工作。 请通过邮件发送任何问题、意见和/或建议。

Scholomance Academy 读题训练,模拟(沈阳)

题意 : 给出n组,每组包含一个字符(+/-)和一个数值 对于任意一个数值x,如果x大于θ\thetaθ且为正,为TP;x大于θ\thetaθ且为负,为FP;x小于θ\thetaθ且为正,为FN;小于θ\thetaθ且为负,为TN 现定义TPR=TP/(TP+FN)TPR=TP/(TP+FN)TPR=TP/(TP+FN),FPR=FP/(TN+FP)FPR=FP/(TN+FP)FPR=FP/(TN+FP) 可以发现TPR即所有字符为正的数值中属于TP的数量,FPR… 可以根据取不同θ\thetaθ时TPR

m0_51448653的博客 962

量化策略分享 | MA超进化:LLT低延迟趋势线

移动平均线(MA)是我们技术分析中常用的一种趋势跟踪指标,但在使用的时候你是否也会有这样的烦恼:交易信号延迟太久,或者交易信号太频繁了!延迟性和平滑性问题似乎是不可兼得的“鱼和熊掌”。 针对这个问题,广发证券基于通信领域的滤波器原理,在《短线择时策略研究之三:低延迟趋势线与交易性择时》中创造性构建了:LLT低延迟趋势线(Low-lag Trendline)。 LLT低延迟趋势线是一种二阶滤波器,阶数相对适宜,相比MA、EMA等均线指标能够降低延迟,同时增强在低频部分的输出信号。 当然,..

量化交易研究 5308

【护网行动-红蓝攻防】第一章-红蓝对抗基础 认识红蓝紫

军事上的演练,是除了实战以外最能检验军队战斗力的一种考核方式,他可以模拟面对外部势力的攻击时候,如何更好的去维护国家和主权的安全。同样的,在网络上面,真实环境下的网络攻防演练也是检验一个单位,企业网络防御能力,发现潜在危险最好的方法。1.政策要求2安全威胁驱动当前,我国关键信息基础设施面临的网络安全形势严峻复杂,网站平台大规模数据泄露事件频发,生产业务系统安全隐患突出,甚至有的系统长期被控面对高级持续性的网络攻击,防护能力十分欠缺。目前,我国面临的网络安全威胁主要有以下几点。

wxh的博客 1574

ROC和AUC介绍以及如何计算AUC

ROC和AUC介绍以及如何计算AUC http://alexkong.net/2013/06/introduction-to-auc-and-roc/#fn:1

fzzzzy的博客 241

Codex VS Claude Code 全面测评!代码开发到底选谁?

评测结果6项指标(设计质量、提示遵从度、响应式、代码质量、细节关注、惊喜度)虽未公布最终赢家,但实测本身已揭示两工具在前端任务上的直接差异。Codex基于OpenAI的云沙箱架构,API通过全球CDN分发,但在国内直连时,依赖特定网络环境。:纯终端工具,直接在你的iTerm或终端中运行,不新建窗口、不切换上下文,与本地开发环境无缝融合。GPT-5.3 Codex(xhigh)输入$1.75/百万token,输出$14.00/百万token,混合均价约**$4.81/百万token**。

Jedudu的博客 3073

C++代码实现MATLAB中的rocmetrics函数功能

【代码】C++代码实现MATLAB中的rocmetrics函数功能。

weixin_30777913的博客 740

别再只会插卡了!用示波器实测SIM卡上电时序与通信波形(附故障排查)

本文深入解析了SIM卡通信的电气信号与时序规则,通过示波器实测波形揭示SIM卡上电时序与通信协议的关键细节。从VCC、CLK、RST、DATA四路信号的协同工作,到ATR(Answer to Reset)的解析,再到常见故障的波形诊断与排查方法,为硬件工程师提供了实用的调试指南。文章还分享了高级调试技巧与现代化工具链搭建建议,帮助提升物联网设备SIM卡通信的可靠性与效率。

weixin_42567279的博客 325

从Live2D到Unreal Engine:2D与3D虚拟数字人核心技术实现路径解析

本文深入解析了从Live2D到Unreal Engine的2D与3D虚拟数字人核心技术实现路径,涵盖技术选型、制作流程与优化技巧。通过对比2D骨骼动画与3D建模渲染的差异,结合实战案例,帮助开发者根据项目需求选择合适方案,提升虚拟数字人的交互体验与视觉效果。

weixin_30379531的博客 149

AUC计算 - 进阶操作

首先AUC值是一个概率值,当你随机挑选一个正样本以及负样本,当前的分类算法根据计算得到的Score值将这个正样本排在负样本前面的概率就是AUC值,AUC值越大,当前分类算法越有可能将正样本排在负样本前面,从而能够更好地分类。 AUC计算 最直观的,根据AUC这个名称,我们知道,计算出ROC曲线下面的面积,就是AUC的值。事实上,这也是在早期 Machine Learning文献中常见的AUC计算...

weixin_30693183的博客 210

基于YOLO11深度学习的糖尿病视网膜病变智能诊断系统【Python源码+Pyqt5界面+数据集+训练代码】

本文详细介绍如何利用YOLO11深度学习技术构建糖尿病视网膜病变智能诊断系统。项目提供完整的Python源码、PyQt5图形界面、标注数据集及训练代码,实现从图片、视频到摄像头的多模态病变检测,旨在辅助医疗筛查,提升诊断效率。

weixin_29089057的博客 277

ajax全局加密,Ajax请求接口加密研究(针对网页前端的接口安全加密机制研究)...

数据库查询优化-SQL优化1.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默 ...ios 面试题 01.__block和__weak修饰符的区别: 1.__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型....

weixin_39737368的博客 595

若依(ruoyivue)实现文档在线查看

1、Kkfileview部署 第一步:从kkfileview官方发行版本下载安装包,安装包下载路径: https://gitee.com/kekingcn/file-online-preview/releases, 第二步:解压kkFileView-x.x.x文件(Windows用.zip包,Linux/MacOS用.tar.gz包) 第三步:打开解压后文件夹的bin目录,运行startup脚本(Windows下以管理员身份运行startup.bat,Linux以root用户运行startup.sh) 第四

weixin_46953697的博客 9680

[cshell]个性化配置你的cshrc/tcshrc

本文介绍了csh/tcsh shell的配置优化方法,主要包括:1. 配置文件管理(全局和个人配置);2. 按键绑定设置(解决远程登录按键问题);3. 提示符个性化(包含颜色配置方案);4. 环境变量设置(如LSCOLORS、CLICOLOR等);5. 安全防护措施(防误删、防覆盖等);6. 实用alias命令集(简化操作、提高效率)。文章提供了详细的配置示例,并建议通过man tcsh获取更多帮助信息。这些配置能显著提升shell使用体验和工作效率。

元直的博客 6112

面试总结(360)

搜索广告岗位 一面挂 聊项目 msn新闻的数据怎么体现商业价值? 问Trainer细节 LR模型怎么防止过拟合? a. 做特征选择;b.加入正则项,在特征维数很多的时候效果更明显; c. 增大样本数量; d. 交叉验证;e. 特征离散化; f.去除异常值,LR对异常值敏感。 一个高维特征怎么挑选出最有效的Top K特征。 a. 贪心方法,每次去掉一维特征后比较效果; b. 随机挑选含有k个元素的...

Meggie的博客 393

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

机器学习-KNN算法原理、实战(含模型评估可视化)详细讲解(C++/Python两种语言实现)

本文介绍了KNN算法的原理、优缺点及实现方法。KNN是一种基于距离度量的监督学习算法,通过计算待测样本与已知样本的欧几里得距离,选择最近的k个邻居进行预测。文章还详细讲解了数据预处理(归一化、洗牌)、最佳k值选择(网格搜索+交叉验证)以及评估指标(ROC曲线、AUC值)。分别使用C++(Matplot++可视化)和Python(NumPy+Matplotlib)实现约会网站推荐系统,并对比了两种语言在机器学习任务中的适用性。C++版本侧重算法底层实现,Python版本则更简洁高效。

江塘的博客 1012

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: ros使用service的所有步骤
下一篇: C++有序数组求上下界
刀么克瑟拉莫
博客等级 码龄14年 68粉丝 268原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刀么克瑟拉莫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值