
RD-Agent 数据科学场景实战Playground Series S4E9 二手车价格预测竞赛规格与自动化研发管线【免费下载链接】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 仓库中为 Kaggle Playground Series 第四赛季第九场playground-series-s4e9预置的竞赛描述文件为核心完整解析这场二手车价格回归预测任务的评测指标、提交格式与数据集规格并结合仓库中配套的数据切分脚本prepare.py、评分与校验脚本grade.py / valid.py以及 Data Science 场景类的源码实现说明该任务描述如何被 RD-Agent 的数据科学管线消费最终形成一条可复现的端到端自动化建模流程。一、任务概述一场轻量级的二手车价格回归竞赛playground-series-s4e9 属于 Kaggle 官方的 Tabular Playground Series 系列活动。根据 description.md 的原文欢迎语这是 2024 年 Kaggle Playground Series延续了以往 playground 的精神——为社区提供有趣且易于上手的轻量级数据集用于练习机器学习技能并计划每月举办一场竞赛。比赛目标Your Goal根据车辆的各种属性预测二手车used cars的价格即一个典型的连续值回归任务。关于 Tabular Playground Series原文档对这一系列赛做了专门说明该系列的目标是为 Kaggle 社区提供大量轻量级挑战供学习者练习和打磨机器学习与数据科学在不同方面的技能每场竞赛一般只持续几周时长可能因挑战不同而伸缩挑战通常使用**从真实数据合成生成synthetically generated**的轻量级数据集让参赛者能快速迭代各种模型与特征工程想法、制作可视化等。合成数据集的动机原文档还解释了为何 Playground 竞赛普遍采用合成数据在 Playground 竞赛中使用合成数据可以在拥有真实世界数据带特征名与确保测试标签不公开之间取得平衡从而举办使用更有趣数据集的竞赛。虽然合成数据生成仍有挑战但如今的最先进方法比该系列启动两年时要好得多目标是产出瑕疵更少的数据集。原文档同时邀请社区对数据集质量提出反馈以持续改进。赛制时间线原文档给出的赛程时间线如下所有截止时间均为对应日期 23:59 UTC节点时间开始日期Start Date2024 年 9 月 1 日报名截止Entry Deadline与最终提交截止相同组队合并截止Team Merger Deadline与最终提交截止相同最终提交截止Final Submission Deadline2024 年 9 月 30 日主办方保留必要时更新赛程时间线的权利。奖项与引用奖项设置为第 1 / 2 / 3 名各获得 Kaggle 周边商品任选为鼓励新手参与同一人在本系列中只能获得一次周边奖励若此前已获奖则顺延至下一支队伍。原文档给出的引用格式为Walter Reade 和 Ashley Chow. Regression of Used Car Prices. Kaggle Playground Series S4E9 竞赛页面, 2024. Kaggle.引用中的原始链接为竞赛官网地址本文遵循仓库引用规范不再输出外链。二、评测指标RMSE 与提交文件格式根均方误差Root Mean Squared Error提交结果按 RMSE 打分其定义为$$ \mathrm{RMSE} \left( \frac{1}{N} \sum_{i1}^{N} (y_i - \hat{y}_i)^2 \right)^{\frac{1}{2}} $$其中 $\hat{y}_i$ 为预测值$y_i$ 为第 $i$ 个样本的真实值。作为回归指标分数越低越好。仓库中与该竞赛配套的评分脚本 grade.py 在实现上正是这一公式对按id对齐排序后的真实价格与预测价格调用sklearn.metrics.mean_squared_error再开平方即grade()返回np.sqrt(mean_squared_error(y_true, y_score))。此外脚本内置了一组来自该场竞赛排行榜的金/银/铜牌与中位数奖牌线grade.py#L56-L61奖牌档位RMSE 阈值Gold62917.05988Silver62945.91714Bronze62958.13747Median63028.69429这些阈值用于在评分输出 JSON 中计算gold_medal、silver_medal、bronze_medal、above_median等字段配合rdagent grade_summary类命令可在程序结束时汇总各次实验的得分方便量化评估自动管线的实际水平。在grade()正式计算之前prepare_for_metric 会先做严格的前置校验提交与答案必须都包含id列、提交必须包含price列、两者行数一致且id序列完全匹配任何一条不满足都会抛出InvalidSubmissionError。Submission File 格式对测试集中每个id必须预测该车的price。文件需包含表头格式如下原文档原样保留id,price 188533,43878.016 188534,43878.016 188535,43878.016 etc.注意43878.016这一数值并非随机示例它在仓库的数据准备脚本 prepare.py 中被用作sample_submission.csv的占位常数——将测试集副本的price列统一填充为43878.016只保留id与price两列后导出供参赛者以及 RD-Agent 管线作为提交文件的格式参照。三、数据集描述与文件说明原文档的数据集部分说明本竞赛的 train 与 test 均由一个在真实数据上训练过的深度学习模型合成生成其原始来源是 Kaggle 上的 Used Car Price Prediction Datasettaeefnajib 发布的二手车价格预测数据集合成数据的特征分布接近但不完全等于原始分布官方允许把原始数据集作为本竞赛的一部分使用既可以探索合成数据与原始数据的差异也可以检验在训练中引入原始数据是否能提升模型效果——这是一个有价值的特征/数据融合切入点。文件清单原文档原样继承train.csv—— 训练数据集price为连续型目标列test.csv—— 测试数据集目标是对每一行预测pricesample_submission.csv—— 正确格式的示例提交文件。四、仓库侧落地该任务在 RD-Agent 数据科学管线中的完整链路上面的任务规格并非孤立的文档它在仓库中以一个约定目录结构落地并被数据科学管线逐级消费。本节按目录约定 → 数据切分 → 场景解析 → 调试采样 → 评分校验 → 启动命令的顺序展开。4.1 目录约定example 下的标准布局example 目录 README 规定了自定义竞赛数据的目录结构playground-series-s4e9 是其中的完整范例source_data/task_name/prepare.py必需数据预处理脚本把原始数据切分为训练数据、测试数据、格式化提交文件与标准答案文件task_name/description.md必需任务详细描述需包含 Task Description、Goal、Evaluation、Data Description、Submission Format 等章节——本文开头的 description.md 即属于此类task_name/sample.py可选用于调试目的的数据采样脚本不提供时RD-Agent 会走默认采样逻辑见 4.4 节eval/task_name/grade.py与valid.py可选分别用于在测试集上计算任务得分、校验生成的submission.csv的有效性如果不在意测试集得分可以不创建eval目录。4.2 prepare.py从原始数据到公开/私有切分prepare.py 的prepare(raw, public, private)函数完成了四件事读取raw/train.csv用train_test_split(test_size0.1, random_state0)切出new_train与new_test生成public/sample_submission.csvprice恒为 43878.016 的占位提交文件把带标签的new_test写入private/submission_test.csv即本地标准答案供 grade.py 评分向public/输出train.csv与去掉price列后的test.csvAgent 可见的数据。脚本末尾有三条断言保证切分正确性公开测试集必须为 12 列、公开训练集必须为 13 列12 个特征列 price、两个新切分行数之和等于原始训练集行数。__main__入口按 README 约定的相对位置把产物分别写回task_name/public与eval/task_name/private目录。4.3 description.md 如何被场景类消费DataScienceScen 是数据科学任务的场景入口description.md在其中承担三重角色加载_get_description()优先读取{local_data_path}/{competition}/description.md的原文文本scen/init.py#L76-L79因此本文引用的这份描述文件会被 LLM 原样看到结构化解析_analysis_competition_description()用提示词模板把原始描述 数据目录描述喂给 LLM以 JSON 模式抽取任务类型、数据类型、简要描述、数据集描述、提交规范、每个样本的输出通道数、指标描述、指标名称与**指标方向越大越好/越小越好**等字段scen/init.py#L92-L139。对于本任务这一步会把RMSE、数值越低越好等信息显式化供后续假设生成与实验反馈使用场景描述拼装get_scenario_all_desc()将解析结果与调试/全量数据超时、推荐超时、运行时环境信息一起拼进.prompts.yaml中的scenario_description模板作为整个研发循环假设生成 → 编码 → 调试运行 → 反馈的上下文底座scen/init.py#L220-L244。也就是说description.md 中RMSE 公式、提交格式、数据说明这些看似静态的竞赛文本实际上是驱动 Agent 理解任务并持续迭代的动态输入。4.4 调试数据采样sample.py 与默认采样器由于 Agent 需要多轮编码 → 运行 → 反馈的调试循环直接在全量数据上运行代价过高。管线采用调试数据 全量数据双轨制若任务目录下提供了sample.pyDataScienceScen 初始化 会直接runpy执行它通过dataset_path/output_path全局变量约定输入输出否则调用 create_debug_data默认参数为min_frac0.01, min_num5即采样比例不低于 1% 且行数不低于 5 行。对于 playground-series-s4e9 这类表格回归任务map_competition()没有为其注册专属采样器见 debug/data.py#L592-L602因此回退到默认组合UniqueIDDataReducer DefaultSampler。从源码结构看RandDataReducer.reduce()以max(min_frac, min_num/len(df))作为实际采样比例并用固定random_state1做行采样debug/data.py#L105-L116保证调试样本可复现。默认采样器还会识别id列并连带拷贝被引用文件如图像类任务中的样本文件对纯 CSV 任务则主要完成缩小到可用规模的工作。配套的超时参数在 conf.py 中定义debug_timeout600秒、full_timeout3600秒且场景类支持按失败次数阶梯式上调超时coder_timeout_increase_stage、runner_timeout_increase_stage_patience等。4.5 eval 链路grade.py 与 valid.py 的协作配置项eval_sub_dir默认为eval管线会用{local_data_path}/eval/{competition}下的脚本在测试集上评估提交conf.py#L90-L93。对应到本任务valid.py先断言submission.csv存在再逐行读取它与submission_test.csv校验两者行数一致不一致时打印两侧行数并抛出AssertionError。这是对提交格式可用性的第一道闸门grade.py在__main__中读取submission.csv与submission_test.csv调用grade()计算 RMSE再与排行榜奖牌阈值比较输出包含competition_id、score、gold/silver/bronze_threshold、any_medal、gold/silver/bronze_medal、above_median、submission_exists、valid_submission、submission_path、created_at等字段的 JSONgrade.py#L47-L87。源码注释说明若不需要完整输出最小只需提供competition_id与score两个字段完整汇总可通过rdagent grade_summary --log-folder在程序结束时生成。4.6 启动方式一条命令跑通整个研发循环数据科学循环的入口是 rdagent/app/data_science/loop.py 的main()其 docstring 给出了推荐用法# 推荐命令形式以另一场 playground 竞赛为例 rdagent kaggle --competition playground-series-s4e8 # 等价地也可直接调用 loop 入口脚本并恢复某个历史会话 dotenv run -- python rdagent/app/data_science/loop.py [--competition ...] $LOG_PATH/__session__/1/0_propose --step_n 1对本任务即把 competition 参数指定为playground-series-s4e9。main()的关键参数path形如$LOG_PATH/__session__/1/0_propose的会话路径用于从指定步骤恢复运行checkout/checkout_path控制日志会话目录的复用与落盘位置step_n/loop_n限制运行的步数/轮数任一满足即停止默认无限运行直到报错或中断timeout整个循环的最大时长。进入main()后competition 被写入DS_RD_SETTING.competitionloop.py#L64-L79随后实例化DataScienceRDLoop并异步执行。所有行为参数场景类、假设生成器、调试/全量超时、多 trace 调度、评测子目录等均由 DataScienceBasePropSetting 管理且全部支持以DS_为前缀的环境变量覆盖例如DS_local_data_path指向存放playground-series-s4e9/、eval/等目录的数据根路径。五、要点回顾playground-series-s4e9 是一场以 RMSE 为指标、要求按id,price格式提交预测的二手车价格回归竞赛其 description.md 完整覆盖了目标、评测、时间线、合成数据背景、奖项与文件说明仓库通过 prepare.py 把原始数据切分为 Agent 可见的train.csv/test.csv/sample_submission.csv与本地答案submission_test.csv并用列数断言守住数据契约grade.py 与 valid.py 共同构成格式校验 RMSE 评分 奖牌线对照的评测闭环评分结果以 JSON 输出供grade_summary汇总DataScienceScen 会把 description.md 原文连同数据目录描述一起交给 LLM 解析为结构化任务画像再由create_debug_data/sample.py生成小规模调试数据最终通过rdagent kaggle --competition playground-series-s4e9之类的命令驱动假设生成、编码、调试运行与反馈的自动研发循环。掌握以上内容后你可以照葫芦画瓢为任意新的竞赛任务准备description.md、prepare.py与eval/脚本并复用 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),仅供参考