以 Wine Recognition 数据集为例:AI 论文实验部分怎么设计与撰写
为什么用 Wine Recognition 讲实验部分
很多 AI 论文或课程报告的实验部分容易写成“放一张指标表,然后说方法有效”。这种写法最大的问题不是指标少,而是没有形成完整论证:数据从哪里来、任务怎么定义、为什么选这些对比方法、评价指标各自说明什么、消融实验验证了哪个设计、图表背后能得出什么结论。
本文选用 UCI Machine Learning Repository 的 Wine Recognition 数据集作为示例,围绕一个真实可运行的多分类实验,拆解 AI 类论文实验部分的设计和写法。该数据集包含 178 条葡萄酒化学分析样本、13 个连续化学检测特征和 3 个葡萄酒类别。任务不是识别葡萄酒图片,而是根据酒精、苹果酸、灰分、黄酮类、颜色强度、脯氨酸等数值特征预测葡萄酒所属类别。
本科毕业论文、课程设计报告和研一小论文常见的难点,不是模型数量不够,而是实验结果没有被组织成可信证据。一次机器学习实验能否支撑论文结论,取决于数据是否合适、比较是否公平、指标是否能回答研究问题、图表是否解释了模型行为,以及局限是否写得克制。
下图只用于帮助读者理解“葡萄酒样本识别”的实验语境;代码实际处理的是结构化化学特征。
数据来源可以在论文实验部分这样交代:
本文采用 UCI Machine Learning Repository 提供的 Wine Recognition 数据集进行实验。该数据集包含 178 个葡萄酒样本,每个样本由 13 个连续化学分析特征表示,类别标签对应 3 类葡萄酒品种。实验采用分层训练测试划分,以保持训练集与测试集中的类别比例一致。
数据来源:
- UCI Wine Recognition 数据集:https://archive.ics.uci.edu/dataset/109/wine
- 原始数据下载:https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data
- 场景图来源:Wikimedia Commons,Wine sampling.jpg,https://commons.wikimedia.org/wiki/File:Wine_sampling.jpg
实验部分先想清楚什么
写实验部分之前,建议先把实验设计拆成六个问题:
- 研究任务是什么:输入是什么,输出是什么,模型解决什么问题。
- 数据集是否可信:来源、样本量、特征、类别、划分方式是否写清楚。
- 主指标是什么:为什么用 Macro-F1、Accuracy、AUC 或其他指标。
- 对比对象是谁:baseline、传统模型、主流模型和本文方法是否公平比较。
- 消融变量是什么:每次只改变一个组件或参数,才能说明贡献来源。
- 图表证明什么:混淆矩阵、ROC/PR 曲线、指标热力图分别支持哪段分析。
如果这六个问题没有回答,实验章节就会变成结果罗列;如果每个问题都有对应证据,实验部分就能形成“数据说明-指标定义-对比实验-消融实验-误差分析-结论讨论”的闭环。
初学者可以把实验部分理解成答辩现场的一组证据材料。老师或审稿人真正关心的不是你有没有跑代码,而是这些结果是否可靠、对比是否公平、结论是否从数据里推出来。也就是说,实验部分不是“展示成果”的地方,而是“证明结论”的地方。
更进一步说,实验部分需要建立一条清晰的因果链:
数据特点 -> 实验设置 -> 评价指标 -> 对比结果 -> 消融结果 -> 误差解释 -> 结论边界例如 Wine Recognition 是小规模结构化多分类数据,因此实验设置中需要固定随机种子和分层划分;由于类别数量不完全均衡,评价时不能只看 Accuracy,还要关注 Macro-F1;由于 SVM 依赖特征尺度和距离度量,消融实验中就应单独验证 StandardScaler、核函数和正则化强度的影响。这样写出来的实验部分不是“跑了哪些模型”,而是“为什么这些实验能回答研究问题”。
这也是本科论文和研究生论文的关键差别之一。本科论文可以重点写清楚实验流程和结果是否可信;研究生论文还要进一步说明方法贡献来自哪里、对比是否足够公平、结论在哪些条件下成立。即使使用同一份 Wine 数据集,后者也要写出更多方法分析,而不是只增加几张图。
本项目的代码流程也按这个逻辑组织。配置文件确定数据源和随机种子,数据模块完成下载与分层划分,实验模块训练多类模型并计算指标,绘图模块输出论文图表,最后由报告模块整理出实验章节初稿。
实际写作顺序可以概括为下图:先把数据和任务讲明白,再说明实验设置,然后给出对比结果、消融结果和误差分析,最后写出结论与局限。
先建立证据链,再写段落
本科生和研一同学写实验部分时,不建议一上来就对着图表写长段分析。更稳的顺序是先建立证据链,再把证据整理成段落:
- 先列出实验章节的小标题,例如“数据集”“实验设置”“评价指标”“对比实验”“消融实验”“可视化分析”。
- 每个小标题后先写一句“本节要证明什么”。
- 再把代码结果填进去,包括样本数量、指标表、图表和错误样本。
- 最后把“结果说明了什么”补在每张表和每张图后面。
一个可操作的四句写法是:
任务句:本文在什么数据和什么任务上做实验。
设置句:实验如何划分数据、选择模型和计算指标。
结果句:主要模型取得了什么数值结果。
解释句:这些结果说明了什么,仍然有什么限制。
例如,看到Accuracy=0.9815和Macro-F1=0.9829时,不要只写“模型效果较好”。更好的写法是:
LR_Baseline 在测试集上取得 0.9815 的 Accuracy 和 0.9829 的 Macro-F1,说明模型不仅整体预测正确率较高,而且在三个类别上保持了较均衡的识别效果。考虑到 Wine 数据集样本规模较小,该结果仍需结合交叉验证结果和混淆矩阵进一步确认其稳定性。
这段话比“效果较好”多了三层信息:指标是什么、指标说明什么、结论边界在哪里。论文实验部分的深度,往往就体现在这些限定和解释上。
写作时还要区分“实验事实”和“作者判断”。Macro-F1=0.9829是实验事实,“模型具有较好的类别均衡识别能力”是基于事实的判断,“该方法适用于所有葡萄酒识别场景”则是过度外推。初学者常把这三者混在一起,导致结论显得夸张。比较稳的写法是先报事实,再给判断,最后补限定条件。
数据集与任务定义:让读者知道模型在解决什么
实验部分的第一段不要急着说模型效果,而要先回答“模型到底在什么数据上做什么”。以 Wine Recognition 为例,X是 13 维化学检测特征,y是 3 类葡萄酒标签。这个任务属于典型多分类问题,因此后续指标和图表都要围绕多分类评估展开。
数据集介绍建议至少包含四类信息:
| 要素 | 需要写清楚的内容 | Wine Recognition 示例 |
|---|---|---|
| 数据来源 | 数据集来自哪里,是否为公开数据 | UCI Machine Learning Repository |
| 数据规模 | 样本数量、特征数量、类别数量 | 178 个样本、13 个特征、3 个类别 |
| 任务定义 | 输入、输出和学习目标 | 输入化学检测特征,输出葡萄酒类别 |
| 划分方式 | 训练集、测试集和类别比例控制方式 | 70% 训练、30% 测试、分层划分 |
这里要避免一句话带过“本文使用 Wine 数据集进行实验”。这种写法对读者帮助不大,因为读者不知道这个数据集为什么适合当前任务,也不知道实验规模是否足以支撑后文结论。更好的写法是把数据特点和任务联系起来:Wine 数据集虽然规模不大,但特征都是连续数值,适合演示传统机器学习模型、多分类指标、标准化影响和消融分析。
项目运行后得到的数据类别分布如下。三类样本分别为 59、71、48,占比并不完全相同,因此只看 Accuracy 容易掩盖不同类别上的表现差异。
| 类别 | 样本数 | 占比 |
|---|---|---|
| 葡萄酒类别一 | 59 | 33.15% |
| 葡萄酒类别二 | 71 | 39.89% |
| 葡萄酒类别三 | 48 | 26.97% |
论文里可以这样写:
Wine Recognition 数据集共包含 178 个样本,其中类别一、类别二和类别三的样本数分别为 59、71 和 48。考虑到类别分布存在一定差异,本文除 Accuracy 外进一步采用 Macro-F1 作为主指标,以避免多数类别对整体结果产生过强影响。
这一段的关键不是把数据集介绍得很长,而是把后文需要用到的信息提前铺好:数据规模、特征形式、类别数量、类别分布和划分策略。
如果是毕业论文,还可以再补一句数据预处理:
实验前对连续特征进行标准化处理,使不同量纲的化学指标处于可比较范围内,从而降低特征尺度差异对距离度量模型的影响。
注意,这句话要和实际代码一致。没有做标准化就不要写;只对某些模型做了标准化,也要说明标准化出现在对应模型的训练流水线中。实验部分最怕“看起来专业但和代码不一致”的句子。
还要特别注意数据泄漏。标准化、特征选择、参数调优都应该只利用训练集信息,再应用到测试集。如果先对全量数据做标准化或特征选择,再划分训练集和测试集,测试集信息就已经提前进入训练流程,指标会被高估。论文里不一定要展开实现细节,但实验设置必须能让读者相信测试集是“没见过的数据”。
对于 Wine Recognition 这种小数据集,最好不要只依赖一次训练测试划分。本文示例保留固定测试集结果,同时报告交叉验证 Macro-F1,就是为了降低单次划分偶然性。正式论文可以进一步补充多随机种子实验或均值方差,这会比单个最高分更有说服力。
实验设置:让结果具备可复现性
实验设置至少要包含训练测试划分、随机种子、评价指标和对比方法。本示例采用 70% 训练集、30% 测试集的分层划分,本轮运行得到 124 条训练样本和 54 条测试样本。所有模型使用同一划分和同一评价指标,保证横向比较有意义。
很多初学者会把实验设置写得过粗,例如“本文使用若干机器学习模型进行对比”。这种句子不能支持复现。更好的实验设置应该回答:
- 训练集和测试集怎么划分,是否使用分层划分。
- 随机种子是否固定,是否保证不同模型使用同一份数据划分。
- 对比模型有哪些,它们分别扮演 baseline、comparison 还是 proposed 的角色。
- 主要评价指标是什么,辅助指标是什么。
- 哪些参数保持默认,哪些参数是本文重点讨论的变量。
实验设置可以写成这种段落:
为保证实验对比的公平性,所有模型均采用相同的训练测试划分和随机种子。数据集按 7:3 比例划分为训练集和测试集,并使用分层策略保持各类别比例一致。本文选取 Logistic Regression 作为基础模型,Random Forest、GBDT 和 MLP 作为对比模型,RBF-SVM 作为重点分析模型,统一采用 Accuracy、Macro-F1、ROC-AUC 等指标进行评价。
基础运行命令如下:
pipinstall-rrequirements.txt python main.py如果只想快速演示,也可以限制样本数量:
python main.py--samples120完整运行后会输出这些与论文实验部分直接相关的产物:
outputs/ ├── comparison_metrics.csv ├── ablation_metrics.csv ├── dataset_summary.csv ├── paper_experiment_section.md ├── tables/ ├── predictions/ └── classification_reports/ images/ ├── figures/ └── results/ weights/ └── best_model.joblib论文中不需要把所有配置文件逐项贴出来,但关键实验记录要能复现。以本示例为例,至少应保留以下信息:
| 配置项 | 当前示例 | 写作作用 |
|---|---|---|
| 数据集 | UCI Wine Recognition | 说明数据来源和任务背景 |
| 划分比例 | 70% 训练集、30% 测试集 | 说明训练和最终评估边界 |
| 划分方式 | 分层划分 | 保持训练集和测试集类别比例一致 |
| 随机种子 | 42 | 便于复现实验结果 |
| 交叉验证 | 3 折 | 辅助观察模型稳定性 |
| 主指标 | Macro-F1 | 避免多数类主导整体结论 |
这些信息可以放在“实验设置”小节中,也可以整理成表格。对于本科论文,写清这些基础设置往往比堆更多模型更重要;对于研究生论文,这些设置是后续公平比较和方法归因的前提。
评价指标建议写成“指标作用说明”,而不是堆概念。例如:
本文采用 Accuracy、Macro-Precision、Macro-Recall、Macro-F1、ROC-AUC 和 Average Precision 评价模型性能。其中 Accuracy 用于衡量整体预测正确率;Macro-F1 先分别计算每个类别的 F1 值再进行平均,更能反映类别不均衡情况下的综合识别能力;ROC-AUC 和 PR 曲线用于观察概率输出在不同阈值下的稳定性。
这类写法能让读者知道每个指标为什么存在,也能解释为什么最终结论不只看 Accuracy。
指标选择可以按“主指标 + 辅助指标 + 诊断指标”的方式组织:
| 指标角色 | 典型指标 | 在论文中回答的问题 |
|---|---|---|
| 主指标 | Macro-F1 | 模型是否在各类别上保持均衡表现 |
| 整体指标 | Accuracy、Weighted-F1 | 整体预测效果是否足够高 |
| 概率指标 | ROC-AUC、Average Precision | 概率输出和阈值变化下是否稳定 |
| 诊断指标 | Log Loss、混淆矩阵 | 错误是否集中,模型置信度是否可靠 |
Wine Recognition 示例中,Macro-F1 比 Accuracy 更适合作为主指标,因为三类样本数量不同,Macro-F1 不会让样本较多的类别主导结论。Weighted-F1 也有价值,但它会按类别样本数加权,更接近整体平均表现。两者一起看,可以判断模型是“整体好”还是“各类都比较均衡”。
多分类 ROC-AUC 需要说明计算方式。本项目采用 one-vs-rest 思路计算多分类 AUC,即把每一类分别视为正类,其余类别视为负类,再综合得到整体指标。论文中不一定要写很长公式,但最好说明“多分类 AUC 采用 one-vs-rest 方式计算”,否则读者可能不清楚 AUC 在三分类任务中如何定义。
运行环境不需要写成安装日志。论文中通常只保留会影响复现的关键信息,例如编程语言、主要机器学习库、CPU/GPU 环境和随机种子。不要把本机路径、个人环境名、临时日志写进正文。对于这个项目,可以概括为:
实验基于 Python 和 scikit-learn 实现,所有模型在相同数据划分下训练和评估,并固定随机种子以保证结果可复现。
如果学校模板要求写硬件环境,再补充 CPU、内存、GPU 型号即可;如果只是课程报告或博客,不必把pip install过程、报错过程和本地文件夹路径放进去。
这里还涉及一个容易混淆的问题:验证集和测试集不是一回事。验证集用于调参和选择模型,测试集用于最后一次性能报告。若在测试集上反复调参,再把最好的测试结果写进论文,测试集就变成了“隐性验证集”,最终指标会偏乐观。小论文或毕业论文中如果没有单独验证集,至少要说明使用交叉验证辅助模型选择,并把测试集作为最终评估依据。
对比实验:回答“相比谁更好”
对比实验的作用是证明方法在同一任务、同一划分、同一指标下具备竞争力。本示例选择 Logistic Regression、Random Forest、GBDT、MLP 和 RBF-SVM 五类常见模型作为对比对象。所有模型统一计算 Accuracy、Macro-F1、ROC-AUC 和交叉验证 Macro-F1。
选择对比模型时,要避免“随便挑几个模型”这种写法。一个更有说服力的对比组通常包含三类对象:
| 对比类型 | 作用 | 本示例中的对应模型 |
|---|---|---|
| 简单基线 | 说明任务最低可接受表现,也检验数据是否容易分类 | Logistic Regression |
| 常见传统模型 | 提供横向比较,避免只和弱模型比较 | Random Forest、GBDT |
| 重点分析模型 | 承载本文关注的处理流程或参数设计 | RBF-SVM |
如果自己的论文提出了新方法,对比对象还应包括近几年文献中常用的方法或公开基准结果。课程设计和本科论文可以用经典模型作为对比,但也要说明选择原因。例如 Logistic Regression 适合做线性基线,Random Forest 能处理非线性特征交互,SVM 对标准化和核函数较敏感,因此适合用来演示消融分析。
主要对比结果如下:
| 模型 | Accuracy | Macro-F1 | ROC-AUC | CV Macro-F1 |
|---|---|---|---|---|
| LR_Baseline | 0.9815 | 0.9829 | 0.9995 | 0.9765 |
| RF_Comparison | 0.9815 | 0.9811 | 1.0000 | 0.9686 |
| SVM_Proposed | 0.9815 | 0.9808 | 1.0000 | 0.9841 |
| GBDT_Comparison | 0.9444 | 0.9482 | 0.9980 | 0.8776 |
| MLP_Comparison | 0.9259 | 0.9248 | 0.9929 | 0.8684 |
结果解读不要只写“本方法准确率最高”。在这组实验中,LR_Baseline、RF_Comparison和SVM_Proposed的 Accuracy 都达到 0.9815,但 Macro-F1、交叉验证表现和概率指标仍有细微差别。更合理的分析写法是:
从表中可以看出,LR_Baseline 在测试集上取得 0.9829 的 Macro-F1,略高于 RF_Comparison 和 SVM_Proposed;SVM_Proposed 的交叉验证 Macro-F1 为 0.9841,说明其在不同划分下保持了较好的稳定性。GBDT 和 MLP 的 Macro-F1 分别为 0.9482 和 0.9248,低于前三类模型,表明在当前小规模结构化数据上,复杂模型并未必然带来更优结果。
这段分析包含三个层次:先比较主指标,再说明相同 Accuracy 下的差异,最后结合数据规模解释现象。
初学者写对比实验时,可以套用“结果-比较-解释”的三句结构:
- 结果句:哪个模型在主指标上达到多少。
- 比较句:它比哪些模型高或低,差距是多少。
- 解释句:为什么可能出现这种现象,是否和数据特点有关。
这类分析比单纯报数更完整:
与 GBDT 和 MLP 相比,LR_Baseline、RF_Comparison 和 SVM_Proposed 在测试集上均取得更高 Accuracy,说明 Wine 数据集中 13 维化学特征已经具备较强可分性,简单模型也能学习到有效决策边界。MLP 的交叉验证波动较大,可能与样本规模较小有关,因此不宜仅凭单次测试集结果判断复杂模型更优。
这里的“可能”很重要。论文实验分析通常不能把原因写得过满,除非有进一步证据。对于本科生或刚开始写小论文的同学,建议多使用“可能表明”“说明在当前设置下”“提示该因素具有影响”等稳健表达,少用“充分证明”“完全优于”“彻底解决”等过强表述。
对比实验还要说明公平性。公平不是所有模型参数完全一样,而是训练数据、测试数据、评价指标和调参预算尽量一致。比如不能让某个模型使用标准化和调参后的最优参数,却让其他模型使用随意默认参数,然后直接得出“本文方法更优”的结论。对于博客和课程报告,可以简单说明所有模型使用同一数据划分;对于论文,建议进一步说明参数选择策略、交叉验证设置和是否使用相同特征输入。
还有一种情况很常见:预设的“本文方法”并不是表中最高分。在本示例中,LR_Baseline的测试集 Macro-F1 略高于SVM_Proposed,这时不能强行写成“本文方法取得最优结果”。更稳妥的写法是承认结果:LR 在当前测试集上综合指标更高,SVM 在交叉验证中表现稳定,消融实验则显示标准化对 SVM 非常关键。这样既不掩盖数据,也能保留方法分析价值。
消融实验:回答“哪个设计真的有用”
消融实验不是再做一组随意对比,而是围绕核心方法逐项拆解。本示例以完整 SVM 为参照组,分别去掉标准化、替换 RBF 核、降低 C、加入 SelectKBest 和加入 class_weight。规则是每次只改变一个因素,这样才能判断性能变化来自哪里。
消融实验结果如下:
| 变体 | Accuracy | Macro-F1 | ROC-AUC | Log Loss |
|---|---|---|---|---|
| lower C=0.5 | 1.0000 | 1.0000 | 1.0000 | 0.0844 |
| Full_SVM | 0.9815 | 0.9808 | 1.0000 | 0.0913 |
| with class_weight | 0.9815 | 0.9808 | 1.0000 | 0.0907 |
| w/o RBF kernel | 0.9630 | 0.9636 | 0.9981 | 0.1190 |
| with SelectKBest | 0.9444 | 0.9423 | 0.9969 | 0.1204 |
| w/o StandardScaler | 0.7037 | 0.6893 | 0.8960 | 0.5520 |
这张表最值得写的是w/o StandardScaler。去掉标准化后 Macro-F1 从 0.9808 降到 0.6893,说明 Wine 数据中的不同化学特征量纲差异会显著影响 SVM 的距离计算。论文里可以这样写:
消融结果表明,特征标准化对 SVM 分类性能影响最明显。移除 StandardScaler 后,Macro-F1 由 0.9808 下降至 0.6893,说明不同化学检测特征的量纲差异会干扰核函数距离度量。相比之下,将 RBF 核替换为线性核后 Macro-F1 降至 0.9636,性能下降较小,说明当前数据中非线性边界有一定帮助,但其影响弱于特征尺度处理。
还要注意,lower C=0.5在当前测试划分上达到 1.0000,并不等于它在所有数据划分上都最优。论文中应把它写成“该设置在本次划分下表现更好,提示正则化强度仍有调参空间”,而不是夸大为绝对结论。
消融实验写作有一个很实用的模板:
以完整模型作为参照组,本文分别移除或替换某个关键组件,并观察主指标变化。当移除某组件后性能明显下降时,说明该组件对模型性能具有正向贡献;当某一变体取得更高结果时,说明原模型仍存在调参或结构优化空间,需要结合交叉验证和更多数据进一步确认。
本科毕业论文里经常出现一个问题:消融实验只保留“对自己有利”的结果。例如只展示去掉某模块后下降的行,而不展示某个参数调小后反而上升的行。这种写法不稳,也容易被老师追问。更好的做法是保留完整结果,然后解释为什么出现提升、下降或无变化。实验部分不是宣传页,真实、可解释、能复现比“每一行都支持自己”更重要。
写消融分析时还可以加入“下降幅度”:
与 Full_SVM 相比,去掉 StandardScaler 后 Macro-F1 下降 0.2915,是所有消融设置中下降幅度最大的变体,说明特征尺度处理是该任务中最关键的预处理步骤。
这种写法比“下降明显”更有说服力,因为它把判断依据量化了。
消融实验的深度不只来自“删掉模块后下降”,还来自对不同变化方向的解释。以下三类结果都值得写:
| 结果类型 | 该怎么解释 |
|---|---|
| 性能下降 | 被移除的组件可能对模型有效,需要说明它解决了什么问题 |
| 性能基本不变 | 该组件在当前数据上贡献有限,可能需要更大数据或更复杂场景验证 |
| 性能上升 | 原设置可能不是最优,需要讨论参数、正则化或过拟合问题 |
例如with class_weight与Full_SVM的 Macro-F1 相同,说明在当前 Wine 测试划分下,类别权重没有带来额外收益。这并不表示 class_weight 在所有类别不均衡任务中无效,只能说明该数据集的类别差异尚未严重到需要权重修正。这样的解释比简单写“无提升”更成熟。
图表与误差分析:解释模型到底错在哪里
图表放进论文后,必须承担解释任务。混淆矩阵用于回答“错在哪里”,ROC/PR 曲线用于回答“概率区分能力是否稳定”,类别指标热力图用于回答“模型是否偏向某一类”。
初学者常见误区是把所有图直接堆在一起,然后在正文中写“结果如图所示”。论文里不能只让图“自己说话”,正文至少要解释三件事:图中最明显的现象是什么、这个现象说明什么、它和前面的指标表是否一致。
最佳对比模型的混淆矩阵如下。54 条测试样本中只有 1 条葡萄酒类别二被误判为葡萄酒类别一,其余样本识别正确。
论文里可以这样写:
从混淆矩阵可以看出,模型整体误判较少,主要错误集中在类别二到类别一的混淆上。这说明模型已经能够较好区分三类葡萄酒样本,但类别一和类别二在部分化学特征空间中仍存在相近区域,后续可结合特征重要性或更细粒度的样本分析进一步定位误差来源。
ROC 曲线和 PR 曲线不要只写“AUC 很高”,要说明它们补充了什么证据。本次实验中三类 ROC 曲线都接近左上角,PR 曲线也保持在较高区域,说明模型在不同阈值下仍能保持较好的区分能力和精确率-召回率平衡。
类别指标热力图适合放在误差分析或补充分析中,用来观察每个类别的 Precision、Recall 和 F1 是否存在明显短板。
对于 AI 类论文,图表写作可以遵循一个简单原则:每放一张图,就至少回答一个具体问题。如果一张图没有被正文解释,它对实验论证的价值就很低。
图表段落可以按这种句式写:
图 X 展示了模型在测试集上的混淆矩阵。可以看出,模型在类别一和类别三上均实现正确分类,主要错误来自类别二被误判为类别一。该现象与表 X 中较高的 Macro-F1 基本一致,说明模型总体分类效果较好,但仍存在少量类别边界相近样本。
如果是正式论文,还要注意图题和表题的写法。表题通常放在表格上方,图题通常放在图像下方;正文中要用“如表 X 所示”“如图 X 所示”主动引用,不要让图表孤立出现。CSDN 博客不一定严格要求图表编号,但写作思路仍然一样:每张图前后都要有解释。
图表数字也要保持统一。Accuracy、Macro-F1、ROC-AUC 等指标可以统一保留四位小数,不要一会儿写0.9815,一会儿写98.15%,除非全文都采用百分比。表格中的指标顺序也应固定,例如先写 Accuracy,再写 Macro-F1、ROC-AUC、CV Macro-F1。稳定的格式能降低读者理解成本,也能减少论文排版时的返工。
组织成论文实验章节
完整实验部分可以按这种结构写:
- 实验数据:说明数据来源、样本规模、特征数量、类别数量和划分方式。
- 实验设置:说明模型、参数、随机种子、训练测试划分和运行环境的必要信息。
- 评价指标:解释主指标和辅助指标,不要只列公式或缩写。
- 对比实验:证明方法相对 baseline 和对比模型的表现。
- 消融实验:证明关键模块、参数或处理步骤的贡献。
- 可视化分析:用混淆矩阵、ROC/PR 曲线、热力图解释模型行为。
- 讨论与局限:说明小样本、随机划分、满分结果或泛化风险。
实验小结可以参考这种写法:
综上,Wine Recognition 数据集上的实验结果表明,不同模型在小规模结构化多分类任务中表现存在差异。LR_Baseline 在测试集上取得最高 Macro-F1,SVM_Proposed 在交叉验证中表现稳定;消融实验进一步表明,特征标准化是影响 SVM 性能的关键因素。混淆矩阵显示模型仅在类别一与类别二之间出现少量混淆,说明当前特征已经能够有效刻画葡萄酒类别差异。但由于数据集规模较小,接近满分的测试结果仍需结合交叉验证和更多外部数据进行验证。
这段小结不是简单重复表格,而是把对比实验、消融实验、误差分析和局限性连在一起。正式论文中,实验结论越接近“证据链”,说服力越强。
实验讨论可以写成四个层次:
- 现象:哪个模型更好,哪个组件影响最大,错误集中在哪些类别。
- 原因:这些现象可能与数据规模、特征类型、模型假设或参数设置有关。
- 边界:结果只在当前数据集、划分方式和实验设置下成立。
- 改进:后续可以增加数据、做多随机种子实验、引入外部测试集或改进特征表示。
例如 Wine Recognition 的讨论不能停在“准确率高”。更有深度的写法是:该数据集特征维度较低、类别可分性较强,因此线性模型和核方法都能取得高分;SVM 对标准化敏感,说明特征尺度是影响距离度量的重要因素;但数据集只有 178 条样本,单次测试集接近满分不应被解释为模型具备广泛泛化能力。这样的讨论同时解释了结果、贡献和限制。
本科论文可以把“讨论与局限”写得短一些,但不能完全省略。最基本的局限包括样本规模较小、测试集规模有限、数据来源单一、只验证了结构化化学特征,没有验证真实生产环境中的噪声数据。研究生论文则应进一步说明这些局限如何影响结论,例如是否可能导致过拟合、是否需要外部测试集、是否需要多随机种子或置信区间。
对于本科毕业论文,可以把实验章节写成 4 到 6 个小节,不必追求过多复杂实验,但每个小节都要写实。一个比较稳的目录是:
4 实验与结果分析 4.1 数据集与实验设置 4.2 评价指标 4.3 对比实验结果 4.4 消融实验分析 4.5 可视化与误差分析 4.6 本章小结对于刚入学的研究生,如果目标是小论文或组会报告,可以进一步强化两个部分:一是和已有方法的公平比较,二是对方法组件的消融验证。导师通常更关心“你的改进到底带来了什么贡献”,而不只是“模型跑出了一个高分”。
实验设置模板可以这样写:
为验证所提方法的有效性,本文在 Wine Recognition 数据集上开展实验。数据集按照 7:3 比例划分为训练集和测试集,并采用分层采样保证各类别比例基本一致。实验选取 Logistic Regression、Random Forest、GBDT、MLP 和 SVM 作为对比模型,所有模型使用相同训练测试划分进行评估。评价指标包括 Accuracy、Macro-F1、ROC-AUC 和 Average Precision,其中 Macro-F1 作为主要指标,用于衡量模型在不同类别上的综合识别能力。
结果分析可以按这种方式展开:
由表 X 可知,模型 A 在 Macro-F1 上取得最高结果,达到 xx,相比模型 B 提升 xx。该结果说明模型 A 在保持整体准确率的同时,对不同类别具有更均衡的识别能力。结合混淆矩阵可以发现,模型主要错误集中在类别 m 与类别 n 之间,说明这两类样本在特征空间中仍存在一定重叠。
写作时不要把模板原样搬进论文,而要把Wine Recognition、模型名、指标名和错误类别替换成自己的真实实验内容。模板的作用是建立逻辑顺序,不是代替分析。
常见错误与修改方法
初学者写实验部分时,最容易出现以下几类问题:
| 常见写法 | 问题 | 修改方向 |
|---|---|---|
| “本文模型效果较好。” | 没有指标,也没有比较对象 | 写出具体指标、对比模型和提升幅度 |
| “结果如图所示。” | 没有解释图表 | 说明图中现象、含义和结论 |
| “数据集划分为训练集和测试集。” | 没有比例、随机种子或分层策略 | 补充分割比例和划分方式 |
| “本文方法优于所有模型。” | 结论过强,缺少边界 | 改为“在当前数据集和实验设置下取得更优结果” |
| “消融实验见表。” | 没有说明每个变量的作用 | 分析下降幅度和可能原因 |
| “准确率达到 100%,证明模型完美。” | 小数据集上满分可能不稳定 | 结合交叉验证、误差分析和局限性说明 |
写完初稿后,可以按这些问题逐段检查:
- 读者能不能看懂我的输入特征和输出标签是什么。
- 读者能不能复现我的训练测试划分和评价指标。
- 每个对比模型是否使用了同一份数据划分。
- 主指标是否和任务特点匹配。
- 表格后面是否有分析,而不只是重复数字。
- 每张图是否在正文中被解释。
- 消融实验是否一次只改变一个因素。
- 有没有解释异常结果、满分结果或不符合预期的结果。
- 结论是否只覆盖当前数据和实验设置,没有过度泛化。
- 是否删除了本机路径、调试记录和无关运行日志。
这份清单对本科论文尤其有用。很多实验章节不是缺少复杂方法,而是缺少基本交代:数据怎么划分、模型怎么比较、图表说明什么、结论边界在哪里。把这些基础写扎实,可信度会比单纯堆模型更高。
复用到自己的 AI 论文项目
Wine Recognition 示例的价值不在于葡萄酒识别本身,而在于给出一套可迁移的实验写作模板。换成图像分类、目标检测、文本分类、推荐系统或 RAG 评测时,也可以沿用同一思路:
- 把数据说明写成任务定义,而不是只写数据集名称。
- 把指标解释写成评价逻辑,而不是只列 Accuracy、F1、AUC。
- 把对比实验写成公平比较,而不是堆多个模型名称。
- 把消融实验写成贡献验证,而不是随意调参结果。
- 把图表写成证据解释,而不是结果截图集合。
- 把小结写成“结果、原因、局限、改进方向”的闭环。
项目输出的outputs/paper_experiment_section.md可以作为实验章节初稿,但不建议原样复制。更稳妥的做法是把它当成指标和结构底稿,再结合自己的研究问题、数据特点、误差样本和方法动机补充分析。AI 类论文的实验部分不只是追求“结果最高”,更重要的是让读者看清楚实验为什么可信、方法为什么有效、结论边界在哪里。
实际写作时,可以先跑通实验,保存所有指标表和图表;再写数据集与实验设置;然后写评价指标和对比实验;接着补消融实验、误差分析和小结;最后回头检查摘要、引言和方法部分是否与实验结论一致。不要先写宏观结论再去找数据支撑。论文实验部分最可靠的写法,是让每个结论都能在表格、图像或预测结果中找到对应证据。
