拓冰建站拓冰建站
首页 / 资讯中心 / 正文

RD-Agent 自定义数据科学任务实战:以 ARF 12 小时预测任务为例

RD-Agent 自定义数据科学任务实战以 ARF 12 小时预测任务为例【免费下载链接】RD-AgentResearch and development (RD) is crucial for the enhancement of industrial productivity, especially in the AI era, where the core aspects of RD are mainly focused on data and models. We are committed to automating these high-value generic RD processes through RD-Agent, which lets AI drive>项目地址: https://gitcode.com/GitHub_Trending/rd/RD-Agent在 RD-Agent 的 Data Science 场景中要让框架对任意数据集跑自动化的 RD 循环核心是提供一份结构完整的任务说明文档description.md及配套的数据、采样与评测脚本。本文以仓库内置的arf-12-hours-prediction-task急性呼吸衰竭 12 小时预测示例为骨架完整讲解该任务的定义方式、数据组织、建模与 AUROC 评测规范并结合仓库源码说明 RD-Agent 是如何读取description.md、执行sample.py采样、以及调用eval/目录脚本对测试集打分与校验的。一、任务背景ICU 患者急性呼吸衰竭预测急性呼吸衰竭Acute Respiratory FailureARF是一种在危重患者中进展迅速的危及生命状况。在重症监护室ICU中准确提前预测 ARF 的出现对及时开展临床干预与医疗资源调配至关重要。本任务要求构建一个机器学习模型基于多变量临床时间序列数据预测患者未来 12 小时内是否会发展为 ARF。数据集从电子健康档案EHRs中提取并通过FIDDLE预处理流水线原始数据来自 PhysioNet 平台的 FIDDLE 预处理数据集为每位患者生成结构化的时间特征。任务目标构建一个二分类模型以 12 小时时间序列为输入预测接下来 12 小时内 ARF 是否发生1或不发生0。二、数据说明四个文件的含义示例文档rdagent/scenarios/data_science/example/arf-12-hours-prediction-task/description.md将任务数据分为四个部分train/ARF_12h.csv包含 ICU 住院 ID、ARF 发生的小时数以及接下来 12 小时内是否发生 ARF的二分类标签。列ID、ARF_ONSET_HOUR、ARF_LABELtrain/X.npz形状为 N × T × D 的稀疏张量包含时间依赖特征。N样本数即 ICU 住院次数T时间步每个样本 12 小时的记录D动态特征维度每小时多少个特征。test/ARF_12h.csv测试集 ground truth 标签仅用于评测。test/X.npz与训练数据同格式的测试特征集。数据的读取方式特征文件是sparse库保存的稀疏张量COO 格式标签文件是普通 CSVimport sparse X sparse.load_npz(url/X.npz).todense()import pandas as pd df pd.read_csv(url/ARF_12h.csv)这两段读取代码也正是仓库中真实数据处理脚本的写法。prepare.py 在第 30-31 行同样使用sparse.load_npz加载原始X.npz、pd.read_csv加载ARF_12h.csv并带有注释说明张量为[N, D, T]的 COO 矩阵。三、任务在仓库中的完整目录结构READMEexample/README.md说明了自定义数据集需要准备的目录结构arf-12-hours-prediction-task各文件的实际分工如下文件/目录是否必需作用source_data/任务名/prepare.py必需数据预处理把原始数据切分为训练数据、测试数据、格式化 submission 文件与标准答案文件任务名/description.md必需任务详细说明包含任务描述、目标、数据说明、数据使用注意、建模、评测、提交格式等章节任务名/sample.py可选调试用途的数据采样脚本不提供时 RD-Agent 使用默认采样逻辑eval/任务名/grade.py可选在测试数据集上计算任务得分eval/任务名/valid.py可选校验生成的submission.csv是否合法以下结合源码逐一说明这些脚本的实现细节。3.1 prepare.py70/30 随机切分与提交文件生成prepare.py 的完整流程以固定种子SEED 42打乱全部样本索引按 70/30 切分为train_idx/test_idx用测试集标签复制出一份sample_submission.csvARF_LABEL全部置 0只保留ID与ARF_LABEL两列写到public即任务公开目录把带标签的完整测试集写为eval/arf-12-hours-prediction-task/submission_test.csv作为评测时的标准答案公开测试集只保留ID、ARF_LABEL不含标签值两列与test/X.npz一起写入public/test/训练集三列与train/X.npz写入public/train/末尾用一组assert断言校验训练/测试特征张量与标签行数一致、公开测试集恰好 2 列、公开训练集恰好 3 列、切分后总长度等于原始长度。这种公开目录 eval/私有答案的分离保证自动化循环在不知道测试集标签的情况下生成 submission再由私有评测脚本统一打分。3.2 sample.py面向调试的小样本采样sample.py 提供了create_debug_data(dataset_path, output_path, min_frac0.02, min_num10)对train与test两个子目录分别处理从稀疏张量X.npz中无放回抽取max(int(N * min_frac), min_num)个样本行即至少保留 10 行、最多约 2% 的样本同步按相同索引切分标签 CSV并保存回X.npz/ARF_12h.csv训练集使用随机种子 42、测试集使用 123保证两次采样结果可复现且互不相同目录中除X.npz与ARF_12h.csv之外的其他文件会原样拷贝保持目录结构完整脚本入口通过if __name__ __main__ or globals().get(__name__) run_path读取dataset_path/output_path两个全局变量——这与 RD-Agent 框架的调用方式一一对应见 5.1 节。3.3 grade.py 与 valid.py测试集打分与提交校验grade.py 定义了grade(submission, answers) - float通过prepare_for_auroc_metric做严格校验submission 与 answers 必须同时含ID与ARF_LABEL列、行数一致、ID排序后取值完全一致、ARF_LABEL必须是 01 之间的数值即概率值校验通过后用sklearn.metrics.roc_auc_score(y_true, y_score)计算 AUROC__main__中读取submission.csv模型产出与submission_test.csv标准答案输出{competition_id: arf-12-hours-prediction-task, score: ...}的 JSON。valid.py 则做轻量级合法性检查确认submission.csv存在且其行数与submission_test.csv相同否则抛出AssertionError。四、建模与评测规范4.1 建模设定每个样本是 ICU 患者 12 小时观测记录组成的多变量时间序列表示为(12, D)的张量输入12 × D 的临床特征矩阵输出二分类预测 0无 ARF或 1发生 ARF损失函数BCEWithLogitsLoss、CrossEntropyLoss或等价形式评测指标AUROC受试者工作特征曲线下面积。文档特别强调虽然输出是二分类但 AUROC 评估的是预测分数的排序质量。因此训练时应让模型输出置信度分数概率最终提交时再通过阈值如 0.5二值化。4.2 AUROC 的定义提交按 AUROC 计分其定义为$$ \text{AUROC} \frac{1}{|P| \cdot |N|} \sum_{i \in P} \sum_{j \in N} \left[ \mathbb{1}(s_i s_j) \frac{1}{2} \cdot \mathbb{1}(s_i s_j) \right] $$AUROC 反映模型将正样本排在负样本之上的能力1.0 表示完美区分0.5 相当于随机猜测。这与 grade.py 使用roc_auc_score的实现完全一致。4.3 提交格式针对test/ARF_12h.csv中的每个ID基于X.npz预测接下来 12 小时内是否发生 ARF提交文件应为ID,ARF_LABEL 246505,0 291335,0 286713,0 ...文档提醒虽然提交是二值的AUROC 仍评估模型的排序质量建议训练时输出概率、再套用阈值转换为 0/1 提交。五、RD-Agent 如何消费这些文件源码级调用链5.1 description.md 的读取路径场景类 DataScienceScen 在初始化时scen/__init__.py第 30-68 行检查DS_RD_SETTING.local_data_path/{competition}是否存在不存在直接抛出FileNotFoundError若sample_data_by_LLM为False则检查local_data_path/sample/{competition}调试数据目录若不存在先看是否存在local_data_path/{competition}/sample.py——存在则用runpy.run_path执行它并通过init_globals注入dataset_path原始数据根目录与output_pathlocal_data_path/sample/{competition}不存在才回退到框架内置的create_debug_data_get_description()优先读取local_data_path/{competition}/description.md即本文主角文件的全文作为raw_description找不到description.md时再尝试{competition}.json两者都没有则报错。这说明description.md的章节写得越完整任务描述、数据说明、建模、评测、提交格式LLM 后续解析出的task_type、dataset_description、submission_specifications、metric_name、metric_direction等字段就越准确——_analysis_competition_description()会把这些字段结构化供提案、编码与运行阶段拼接 prompt 使用见 scen/prompts.yaml 中的模板。5.2 内置默认采样逻辑若任务未提供sample.py框架使用 debug/data.py 中的create_debug_data(competition, dataset_path, min_frac0.01, min_num5, sample_pathNone)map_competition按竞赛名映射缩减器 采样器未命中时默认使用UniqueIDDataReducerDefaultSamplerUniqueIDDataReducer会先按标签列每组抽 1 行保证类别覆盖再对剩余行按max(min_frac, min_num/len(df))比例随机抽样DefaultSampler遍历数据目录对.csv、.pkl、.parquet、.h5、.hdf5、.jsonl、.bson等扩展名统一采样并镜像到sample/目录generic的DataHandler按文件后缀自动选择 pandas 的读取/写出方法。对比本任务的sample.py可以看出自定义采样脚本的价值在于它能感知X.npz稀疏张量与标签 CSV 的行对齐关系按同一组索引同时切分两者这是通用采样器无法处理的——因此对于 npz/多文件联动型数据集建议始终提供sample.py。5.3 关键配置项app/data_science/conf.py 中DataScienceBasePropSetting环境变量前缀DS_与本任务直接相关的字段配置项默认值说明scenrdagent.scenarios.data_science.scen.KaggleScen场景类自定义数据集应改为rdagent.scenarios.data_science.scen.DataScienceScensample_data_by_LLMTrue为False时才触发上文所述的sample.py/ 内置采样流程use_raw_descriptionFalse是否把description.md原文直接拼进场景描述eval_sub_direval评测脚本目录框架会在{local_data_path}/eval/{competition}下查找grade.py/valid.pylocal_data_path见 Kaggle 基础设置数据根目录需放置任务目录、source_data、evaldebug_timeout/full_timeout600/3600秒调试数据与全量数据的运行超时max_trace_num1多 trace 并行探索的最大分支数5.4 运行方式准备完数据目录后可沿用 Kaggle 入口命令运行该任务app/data_science/loop.py 的main支持--competition、--step_n、--loop_n、--timeout等参数rdagent kaggle --competition arf-12-hours-prediction-task或恢复指定会话继续运行dotenv run -- python rdagent/app/data_science/loop.py --competition arf-12-hours-prediction-task $LOG_PATH/__session__/1/0_propose --step_n 1注意scen配置需要指向DataScienceScen而非KaggleScen因为后者会尝试从 Kaggle 平台抓取描述与下载数据而自定义数据集的描述完全来自本地description.md。六、小结arf-12-hours-prediction-task示例展示了 RD-Agent 自定义数据科学任务的完整配方description.md是任务的事实标准需覆盖任务背景、数据文件说明含稀疏张量X.npz的 N×T×D 语义、数据加载代码、建模设定输入/输出/损失/AUROC与提交格式source_data/下的prepare.py负责确定性切分并生成sample_submission.csv与eval/私有答案sample.py以 2%至少 10 行的可复现采样生成调试子集供框架在短超时内快速迭代eval/任务名/grade.py与valid.py分别实现 AUROC 打分含提交概率合法性校验与行数校验场景类DataScienceScen按description.md→sample.py→eval/的顺序消费这些产物驱动提案-编码-运行-反馈的自动 RD 循环。按照这一结构组织自己的数据集可参考同目录下的 playground-series-s4e9 示例即可将任意领域的数据科学问题接入 RD-Agent 的自动化研究流程。【免费下载链接】RD-AgentResearch and development (RD) is crucial for the enhancement of industrial productivity, especially in the AI era, where the core aspects of RD are mainly focused on data and models. We are committed to automating these high-value generic RD processes through RD-Agent, which lets AI drive>项目地址: https://gitcode.com/GitHub_Trending/rd/RD-Agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门