MODEL LAB数学建模交互课
课程进度03/ 16 讲
第 3 讲 · 从会运行到会复现

第 3 讲 · MATLAB / Python 建模速成

用最少语法跑通“读入—计算—画图—导出”主线,并建立不靠复制粘贴的可复现代码习惯。

6 个微知识点24 道即时练习答案逐题隐藏无需联网运行
学完能做什么

可检查的学习目标

01
能读入表格并完成数组级计算
02
能把重复步骤封装为函数并排查维度错误
03
能输出带标签的图表、结果表与运行记录
知识点01

环境、路径、脚本与输出

先跑通最小工作流

约 7 min
先猜一猜

同一段代码在队友电脑报“找不到文件”,最常见原因是模型错了吗?

最小工作流是:项目文件夹中放数据、代码和输出;从项目根目录运行;脚本按顺序读入、处理、分析、保存。

不要把 C:\Users\某人 这样的绝对路径写死。相对路径与统一目录结构让队友可以复现。

别踩坑使用个人绝对路径代码与输出散落桌面
动手试一试

工程可复现性

LIVE

比较三种文件组织。

清晰度
42
可信度
35
可用度
25

作者勉强能找,队友几乎无法运行。

跟我算一遍读取销量表

项目根目录下 data/raw/sales.xlsx。

STEP 01

Python:pd.read_excel('data/raw/sales.xlsx')。

立即练习

学一点,马上做 4 题

答案默认隐藏。聚焦题卡后按 Space,一次只揭晓一道。

01选择未作答

哪种路径最适合团队共享项目?

02判断未作答

清洗脚本可以直接覆盖原始数据文件,节省空间。

03简答未作答

最小 README 至少写哪四项?

04选择未作答

随机算法要复现实验,最应记录什么?

知识点02

先看形状,再写公式

数组、向量与索引

约 9 min
先猜一猜

两个都叫“长度 5”的数组,为什么相乘会报错或得到意外结果?

向量和矩阵是建模计算的基本容器。写任何运算前先看 shape/size:有多少行、多少列,每一维代表什么。

MATLAB 索引从 1 开始;Python/NumPy 从 0 开始。逐元素乘法与矩阵乘法含义不同。

别踩坑混淆元素乘与矩阵乘不看维度就转置
动手试一试

维度意识

LIVE

比较三种排错习惯。

清晰度
46
可信度
35
可用度
40

错误可能消失,但语义可能已经错。

跟我算一遍加权得分

3 个方案、4 个指标的矩阵 X,权重 w 有 4 个。

STEP 01

X 形状为 3×4。

立即练习

学一点,马上做 4 题

答案默认隐藏。聚焦题卡后按 Space,一次只揭晓一道。

01选择未作答

X 为 10×3,w 为 3×1,Xw 的形状是?

02判断未作答

Python 与 MATLAB 的第一个元素索引都为 1。

03选择未作答

NumPy 中做矩阵乘法通常使用哪个运算符?

04简答未作答

为什么报维度错时不应第一反应就转置?

知识点03

先看表,再开始算

可靠地读入与检查数据

约 11 min
先猜一猜

read_excel 没报错,为什么后面的均值仍可能全是空值?

读入成功只说明文件打开了,不说明数据类型、缺失值和列名正确。

第一轮检查应包括行列数、前几行、列名、数据类型、缺失数和唯一值。

别踩坑数字列被读成文本忽略中文空格与重复列名
动手试一试

读入检查深度

LIVE

观察从“能打开”到“可信数据”的距离。

清晰度
58
可信度
32
可用度
38

类型和缺失问题会潜伏到后续。

跟我算一遍金额列无法求和

金额列含“1,200元”“—”“ 850 ”。

STEP 01

去掉逗号、单位和首尾空格。

立即练习

学一点,马上做 4 题

答案默认隐藏。聚焦题卡后按 Space,一次只揭晓一道。

01选择未作答

读入后最先应该检查哪组信息?

02判断未作答

金额缺失可以一律填 0,因为 0 也是数字。

03简答未作答

数据类型检查能发现哪两类常见问题?

04选择未作答

清洗转换失败的记录应该怎样处理?

本讲主实验 · 拖一拖再下结论

循环与向量化速度直觉

改变数据量和单次运算复杂度,比较逐项循环与批量数组运算的估算成本。

实时更新
观察结果等待计算

调整左侧参数,观察模型输出怎样变化。

实验后想一想

向量化更快是否意味着任何循环都应删除?写出至少一个仍适合保留循环的场景。

知识点04

先正确,再复用,再提速

函数、循环与向量化

约 7 min
先猜一猜

一段代码复制了 6 次,只改列名,最可能埋下什么风险?

函数把一项清楚任务封装成输入—处理—输出,可减少重复并方便测试。

向量化让数组一次参与运算,代码更接近数学公式,通常也更快;但逻辑复杂时,清楚的循环仍然合理。

别踩坑复制粘贴多份逻辑为了快牺牲可读性
动手试一试

代码成熟度

LIVE

比较复制、函数与测试。

清晰度
63
可信度
42
可用度
38

改规则时容易漏掉一段。

跟我算一遍负向指标正向化

多列指标需要按 max−x 转换。

STEP 01

写函数接受一列数值并返回 max(x)−x。

立即练习

学一点,马上做 4 题

答案默认隐藏。聚焦题卡后按 Space,一次只揭晓一道。

01选择未作答

什么时候最适合封装函数?

02判断未作答

向量化一定比循环更容易理解。

03计算未作答

负向正向化 y=max(x)−x,x=[2,5,8],y 是什么?

04简答未作答

代码优化前后为什么要核对输出一致?

知识点05

数据—图形—结论一致

画出能解释的图

约 9 min
先猜一猜

绘图函数运行成功,却没有单位、图例和标题,这张图能直接放论文吗?

代码绘图的优势是可重复:数据更新后图自动更新。但必须显式设置尺寸、标签、单位、图例和保存分辨率。

每张图前先写问题,图后写一句发现。不要因为库里有某种图就使用。

别踩坑只 show 不 save图例遮挡数据
动手试一试

图形证据

LIVE

比较只画结果与保留原始数据。

清晰度
70
可信度
48
可用度
52

看不到散点,无法判断离线程度。

跟我算一遍散点与回归线

展示温度与用电量关系。

STEP 01

画温度—用电散点,观察形状与异常点。

立即练习

学一点,马上做 4 题

答案默认隐藏。聚焦题卡后按 Space,一次只揭晓一道。

01选择未作答

关系分析中为什么应保留散点?

02判断未作答

屏幕显示清楚的图,直接截图就一定适合论文。

03简答未作答

绘图函数至少应统一哪些样式?

04选择未作答

图表纵轴标签“销量”还缺什么最重要信息?

知识点06

让结果能被找到、核对、重跑

输出、日志与复现

约 11 min
先猜一猜

运行十次产生 result_final_v2_new.xlsx,最后哪一个才是论文里的数?

输出文件应包含明确名称、时间或版本、参数摘要。日志记录读取了什么、处理了多少行、使用哪些参数、产生哪些文件。

论文中的关键数值最好由脚本自动写入结果表,减少手工复制错误。

别踩坑手工复制关键数值输出文件无限加 final
动手试一试

交付可靠性

LIVE

切换三种结果交接方式。

清晰度
45
可信度
38
可用度
30

来源不清,极易复制错。

跟我算一遍结果清单

回归脚本完成后需要交给写作者。

STEP 01

输出 coefficients.csv 与 metrics.csv。

立即练习

学一点,马上做 4 题

答案默认隐藏。聚焦题卡后按 Space,一次只揭晓一道。

01选择未作答

避免 final_v8 文件混乱的最佳方式是?

02判断未作答

随机种子只影响代码速度,不影响结果复现。

03简答未作答

提交前“从零运行”能发现什么?

04选择未作答

论文中的回归系数最好从哪里取得?

离开前完成

从零写一个可交接的数据分析脚本

同一任务分别用 MATLAB 或 Python 完成即可,重点是别人能运行和理解。

LOCAL PACK

本地学习资源

讲义、练习、实验与挑战清单均在本地页面内。