ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

RD-Agent Kaggle 模板示例数据加载模块详解:load_data.py 的接口契约、数据格式与工作流定位

RD-Agent Kaggle 模板示例数据加载模块详解:load_data.py 的接口契约、数据格式与工作流定位 RD-Agent Kaggle 模板示例数据加载模块详解load_data.py 的接口契约、数据格式与工作流定位【免费下载链接】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 场景模板示例aerial-cactus-identification中的 spec/data_loader.md 数据加载规范展开结合仓库中可运行的 load_data.py 实现与 main.py 工作流完整讲清从原始文件加载数据并返回训练图像、训练标签、测试图像与测试 ID 四元组这一接口契约的设计与落地细节。读完后你将掌握 LLM 生成的 Kaggle 项目中数据加载层的标准接口形态、Kaggle 数据目录约定以及数据加载输出如何贯穿特征工程、模型训练直到 submission.csv 的生成。一、模板示例背景数据加载规范定义了什么RD-Agent 的 Kaggle 场景目录下保留了完整的模板示例工程tpl_ex/aerial-cactus-identification其 README.md 开篇即说明了示例的定位We use a runnable concrete example to demonstrate what the project should be like after being generated by a large language model.也就是说这是一个可运行的具体示例用来展示项目被大语言模型生成之后应该长什么样。README 同时注明README.md本身不是 LLM 生成的而其余内容spec 文档与全部 Python 代码均由 LLM 生成。因此该示例的价值不仅在于代码本身更在于它完整演示了规范文档 → 可运行模块的生成链路。其中spec/data_loader.md 就是数据加载模块的规范文档全文只有两条硬性要求Data LoadingImplement a function to load data from raw files.The function should return training images, training labels, test images, and test IDs.这两条要求看似简短实则定义了 LLM 生成代码必须遵守的接口契约一个从原始文件加载数据的函数且返回值必须同时包含训练图像、训练标签、测试图像和测试 ID。规范目录 spec/ 下共有 5 个文件data_loader.md、ensemble.md、feature.md、model.md、workflow.md分别对应工程中的五个组成部分。数据加载是其中的第一环。按照 spec/workflow.md 对整体工程结构的定义一个 Kaggle 竞赛项目应组织为以下五个组件Data Loadingload_data.py负责加载与预处理原始数据Feature Engineeringfeat*.py把原始数据变换为适合模型训练的特征Model Workflowmodel*.py管理模型的训练、验证与测试Ensemble and Decision Makingensemble.py组合多个模型的预测并做最终决策Workflowmain.py把上述组件串起来产出最终提交文件submission.csv。数据加载层处于整条流水线最上游它的输出形态直接决定了下游所有模块能否正确消费数据。二、接口契约返回 (X, y, X_test, test_ids) 四元组规范文档要求返回训练图像、训练标签、测试图像、测试 ID在 load_data.py 中这一契约被落实为一个显式的类型签名见 load_data 函数def load_data() - tuple[np.ndarray, np.ndarray, np.ndarray, list[str]]:四个返回值各有明确语义源码 docstring 中给出了具体的数据形态示例返回值类型语义docstring 中的具体示例Xnp.ndarray训练图像array([[[[207, 194, 203], ..., [181, 173, 152]]]], dtypeuint8)即 uint8 类型的图像数组ynp.ndarray训练标签array([1, 0, 1, 0, 1, 1, ..., ])即 0/1 二分类标签X_testnp.ndarray测试图像形态与X相同test_idslist[str]测试图像的文件名 ID如[1398ad045aa57aee5f38e7661e9d49e8.jpg, ...]用于生成 submission 文件这里有一个值得注意的设计细节test_ids被单独保留且 docstring 明确写道 it is used to generate the submission file。这是因为竞赛提交文件必须携带每行预测结果对应的样本 ID如果数据加载阶段就把 ID 丢掉后续就无法正确生成提交文件。这个约定后来会在main.py的收尾阶段兑现见第四节。关于规范文档本身的质量要求meta/spec.md 给出了生成合格规范的判定标准其中要求description字段fully describe the data, including dimension (number, meaning, example)即规范必须完整描述数据的维度数量、每个维度的含义以及具体示例。load_data.py 的 docstring 正是这一标准的直接体现——它不仅声明了类型还为每个返回值附上了可感知的数据样例uint8 像素数组、0/1 标签数组、文件名列表使下游模块的开发者或 LLM无需运行代码就能理解接口。三、load_data.py 完整源码解析下面给出 load_data.py 的完整实现全文 82 行随后逐函数解析 Load competition data to uniform format import os import numpy as np import pandas as pd from PIL import Image def load_test_images(folder): images [] filenames [] for filename in os.listdir(folder): img Image.open(os.path.join(folder, filename)) if img is not None: images.append(np.array(img)) filenames.append(filename) return np.array(images), filenames def load_images_and_labels(csv_file, image_folder): images [] labels [] df pd.read_csv(csv_file) for idx, row in df.iterrows(): img Image.open(os.path.join(image_folder, row[id])) if img is not None: images.append(np.array(img)) labels.append(row[has_cactus]) return np.array(images), np.array(labels) def load_data() - tuple[np.ndarray, np.ndarray, np.ndarray, list[str]]: load raw data from disk to get data in uniform data Return: X: np.array ...docstring 示例见上文表格... y: np.array ... X_test: np.array ... test_ids: the id representing the image. it is used to generate the submission file ... X, y load_images_and_labels(/kaggle/input/train.csv, /kaggle/input/train/) test_folder /kaggle/input/test/ X_test, test_filenames load_test_images(test_folder) # Store filenames separately test_ids [os.path.basename(filename).replace(.tif, ) for filename in test_filenames] return X, y, X_test, test_ids该文件由三个函数构成职责分层清晰1.load_images_and_labelsL23-L32——训练数据加载它假定训练数据由两部分组成一份标注 CSVtrain.csv和一个图像目录train/。函数用pd.read_csv读取标注表后逐行迭代以row[id]为键到图像目录中打开对应图片PIL.Image.open转成np.array后收集标签则取自 CSV 的has_cactus列。由此可确认该示例任务的标签列名与数据结构一个二分类任务标签为 0/1。这种CSV 提供 id-标签映射、目录提供像素数据的组织方式是典型的 Kaggle 图像竞赛形态。2.load_test_imagesL12-L20——测试数据加载测试集没有标签文件函数直接遍历os.listdir(folder)读取整个测试图像目录返回(images, filenames)二元组。注意它把文件名单独返回而不是丢弃——这是为test_ids服务的。3.load_dataL35-L82——对外统一入口它把前两个函数组装成规范要求的四元组并体现了两点关键约定Kaggle 数据目录约定数据路径硬编码为/kaggle/input/train.csv、/kaggle/input/train/、/kaggle/input/test/。这是 Kaggle Notebook 环境的挂载路径约定意味着该示例的运行前提是数据已按此结构挂载。test_ids 的派生方式test_ids [os.path.basename(filename).replace(.tif, ) for filename in test_filenames]L81。即测试 ID 由文件名去掉.tif扩展名得到。从源码结构看这与 docstring 中.jpg命名的示例属于示意形态不同但规则一致规则始终是文件名去掉扩展名具体扩展名随数据集而定。三个函数共同完成规范文档第一条要求从原始文件加载数据load_data的四元组返回值则完整兑现了第二条要求。四、数据加载输出如何接入完整工作流数据加载层的价值只有在下游被正确消费时才成立。main.py 展示了load_data()四元组在整个工作流中的流动路径全文见 main.pyfrom load_data import load_data from sklearn.model_selection import train_test_split # Load data train_images, train_labels, test_images, test_ids load_data() # feature engineering from feature import feat_eng train_images, train_lables, train_param feat_eng(train_images, train_labels, train_images, train_labels) test_images, _, _ feat_eng(test_images, paramtrain_param) # (Cross) Validation train_images, validation_images, train_labels, validation_labels train_test_split( train_images, train_labels, test_size0.1, random_state42 ) # Model workflow from model01 import model_workflow val_pred, test_pred, _ model_workflow(train_images, train_labels, validation_images, validation_labels, test_images) # Ensemble from ensemble import ensemble_workflow pred_binary ensemble_workflow([test_pred], [val_pred], validation_labels) # Save with open(submission.csv, w) as csv_file: csv_file.write(id,has_cactus\n) for tid, prediction in zip(test_ids, pred_binary): csv_file.write(f{tid},{prediction}\n)从中可以读出数据加载契约的三条下游依赖1四元组的解包顺序是下游模块的隐式约定。main.py第一行实质操作就是train_images, train_labels, test_images, test_ids load_data()。由于load_data返回的是裸元组而非字典第 1 个是训练图像、第 4 个是测试 ID这一顺序就是接口契约的一部分任何改动都会破坏main.py、feature.py等下游调用。2X / X_test 同形态是特征工程 fit/apply 模式的前提。feature.py 中的feat_eng遵循在训练集上拟合参数、用参数变换测试集的契约训练侧调用feat_eng(X, y, X_fit, y_fit)得到fitted_param测试侧调用feat_eng(X_test, paramfitted_param)复用参数。这一模式要求训练与测试数据在类型、维度上完全对齐——而这正是数据加载层把两类数据统一为np.ndarray图像数组所保证的。该契约同样由 spec/feature.md 的函数签名定义。3test_ids 是 submission.csv 生成的关键。流程收尾处test_ids与二分类预测pred_binary通过zip配对写入submission.csv表头为id,has_cactus。也就是说数据加载阶段单独保留文件名# Store filenames separately的设计在这里转化为提交文件正确性的直接保障。这也与 spec/workflow.md 中提交文件必须符合竞赛格式的总要求相呼应。此外train_test_split以test_size0.1, random_state42从训练四元组中切出验证集再进入model_workflow与ensemble_workflow后者会用验证集 AUROC 记录各模型分数并做加权融合见 ensemble.py。可见数据加载层是整个加载 → 特征 → 切分 → 训练 → 融合 → 提交链条的起点与数据基础。五、设计启示为什么数据加载与规范文档绑定生成README.md 中 Step0Specification generation把生成规范文档与生成 load_data.py并列为同一产出步骤并给出了合并原因Why do we merge this step together.Successfully runload_data.pyis a kind of verification ofspec.md这一句点出了数据加载模块在 LLM 生成流程中的特殊地位它是整条流水线中第一个可执行验证点。特征工程、模型训练、融合决策的规范都只是文本约定而load_data.py可以直接运行——若真实数据目录下能成功读出四元组说明规范文档对数据结构CSV 列名、目录组织、图像格式的描述是成立的。换言之数据加载规范的正确性不靠评审而靠一次真实运行来判定。这对基于 LLM 的代码生成流程是一个务实的工程经验优先选择可执行、可快速反馈的模块作为首个验证锚点。同时spec/workflow.md 的 General Guidelines 对全部模块数据加载层在内提出了通用要求所有模块与函数必须有完整文档对应load_data.py中详尽的 docstring 与逐参数说明遵循一致的命名规范与代码风格如load_images_and_labels/load_test_images的动词短语命名函数签名使用类型注解以提升可读性与可维护性tuple[np.ndarray, np.ndarray, np.ndarray, list[str]]即为直接体现。从源码结构看这些要求在该示例中得到了逐条落实说明规范文档与生成代码之间是契约-实现关系而非互相独立的产物。六、相关文件索引文件作用spec/data_loader.md数据加载模块规范本文主题文档spec/workflow.md五组件工程结构、提交与通用规范spec/feature.md特征工程函数签名契约meta/spec.md规范文档的生成标准与示例load_data.py数据加载模块完整实现feature.py特征工程实现恒等变换示例model01.py模型训练工作流ensemble.py融合与最终决策main.py串联全链路并生成 submission.csvREADME.md示例动机与 LLM 生成工作流说明综上RD-Agent Kaggle 模板示例中的数据加载层以两条极简规范为契约落地为一个类型显式、docstring 完备的load_data.py它以四元组(X, y, X_test, test_ids)向下游交付统一格式的数据既承接了 Kaggle 数据目录的挂载约定又通过可执行验证规范的角色成为 LLM 生成流程的第一个质量锚点。理解这一模块是读懂该模板示例乃至 RD-Agent Kaggle 场景生成范式的起点。【免费下载链接】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),仅供参考
返回列表