当前位置: 首页 > news >正文

用Python视角拆解Google AMIE首次真实世界临床验证(下)

附录一、完整 Python 示例代码

下面这版代码适合做:

  • 多个方法 / 模型的批量评估
  • 生成逐样本结果表
  • 汇总平均指标、置信区间
  • 做配对显著性检验
  • 导出适合 notebook 和论文表格使用的数据

默认按分类/打分/二元判断类任务来写;如果你原本是生成式任务,也可以把metric_fn换成 ROUGE、BLEU、EM、F1、人工评分等。

from__future__importannotationsimportjsonimportmathfromdataclassesimportdataclass,asdictfrompathlibimportPathfromtypingimportCallable,Dict,List,Any,Optional,Tupleimportnumpyasnpimportpandasaspdfromscipyimportstats# =========================# 1. 数据结构# =========================@dataclassclassExample:sample_id:strinput_text:strgold:Any meta:Optional[Dict[str,Any]]=None@dataclassclassPrediction:sample_id:strmodel_name:strpred:Any score:Optional[float]=Nonelatency_ms:Optional[float]=Nonetokens_in:Optional[int]=Nonetokens_out:Optional[int]=Noneraw_output:Optional[str]=None# =========================# 2. 指标函数# =========================defbinary_accuracy(gold:Any,pred:Any)->float:returnfloat(gold==pred)defexact_match(gold:str,pred:str)->float:ifgoldisNoneorpredisNone:return0.0returnfloat(str(gold).strip()==str(pred).strip())defmacro_f1_from_frame(df:pd.DataFrame,gold_col:str="gold",pred_col:str="pred")->float:""" 基于整表计算 macro-F1。 适合多分类整体汇总,不适合逐样本。 """labels=sorted(set(df[gold_col].dropna().unique())|set(df[pred_col].dropna().unique()))f1s=[]forlabelinlabels:tp=((df[gold_col]==label)&(df[pred_col]==label)).sum()fp=((df[gold_col]!=label)&(df[pred_col]==label)).sum()fn=((df[gold_col]==label)&(df[pred_col]!=label)).sum()precision=tp/(tp+fp)if(tp+fp)>0else0.0recall=tp/(tp+fn)if(tp+fn)>0else0.0f1=2*precision*recall/(precision+recall)if(precision+recall)>0else0.0f1s.append(f1)returnfloat(np.mean(f1s))iff1selse0.0# =========================# 3. 评估主流程# =========================defevaluate_predictions(examples:List[Example],predictions:List[Prediction],metric_fn:Callable[[Any,Any],float],)->pd.DataFrame:""" 返回逐样本评估表: [sample_id, model_name, gold, pred, metric, latency_ms, ...] """ex_map={ex.sample_id:exforexinexamples}rows=[]forpinpredictions:ifp.sample_idnotinex_map:continueex=ex_map[p.sample_id]metric_value=metric_fn(ex.gold,p.pred)row={"sample_id":p.sample_id,"model_name":p.model_name,"input_text":ex.input_text,"gold":ex.gold,"pred":p.pred,"metric":metric_value,"latency_ms":p.latency_ms,"tokens_in":p.tokens_in,"tokens_out":p.tokens_out,"score":p.score,}ifex.meta:fork,vinex.meta.items():row[f"meta.{k}"]=v rows.append(row)returnpd.DataFrame(rows)# =========================# 4. Bootstrap 置信区间# =========================defbootstrap_ci(values:np.ndarray,n_bootstrap:int=5000,ci:float=
http://www.jsqmd.com/news/689217/

相关文章:

  • 深入TI毫米波雷达芯片:从射频前端到ARM/DSP双核,如何分配算法任务?
  • 超越COCO的21K类别检测:用C#和Detic模型打造你的“万物识别”小工具
  • Qwen2.5-VL-7B-Instruct效果展示:多图时序理解(如实验过程连贯分析)
  • 低年级娃学习兴趣难培养?这5款适龄APP,无痛启蒙不费妈 - 品牌测评鉴赏家
  • HoloEverywhere:终极Android主题兼容解决方案 - 让旧设备享受现代UI体验
  • 用LLaMA-Factory快速微调第一个开源大模型(新手指南)-实战落地指南
  • 终极指南:5步掌握Cursor Pro破解工具,实现无限AI编程自由
  • 从集合操作到代码实现:一文搞懂杰卡德相似系数在Python中的三种高效写法(附性能对比)
  • 手把手带你用Wireshark抓包分析UFS协议:实战解读UPIU数据单元与链路训练过程
  • YouTube Plus网络设置:Wi-Fi和移动数据下载控制的终极指南
  • STM32F407双ADC同步规则转换+双ADC交替采样+DMA搬运+DAC输出ADC采样+定时器触发+HAL库+cubemx配置详解
  • 从像素到画布:手把手教你用JavaScript玩转ImageData,实现自定义图片滤镜
  • 2026年3月建筑结构检测产品推荐,建筑结构检测/建筑加固/建筑结构胶,建筑结构检测公司推荐 - 品牌推荐师
  • Phi-3.5-Mini-Instruct真实案例:将‘做一个记账App’需求分解为MVP功能列表+优先级排序
  • 别死记74LS194A功能表!用Arduino+LED动态演示移位寄存器的4种工作模式
  • 别再只盯着PTB了!用WikiText-103训练你的第一个语言模型(附完整代码)
  • 戴尔笔记本风扇控制难题:如何平衡散热性能与运行噪音
  • Qwen3.5-2B赋能运维自动化:智能日志分析与故障预警
  • PDCCH Order:NR中触发随机接入的“调度指令”详解
  • VC8升级后必做的5项验证清单:除了看版本号,这些关键服务你检查了吗?
  • Youtu-VL-4B-Instruct源码部署:Windows WSL2环境下的GGUF模型运行与WebUI调试指南
  • RP2040微控制器驱动乐高积木运行Doom游戏
  • 题解:AtCoder AT_awc0001_d Merchant on the Highway
  • 老项目维护必备:在Windows Server 2022上完美部署SQL Server 2012全攻略
  • 想给孩子说的话(1):警惕成长路上的陷阱
  • 室内动捕+Position模式:为你的PX4无人机开启‘上帝视角’PID自整定
  • DeepL翻译浏览器扩展:让外语内容阅读变得轻松自然
  • WinUtil:终极Windows管理工具,让你的电脑从此告别繁琐设置
  • 法国和非盟在会计核算、会计科目等方面的法律和政策要求完全不同,因为它们的性质截然不同:法国是一个主权国家,而非盟是一个政府间国际组织
  • 2026解锁学习神器,让娃主动爱上学习 - 品牌测评鉴赏家