为什么用 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 CommonsWine sampling.jpghttps://commons.wikimedia.org/wiki/File:Wine_sampling.jpg实验部分先想清楚什么写实验部分之前建议先把实验设计拆成六个问题研究任务是什么输入是什么输出是什么模型解决什么问题。数据集是否可信来源、样本量、特征、类别、划分方式是否写清楚。主指标是什么为什么用 Macro-F1、Accuracy、AUC 或其他指标。对比对象是谁baseline、传统模型、主流模型和本文方法是否公平比较。消融变量是什么每次只改变一个组件或参数才能说明贡献来源。图表证明什么混淆矩阵、ROC/PR 曲线、指标热力图分别支持哪段分析。如果这六个问题没有回答实验章节就会变成结果罗列如果每个问题都有对应证据实验部分就能形成“数据说明-指标定义-对比实验-消融实验-误差分析-结论讨论”的闭环。初学者可以把实验部分理解成答辩现场的一组证据材料。老师或审稿人真正关心的不是你有没有跑代码而是这些结果是否可靠、对比是否公平、结论是否从数据里推出来。也就是说实验部分不是“展示成果”的地方而是“证明结论”的地方。更进一步说实验部分需要建立一条清晰的因果链数据特点 - 实验设置 - 评价指标 - 对比结果 - 消融结果 - 误差解释 - 结论边界例如 Wine Recognition 是小规模结构化多分类数据因此实验设置中需要固定随机种子和分层划分由于类别数量不完全均衡评价时不能只看 Accuracy还要关注 Macro-F1由于 SVM 依赖特征尺度和距离度量消融实验中就应单独验证 StandardScaler、核函数和正则化强度的影响。这样写出来的实验部分不是“跑了哪些模型”而是“为什么这些实验能回答研究问题”。这也是本科论文和研究生论文的关键差别之一。本科论文可以重点写清楚实验流程和结果是否可信研究生论文还要进一步说明方法贡献来自哪里、对比是否足够公平、结论在哪些条件下成立。即使使用同一份 Wine 数据集后者也要写出更多方法分析而不是只增加几张图。本项目的代码流程也按这个逻辑组织。配置文件确定数据源和随机种子数据模块完成下载与分层划分实验模块训练多类模型并计算指标绘图模块输出论文图表最后由报告模块整理出实验章节初稿。实际写作顺序可以概括为下图先把数据和任务讲明白再说明实验设置然后给出对比结果、消融结果和误差分析最后写出结论与局限。先建立证据链再写段落本科生和研一同学写实验部分时不建议一上来就对着图表写长段分析。更稳的顺序是先建立证据链再把证据整理成段落先列出实验章节的小标题例如“数据集”“实验设置”“评价指标”“对比实验”“消融实验”“可视化分析”。每个小标题后先写一句“本节要证明什么”。再把代码结果填进去包括样本数量、指标表、图表和错误样本。最后把“结果说明了什么”补在每张表和每张图后面。一个可操作的四句写法是任务句本文在什么数据和什么任务上做实验。设置句实验如何划分数据、选择模型和计算指标。结果句主要模型取得了什么数值结果。解释句这些结果说明了什么仍然有什么限制。例如看到Accuracy0.9815和Macro-F10.9829时不要只写“模型效果较好”。更好的写法是LR_Baseline 在测试集上取得 0.9815 的 Accuracy 和 0.9829 的 Macro-F1说明模型不仅整体预测正确率较高而且在三个类别上保持了较均衡的识别效果。考虑到 Wine 数据集样本规模较小该结果仍需结合交叉验证结果和混淆矩阵进一步确认其稳定性。这段话比“效果较好”多了三层信息指标是什么、指标说明什么、结论边界在哪里。论文实验部分的深度往往就体现在这些限定和解释上。写作时还要区分“实验事实”和“作者判断”。Macro-F10.9829是实验事实“模型具有较好的类别均衡识别能力”是基于事实的判断“该方法适用于所有葡萄酒识别场景”则是过度外推。初学者常把这三者混在一起导致结论显得夸张。比较稳的写法是先报事实再给判断最后补限定条件。数据集与任务定义让读者知道模型在解决什么实验部分的第一段不要急着说模型效果而要先回答“模型到底在什么数据上做什么”。以 Wine Recognition 为例X是 13 维化学检测特征y是 3 类葡萄酒标签。这个任务属于典型多分类问题因此后续指标和图表都要围绕多分类评估展开。数据集介绍建议至少包含四类信息要素需要写清楚的内容Wine Recognition 示例数据来源数据集来自哪里是否为公开数据UCI Machine Learning Repository数据规模样本数量、特征数量、类别数量178 个样本、13 个特征、3 个类别任务定义输入、输出和学习目标输入化学检测特征输出葡萄酒类别划分方式训练集、测试集和类别比例控制方式70% 训练、30% 测试、分层划分这里要避免一句话带过“本文使用 Wine 数据集进行实验”。这种写法对读者帮助不大因为读者不知道这个数据集为什么适合当前任务也不知道实验规模是否足以支撑后文结论。更好的写法是把数据特点和任务联系起来Wine 数据集虽然规模不大但特征都是连续数值适合演示传统机器学习模型、多分类指标、标准化影响和消融分析。项目运行后得到的数据类别分布如下。三类样本分别为 59、71、48占比并不完全相同因此只看 Accuracy 容易掩盖不同类别上的表现差异。类别样本数占比葡萄酒类别一5933.15%葡萄酒类别二7139.89%葡萄酒类别三4826.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 对标准化和核函数较敏感因此适合用来演示消融分析。主要对比结果如下模型AccuracyMacro-F1ROC-AUCCV Macro-F1LR_Baseline0.98150.98290.99950.9765RF_Comparison0.98150.98111.00000.9686SVM_Proposed0.98150.98081.00000.9841GBDT_Comparison0.94440.94820.99800.8776MLP_Comparison0.92590.92480.99290.8684结果解读不要只写“本方法准确率最高”。在这组实验中LR_Baseline、RF_Comparison和SVM_Proposed的 Accuracy 都达到 0.9815但 Macro-F1、交叉验证表现和概率指标仍有细微差别。更合理的分析写法是从表中可以看出LR_Baseline 在测试集上取得 0.9829 的 Macro-F1略高于 RF_Comparison 和 SVM_ProposedSVM_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。规则是每次只改变一个因素这样才能判断性能变化来自哪里。消融实验结果如下变体AccuracyMacro-F1ROC-AUCLog Losslower C0.51.00001.00001.00000.0844Full_SVM0.98150.98081.00000.0913with class_weight0.98150.98081.00000.0907w/o RBF kernel0.96300.96360.99810.1190with SelectKBest0.94440.94230.99690.1204w/o StandardScaler0.70370.68930.89600.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 C0.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-F1SVM_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 类论文的实验部分不只是追求“结果最高”更重要的是让读者看清楚实验为什么可信、方法为什么有效、结论边界在哪里。实际写作时可以先跑通实验保存所有指标表和图表再写数据集与实验设置然后写评价指标和对比实验接着补消融实验、误差分析和小结最后回头检查摘要、引言和方法部分是否与实验结论一致。不要先写宏观结论再去找数据支撑。论文实验部分最可靠的写法是让每个结论都能在表格、图像或预测结果中找到对应证据。
以 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 CommonsWine sampling.jpghttps://commons.wikimedia.org/wiki/File:Wine_sampling.jpg实验部分先想清楚什么写实验部分之前建议先把实验设计拆成六个问题研究任务是什么输入是什么输出是什么模型解决什么问题。数据集是否可信来源、样本量、特征、类别、划分方式是否写清楚。主指标是什么为什么用 Macro-F1、Accuracy、AUC 或其他指标。对比对象是谁baseline、传统模型、主流模型和本文方法是否公平比较。消融变量是什么每次只改变一个组件或参数才能说明贡献来源。图表证明什么混淆矩阵、ROC/PR 曲线、指标热力图分别支持哪段分析。如果这六个问题没有回答实验章节就会变成结果罗列如果每个问题都有对应证据实验部分就能形成“数据说明-指标定义-对比实验-消融实验-误差分析-结论讨论”的闭环。初学者可以把实验部分理解成答辩现场的一组证据材料。老师或审稿人真正关心的不是你有没有跑代码而是这些结果是否可靠、对比是否公平、结论是否从数据里推出来。也就是说实验部分不是“展示成果”的地方而是“证明结论”的地方。更进一步说实验部分需要建立一条清晰的因果链数据特点 - 实验设置 - 评价指标 - 对比结果 - 消融结果 - 误差解释 - 结论边界例如 Wine Recognition 是小规模结构化多分类数据因此实验设置中需要固定随机种子和分层划分由于类别数量不完全均衡评价时不能只看 Accuracy还要关注 Macro-F1由于 SVM 依赖特征尺度和距离度量消融实验中就应单独验证 StandardScaler、核函数和正则化强度的影响。这样写出来的实验部分不是“跑了哪些模型”而是“为什么这些实验能回答研究问题”。这也是本科论文和研究生论文的关键差别之一。本科论文可以重点写清楚实验流程和结果是否可信研究生论文还要进一步说明方法贡献来自哪里、对比是否足够公平、结论在哪些条件下成立。即使使用同一份 Wine 数据集后者也要写出更多方法分析而不是只增加几张图。本项目的代码流程也按这个逻辑组织。配置文件确定数据源和随机种子数据模块完成下载与分层划分实验模块训练多类模型并计算指标绘图模块输出论文图表最后由报告模块整理出实验章节初稿。实际写作顺序可以概括为下图先把数据和任务讲明白再说明实验设置然后给出对比结果、消融结果和误差分析最后写出结论与局限。先建立证据链再写段落本科生和研一同学写实验部分时不建议一上来就对着图表写长段分析。更稳的顺序是先建立证据链再把证据整理成段落先列出实验章节的小标题例如“数据集”“实验设置”“评价指标”“对比实验”“消融实验”“可视化分析”。每个小标题后先写一句“本节要证明什么”。再把代码结果填进去包括样本数量、指标表、图表和错误样本。最后把“结果说明了什么”补在每张表和每张图后面。一个可操作的四句写法是任务句本文在什么数据和什么任务上做实验。设置句实验如何划分数据、选择模型和计算指标。结果句主要模型取得了什么数值结果。解释句这些结果说明了什么仍然有什么限制。例如看到Accuracy0.9815和Macro-F10.9829时不要只写“模型效果较好”。更好的写法是LR_Baseline 在测试集上取得 0.9815 的 Accuracy 和 0.9829 的 Macro-F1说明模型不仅整体预测正确率较高而且在三个类别上保持了较均衡的识别效果。考虑到 Wine 数据集样本规模较小该结果仍需结合交叉验证结果和混淆矩阵进一步确认其稳定性。这段话比“效果较好”多了三层信息指标是什么、指标说明什么、结论边界在哪里。论文实验部分的深度往往就体现在这些限定和解释上。写作时还要区分“实验事实”和“作者判断”。Macro-F10.9829是实验事实“模型具有较好的类别均衡识别能力”是基于事实的判断“该方法适用于所有葡萄酒识别场景”则是过度外推。初学者常把这三者混在一起导致结论显得夸张。比较稳的写法是先报事实再给判断最后补限定条件。数据集与任务定义让读者知道模型在解决什么实验部分的第一段不要急着说模型效果而要先回答“模型到底在什么数据上做什么”。以 Wine Recognition 为例X是 13 维化学检测特征y是 3 类葡萄酒标签。这个任务属于典型多分类问题因此后续指标和图表都要围绕多分类评估展开。数据集介绍建议至少包含四类信息要素需要写清楚的内容Wine Recognition 示例数据来源数据集来自哪里是否为公开数据UCI Machine Learning Repository数据规模样本数量、特征数量、类别数量178 个样本、13 个特征、3 个类别任务定义输入、输出和学习目标输入化学检测特征输出葡萄酒类别划分方式训练集、测试集和类别比例控制方式70% 训练、30% 测试、分层划分这里要避免一句话带过“本文使用 Wine 数据集进行实验”。这种写法对读者帮助不大因为读者不知道这个数据集为什么适合当前任务也不知道实验规模是否足以支撑后文结论。更好的写法是把数据特点和任务联系起来Wine 数据集虽然规模不大但特征都是连续数值适合演示传统机器学习模型、多分类指标、标准化影响和消融分析。项目运行后得到的数据类别分布如下。三类样本分别为 59、71、48占比并不完全相同因此只看 Accuracy 容易掩盖不同类别上的表现差异。类别样本数占比葡萄酒类别一5933.15%葡萄酒类别二7139.89%葡萄酒类别三4826.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 对标准化和核函数较敏感因此适合用来演示消融分析。主要对比结果如下模型AccuracyMacro-F1ROC-AUCCV Macro-F1LR_Baseline0.98150.98290.99950.9765RF_Comparison0.98150.98111.00000.9686SVM_Proposed0.98150.98081.00000.9841GBDT_Comparison0.94440.94820.99800.8776MLP_Comparison0.92590.92480.99290.8684结果解读不要只写“本方法准确率最高”。在这组实验中LR_Baseline、RF_Comparison和SVM_Proposed的 Accuracy 都达到 0.9815但 Macro-F1、交叉验证表现和概率指标仍有细微差别。更合理的分析写法是从表中可以看出LR_Baseline 在测试集上取得 0.9829 的 Macro-F1略高于 RF_Comparison 和 SVM_ProposedSVM_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。规则是每次只改变一个因素这样才能判断性能变化来自哪里。消融实验结果如下变体AccuracyMacro-F1ROC-AUCLog Losslower C0.51.00001.00001.00000.0844Full_SVM0.98150.98081.00000.0913with class_weight0.98150.98081.00000.0907w/o RBF kernel0.96300.96360.99810.1190with SelectKBest0.94440.94230.99690.1204w/o StandardScaler0.70370.68930.89600.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 C0.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-F1SVM_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 类论文的实验部分不只是追求“结果最高”更重要的是让读者看清楚实验为什么可信、方法为什么有效、结论边界在哪里。实际写作时可以先跑通实验保存所有指标表和图表再写数据集与实验设置然后写评价指标和对比实验接着补消融实验、误差分析和小结最后回头检查摘要、引言和方法部分是否与实验结论一致。不要先写宏观结论再去找数据支撑。论文实验部分最可靠的写法是让每个结论都能在表格、图像或预测结果中找到对应证据。