交预测文件还是交代码?Kaggle 两种提交形态与 Code Competition 备赛差异(2026)

要看比赛属于哪一种。Kaggle 的提交存在两种形态:一种是自己算好结果、上传预测文件;另一种必须提交 Notebook(代码),由平台在隐藏测试集上重新运行才算成绩。后者被称为 Code Competition,它把工程约束变成了评分的一部分——这也是很多学生「模型早就做好了,却始终提交失败」的真正原因。

一、两种提交形态到底差在哪

两种提交形态流程对比:形态一自己训练并生成预测文件后上传评分;形态二提交 Notebook 由平台在隐藏测试集上重跑,重跑成功才有分数
两种提交形态的流程差异(结构性描述;具体形态与约束以该赛官方页面为准)

最关键的一句话在图的右下角:形态二里「代码能不能在平台上跑完」本身就是及格线。模型再好,如果重跑失败,这次提交等于不存在。这与形态一的失败模式完全不同——形态一提交的是已经算好的结果,只要文件格式正确且在该赛的提交次数与截止时间之内,通常就能得到分数(提交次数上限与截止时间以该赛页面为准)。

为什么会有形态二?按我们的理解,它的一个作用是压缩这类空间:如果只交结果文件,参赛者理论上有办法从测试数据本身反推信息(主办方的具体设计说明以 kaggle.com 该比赛页面为准)。要求提交代码并由平台在隐藏数据上重跑,就把「你的方法在没见过的数据上有效」变成了硬性要求。这个设计对学生是好事——它逼出的正是可迁移的能力。如果对平台结构还不熟悉,可以先读这份 Kaggle 入门指南

二、这个区别怎么改变备赛方式

维度 上传预测文件 提交 Notebook(Code Competition)
交付物 一份预测结果文件 一个能独立跑完的代码文件
算力在哪里用 自己的电脑或任意云端环境 推理必须在平台给的运行环境里完成
典型失败模式 文件列名或格式不符 超时、依赖装不上、路径失效、重跑报错
额外需要的能力 基本没有 环境管理、离线依赖打包、代码健壮性
家长能看到的现象 孩子说「分数出来了」 孩子说「模型好了但交不上去」
该提前多久试提交 做完模型再交也来得及 第一周就必须先跑通一次提交
两种形态对备赛的实际影响(编辑部整理;具体规则以该赛 Rules 与 Code Requirements 为准)

表格最后一行是本文最想让家长记住的一条。在 Code Competition 里,「第一次成功提交」必须被当成第一周的任务,而不是最后一周的收尾动作。因为它检验的不是模型质量,而是整条管线能不能在平台环境里走通——而这件事平均会消耗掉学生远超预期的时间。

三、Code Competition 的四类约束

Code Competition 的四类约束:运行时限、联网权限、外部数据与预训练权重、输出文件格式;自查顺序是先让最简单的模型成功提交
四类约束与自查顺序(约束类别为结构性描述,具体数值一律以该赛官方页面为准)

这四类约束里,最容易被低估的是约束二。学生习惯于在有网络的环境里随时安装缺少的软件包、随时下载模型权重;一旦重跑环境禁用网络,这些动作全部失效,需要提前把依赖和权重按平台允许的方式准备好。这是纯工程问题,与机器学习无关,但它足以让一次提交彻底作废。

常见的应对思路是把训练与推理拆开:训练在别处完成,把训练好的结果按平台允许的方式带进 Notebook,提交的 Notebook 只做推理。这样既能绕开时间上限,也能避开对网络的依赖。是否允许这样做、以及具体怎么做,请查该赛的 Code Requirements 页面。

四、学生最常翻车的五个点

  • 最后一天才第一次尝试提交。按我们的带教经验,这是最常见的一条,也是最容易靠排期避免的一条。
  • 把文件路径写死。本地能跑,重跑环境里路径不存在,直接报错。
  • 忽略隐藏测试集与示例数据规模不同。示例数据很小,重跑时的数据量可能大得多——本地几分钟跑完的代码,重跑时超时。
  • 依赖临时联网安装。见上文约束二。
  • 输出文件名或列名不符。本质上和形态一的格式错误是同一类问题,但在 Code Competition 里更难发现,因为你看不到重跑时发生了什么。

这五条的共同点值得点出来:没有一条是「模型不够好」。它们全部属于工程与流程,也全部可以通过一个动作预防——在赛期第一周,先用一个最简单的模型完整走通一次成功提交。我们在带教里把这一步称为「打通管线」,它的优先级高于任何调优。

五、家长视角:怎么看这段时间的投入

如果孩子在打一场 Code Competition,家长会观察到一个反直觉的现象:有一两周的时间,孩子看起来「什么都没做出来」——分数没有涨,甚至榜上还没有成绩。这段时间很可能正是在解决提交管线的问题。

此时值得问的不是「分数多少」,而是这两个问题:「你成功提交过一次了吗?」以及「这场比赛的四类约束你确认过了吗?」前者确认管线是否打通,后者确认他有没有真的去读规则页。这两个问题都不需要懂技术就能问,也比追问分数更能反映真实进度。

需要说明的是,本文给出的是流程与排期上的方法建议,属于我们的教学经验判断,不是平台规则,也不构成对名次或奖牌的任何保证。平台注册免费、中国学生可以直接注册参赛;提交形态、运行约束、违规后果等具体条款,一律以 kaggle.com 该比赛的 Rules 与 Code Requirements 页面为准,也可先参考这份 平台入门指南了解整体结构。

常见问题

Q:怎么知道一场比赛属于哪种提交形态?
看该比赛页面本身:提交方式与代码要求写在 Rules 以及 Code Requirements 一类的说明里,比赛页也会标明是否要求通过 Notebook 提交。这件事应该在决定参赛之前就确认,因为它直接影响备赛计划——如果是 Code Competition,第一周的任务就变成打通提交管线,而不是做模型。具体信息以 kaggle.com 该比赛页面为准。

Q:Code Competition 的运行时限和联网规定具体是多少?
这类数值逐赛不同,而且会随赛季调整,我们不在文章里给具体值——写死反而会误导。请直接查该比赛的 Code Requirements 页面,那里会写明整本 Notebook 的运行上限、重跑时是否允许联网、以及允许使用哪些外部数据与预训练权重。这一页应该在报名后第一时间读完。

Q:孩子说模型做好了但提交失败,是不是水平不行?
通常不是。Code Competition 的失败绝大多数出在工程环节:路径写死、依赖需要联网安装、隐藏测试集数据量比示例大导致超时、输出列名不符。这些都与模型质量无关。有效的做法是回到第一步,用一个最简单的模型先跑通一次成功提交,确认管线没问题,再把真正的模型接进去。

Q:为什么有的比赛非要看代码,不能只交结果?
因为只交结果文件时,参赛者存在从测试数据反推信息的空间。要求提交代码、并由平台在参赛者看不到的隐藏数据上重新运行,就把「方法在没见过的数据上依然有效」变成了硬性条件。对学生来说这反而是好事:它逼出的正是可迁移的能力,而不是针对某份特定数据的技巧。

本文由 Kaggle 中文指南编辑部发布,由翰林教育运营,面向中国国际学校学生与家长。本站独立运营,不代表 Kaggle 或任何赛事主办方;注册与参赛均在 kaggle.com 完成。提交形态、运行时限、联网与外部数据规定、违规后果等规则由主办方制定且每年可能调整,具体信息请以 kaggle.com 该比赛的 Rules 与 Code Requirements 页面为准。我们提供方法层面的教学与带教,不对名次、奖牌或段位做任何保证。如发现内容有误,我们将在 7 个工作日内更正。