数学建模教程系列——序言
动机
数学建模竞赛中,参赛者最常遇到的困境不是"不会公式",而是"不知道怎么把公式变成代码跑出来"。学了高等数学、线性代数、概率论,知道 ARIMA 的概念、知道什么是线性规划、了解 K-Means 的思想,但比赛拿到题目后,面对空白的 Python 编辑器仍然不知从何下手。
本系列教程的定位正是填补数学公式与可运行代码之间的鸿沟。我们不推导算法的数学证明,而是聚焦于:给你一个明确的建模问题,告诉你用哪个 Python 库、怎么写代码、结果怎么解读、图表怎么画到论文里。
选择 Python 作为载体,是因为它拥有最成熟的科学计算生态——每个库解决一类明确的建模问题,安装即用,学完就能上场比赛。以"库"为纲组织内容,是因为这是最贴近实战的学习方式:遇到规划问题就去 PuLP 篇查模板,遇到时间序列就去 statsmodels 篇套流程。
系列全景
本系列目前包含 11 篇教程,覆盖从数据导入到模型求解到论文配图的完整流程:
这些篇目之间是互补而非替代的关系。例如:
statsmodels 回答"X 对 Y 是否有显著影响"(统计推断),scikit-learn 回答"怎样预测得最准"(预测精度)
PuLP 给出规划问题的精确最优解,scipy.optimize 处理 PuLP 无法表达的非线性目标函数
基础篇的 ARIMA/SARIMA 适合平稳或可平稳化的单变量序列,提高篇的树模型和深度学习模型适合多变量、非线性的复杂时序
每篇教程都遵循统一的结构:前言导读 → 概念简述 → API 详解 → 实战案例 → 速查表。
学习路线
根据你的基础和目标,推荐三条学习路径:
零基础路线(刚接触 Python):环境配置 → Matplotlib → NumPy/Pandas → 按需选读基础篇各章。这三篇是所有后续内容的前置基础,建议完整通读。
有基础路线(会用 pandas,参加过一次数模):跳过入门篇,直接进基础篇。按你常遇到的赛题类型选读——规划题看 PuLP、预测题看 statsmodels 时间序列、分类题看 sklearn 机器学习、动态系统看 SciPy 微分方程。
进阶路线(已有基线模型,想提升效果):重点学习提高篇三篇。推荐先掌握 XGBoost/LightGBM 树模型(上手快、效果好),再学习 scipy.optimize 的全局优化方法(差分进化、模拟退火),最后根据赛题需要选读 LSTM/GRU/TCN 深度学习模型。
各篇内部的章节相对独立,支持"工具书用法"——比赛时直接跳到对应章节查找代码模板,替换数据即可套用。
持续更新
本系列教程是持续拓展的。目前的内容已经覆盖了数据处理、可视化、回归、分类、聚类、降维、规划、微分方程、时间序列等主要建模方向,但数学建模涉及的工具和方法远不止于此。
如果你在阅读后有任何想补充的内容方向——比如图论与网络分析、灰色预测模型、马尔可夫链、模糊综合评价、元胞自动机、蒙特卡洛模拟、博弈论模型、排队论,或者其他任何你觉得实用但本系列尚未覆盖的方法——欢迎在评论区提出你的需求。
本系列会根据读者的反馈不断扩展,目标是成为一份真正全面的数模 Python 工具手册。