一、 教程

【0】python从入门到放弃:

  1. python环境+IDE配置:安装Anaconda + Pycharm

代码编辑器推荐: Anaconda 的Spyder , Pycharm
数据探索与分析: Anaconda 的jupyter botebook

专业版的pycharm需要破解, 社区版的功能少了很多但基本够用!!

  1. 官网下载pycharm :pycharm 下载链接
  2. 安装方式参考手把手的教你安装PyCharm –Pycharm 安装详细教程(非常详细实用)

Anaconda 安装教程参考:

  1. Anaconda详细安装及使用教程(带图文):https://blog.csdn.net/ITLearnHall/article/details/81708148

2.学习python 的大致路线

学习python 的大致路线可以归结为:基础语法,内置函数builtin.py ,常用包【numpy、pandas、matplolib、seaborn、sklearn,….】再操作数据,再高级编程面向对象、正则表达式、爬虫,、机器学习等再项目实战。

python基础–文字教程

【!!!】推荐: 廖雪峰的python3教程 ;https://www.liaoxuefeng.com/wiki/1016959663602400

Python-100-Days :https://github.com/jackfrued/Python-100-Days

python3 cookbook :https://python3-cookbook.readthedocs.io/zh_CN/latest/

python3 学习爬虫:https://github.com/wistbean/learn_python3_spider

pandas库 :常用功能与函数介绍(结合实例,持续更新)

高性能科学计算和数据分析的基础包:Numpy基础笔记

注: python 官网教程 、 W3Cschool;菜鸟教程-python3:这几个适合用来当作字典来查; 代码用到了就查!

贴一个python_600集基础的视频教程:黑马程序员版:Python教程Python从入门到精通教程
但我个人不建议看这么长的视频,很容易看了前面忘了后面,倍速播放也让你无法抓住重点:可以试试大致浏览文字版教程,用人眼去快速抓取要点,再练点python-100例打好基础。

二选一:

python 100例-菜鸟教程

【1】matlab教程
哎,MATLAB被禁用的话试试python吧、人生苦短!

【博文链接】 w3cschool的matlab入门教程

易百教程的matlab 入门: https://www.yiibai.com/matlab/

【2】数据科学/数据分析教程:

  1. python 数据科学速查手册(中文版):https://github.com/jaystone776/python-data-science-cheatsheet

  2. Github 上的一份数据科学相关的知识速查表, 标星17K多!! : abhat222 / Data-Science–Cheat-Sheet

二、数据预处理与数据探索

【3】数据的描述性统计分析
基本的概念: 数据的趋势、特征和数量关系,包括描述性统计量【算术平均值、中位数、标准差、方差、极差、偏度和峰度】、参数估计、假设检验….分布函数、密度函数和分位数 、分布拟合检验、中位数检验….

【博文链接】 数据的统计描述和分析: 直接点这个链接进去看吧,就介绍了概率论与数理统计的基本知识 : 总体、样本、 频数表、直方图 、 统计量 、算术平均值、中位数 、标准差、方差和极差、偏度和峰度 、中心矩、分布函数、密度函数和分位数 ,正态分布 、卡方分布(Chi square) 、t分布 、F 分布;参数估计的 点估计 &区间估计 & Matlab 实现;假设检验:Z 检验、t检验、分布拟合检验 、 偏度、峰度检验Wilcoxon秩和检验、中位数检验。

一般如果有数据,就可以先查看数据的各维度的描述性统计信息,来查看数据的质量,并假设数据可能的分布。有了这些基本印象后,再对数据进行预处理。参考【0 python数据分析】中的 数据变换方法&预处理方法。

常用离散分布:二项分布、泊松分布、超几何分布、几何分布、 负二项分布

常用连续分布: 对正态分布、均匀分布、指数分布、伽马分布、卡方分布与贝塔分布作了大致的介绍,需要记住它们的参数、数学期望与方差、以及密度函数,一个分布就是一个概率模型。

【4】python数据预处理
数据预处理包括数据的清洗、缺失值的处理、数据变换、数据平滑技术、。。

对于归一化方式还有深度学习的softmax 归一化【用作分类】、batch normalization批标准化。它们是在神经网络模型内部的,不能算是数据预处理方法了。

【博文链接】

数据变换技术: 初值化 、均值化、百分比、倍数、归一化、极差最大值化、区间值化

用Python进行数据挖掘(数据预处理)

数据变换方法: 初值化、 均值化、归一化、极差最大值化、区间值化: MinMaxScaler、StandardScaler、MaxAbsScaler

机器学习-常见的数据预处理

三、模型建立

常用的方法有:

1.类比法、2.二分法、3.量纲分析法、4.图论法;5.差分法、6.变分法、7.数据拟合法、8.回归分析法

9.数学规划法(线性规划,非线性规划,整数规划,动态规划,目标规划)

10.机理分析、11.排队方法、12.决策方法,13.层次分析法、14.主成分分析法、15.因子分析法

16.聚类分析法、17.TOPSIS法、18.模糊评判方法、19.时间序列方法;

20.灰色理论方法、21. 蒙特卡罗法、22. 现代优化算法(模拟退火算法、遗传算法、神经网络法)等。

别看方法有这么多,但究其实际操作,了解主要原理即可,更应该看重在何处,如何使用模型。
毕竟比赛考察的是解决问题的思维,而不是单纯的模型,算法。

1、类比法
类比法建模一般在具体分析该实际问题的各个因素的基础上,通过联想、归纳对各因素进行分析,并且与已知模型比较,把未知关系化为已知关系。

在不同的对象或完全不相关的对象中找出同样的或相似的关系,用已知模型的某些结论类比得到解决该“类似”问题的数学方法,最终建立起解决问题的模型。

2、二分法
二分法常用于数据的排序与查找,当数据量很大时宜采用该方法。

想象一本书找到其中一页有什么办法?
是不是要先从中间打开看页数是比目标页数大还是小,再选择靠近的一边
另一边再从中间打开,看页数是比目标页数大还是小。。。
如此反复,直至找到。即为简单的二分法。

3、量纲分析法
量纲分析法常用于定性地研究某些关系和性质,利用量纲齐次原则寻求物理量之间的关系,在数学建模过程中常常进行无量纲化。

无量纲化是根据量纲分析思想,恰当地选择特征尺度,将有量纲量化为无量纲量,从而达到减少参数、简化模型的效果。

想像一个单位为吨,一个单位为米,能相加减或者比大小吗?
去量纲的目的就是可以简化的得到单位不同的物理量之间的关联。

4、图论法
图论方法是数学建模中一种独特的方法,图论建模是指对一些抽象事物进行抽象、化简,并用图来描述事物特征及内在联系的过程,也是数学建模的一个必备工具。

图论是研究由线连成的点集的理论,一个图中的结点表示对象,两点之间的连线表示两对象之间具有某种特定关系(先后关系、胜负关系、传递关系和连接关系等)。

迪杰斯特拉算法当时比赛我还用过,用图论求最优路径和最短路径时可以优先考虑。

5、差分法
差分法的数学思想是通过taylor级数展开等方法,把控制方程中的导数,用网格节点上的函数值的差商代替进行离散;

从而建立以网格节点上的值为未知数的方程组,将微分问题转化为代数问题,是建立离散动态系统数学模型的有效方法。

差分法的解题步骤为:建立微分方程;构造差分格式;求解差分方程;精度分析和检验。

微积分棒棒的,所以说高数离散要好好学。
6、变分法(使用较少)
变分法用于处理函数的函数的数学领域,即泛函问题,和处理数的函数的普通微积分相对。
泛函可以通过未知函数的积分和它的导数来构造,最终寻求的是极值函数。变分问题的求解方法通常有两种:古典变分法和最优控制论。

变分法了解即可,用的很少了。
7、数据拟合法
在建立数学模型时,实际问题有时仅给出一组数据,处理这类问题较简单易行的方法是通过数据拟合法求得“最佳”的近似函数式———经验公式。

从几何上看就是找一条“最佳”的曲线,使之和给定的数据点靠得最近,即进行曲线拟合。

根据一组数据来确定其经验公式,一般可分为三步进行:

决定经验公式的形式

决定经验公式中的待定参数

进行模型检验

 俗称拟合,用最小二乘法,求出最优函数,matlab中有工具包
 可以使用其补全缺失值 或 检查异常数据
 和差值法有异曲同工之妙

8、回归分析法
回归分析方法是统计分析的重要组成部分,用回归分析方法来研究建模问题是一种常用的有效方法,一般与实际联系比较密切。

回归分析的主要内容:

从一组数据出发,确定这些变量(参数)间的定量关系(回归模型);

对模型的可信度进行统计检验;

从有关的许多变量中,判断变量的显著性;

应用结果是对实际问题作出的判断。

常见的回归模型有:一元线性回归模型、多元线性回归模型、非线性回归模型。

回归这个模块就比较大了,同时作用也非常大,涉及到统计学。
常常使用到的都是多元线性回归模型,用于 预测,分析时比拟合要更健壮的。
一般就用stata或者spss操作,操作方便。

9、数学规划法(适用于最优化、决策类问题)
(1)线性规划

线性规划问题的解法在变量比较少的情形下可以用图解法得到最优解,在变量比较多的情形下,一般借助于计算机编程求解。

(2)非线性规划

非线性规划问题(目标函数或约束条件中至少有一个非线性函数的最优化问题)的解法主要有罚函数法和近似规划法。

(3)整数线性规划

整数规划问题是要求决策变量取整数值的线性或非线性规划问题,可分为整数线性规划和整数非线性规划。求解整数规划的方法主要有分枝定界法和割平面法。

(4)动态规划

动态规划法主要用于解决多阶段决策过程问题的一种最优化方法,其基本思路是:

按时空特点,将复杂问题划分为相互联系的若干个阶段,在选定系统行进方向之后,逆着这个行进方向,从终点向始点计算,逐次对每个阶段寻找某种决策,使整个过程达到最优,故又称为逆序决策过程。

(5)目标规划

目标规划是在线性规划的基础上,为适应经济管理中多目标决策的需要而逐步发展起来的一个分支。

目标规划模型的建模步骤:确定目标值,列出目标约束与绝对约束;根据决策者的需要,将绝对约束转化为目标约束;给各目标赋予相应的优先因子;对同一优先等级中的各偏差变量,赋予相应的权系数。

涉及到运筹学,但其实高中就学了一些大概了,规划问题求最优解,一般使用matlab。

10、机理分析法
机理分析是根据对现实对象特性的认识,分析其因果关系,找出反映内部机理的规律。

该方法立足于揭示事物的内在规律,通过对数据和现象的分析,对事物内在规律做出猜想(模型假设)。

机理分析用途广,在物理、化学等领域都有特定作用。
一般都是为了解决专业性比较强的化学或动力学问题,a,b题
综合评价类问题:

11、层次分析法
适用于具有分层交错评价指标的目标系统,且目标值又难以定量描述的决策问题。

这是一个处理评价体系问题的 小白利器。
当初刚接触数学建模,我用的挺嗨的,但是弊端也非常明显。
评分标准都是自己编的,没有什么专家打分,得出的评分体系靠语言支撑。
但是初入门还是可以用用,也没有坏处。
因为其实评分模型都有点这个问题,可以考虑与topsis模型互补一下。

12、主成分分析法
利用降维的思想,把多个指标转化为少数几个综合指标。

机器学习的降维,很经典。
但主成分分析法最大的缺点就是,得出分类结果你有可能无法解释。
结果都解释不了,就不能放论文里了。
这时你可以考虑一下因子分析。

13、因子分析法
通过线性组合将原变量综合成几个主成分,用较少的综合指标来代替原来较多的指标。

这个因子分析比主成分分析更好用。
像是一个加强版的主成分分析法。
毕竟主成分分析法 得出分类结果还要你解释,因子分析却几乎解决了这个问题。

14、聚类分析法
样本或者变量之间存在不同的相似性,找出一些能够度量它们之间相似程度的统计量,作为分类的依据,再利用这些量将样本或者变量进行分类。

比方在一个圆内撒满豆子,你想把它们按范围分为3类,聚类就可以帮你做到。
甚至你想分几类就几类,其中的求距离方式常见的为 欧拉距离,当然也有其他的。
比较不同豆子之间的距离,将其划分为簇。

15、理想解法(TOPSIS法)
通过测度各个被测评对象的指标向量与评价的理想解和负理想解的性对距离进行测评排序,同时计算各评价对象的综合评价指数。

TOPSIS法是评价类的较稳定的方法,靠数据说话。
相对于熵权法,我个人比较看好topsis法。

16、模糊综合评价法
根据模糊数学的隶属度理论把定性评价转化为定量评价,用模糊数学对受到多种因素制约的事务或对象做出一个总体的评价。

模糊综合评价法也是评价体系的一个常用方法,在很多优秀论文中常出现。
一般是用其与其他模型搭配使用。
预测类问题:

17、时间序列法
系统中某一变量的观测值按时间序列(时间间隔相同)排列成一个数值序列,展示研究对象在一定时期内的变动过程;从中寻找和分析事物的变化特征、发展趋势和规律。

时间序列法和回归分析的模块大小相差不多,也是非常重要。
对于许多时间预测问题都可以用,例如要知道ARMAARMA等的大致原理。
一般使用SPSS,时间序列里的专家建模模式会推选一个最优模型。很给力。

18、灰色理论方法
通过对原始数据的处理挖掘系统变动规律,建立相应微分方程,从而预测事物未来发展状况。

优点:对于不确定因素的复杂系统预测效果较好,且所需样本数据较小;

缺点:基于指数率的预测没有考虑系统的随机性,中长期预测精度较差。

 灰色系统方法是国内的邓聚龙八二年提出的,发展了进40年了。
 如果用于预测:
 最佳情况是因为已知数据不多,不多的标准大概为 大于10小于30。
 如果大于了30那就用时间序列更好,毕竟灰色系统现在的争议还是挺大的。
 美赛尽量不要用。

19、蒙特卡罗法(比赛常用,适用于排队论、检验类问题)
该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟可以来检验自己模型的正确性。

当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时;

通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。

蒙特卡罗方法的解题过程:构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。

蒙特卡罗法,需要靠编程的队友会,用于检验模型的正确性,放到论文里有锦上添花的作用。

20、现代优化算法(适用于优化类、预测类问题)
最优化理论的三大非经典算法:模拟退火法、神经网络法、遗传算法。

它们主要用于解决一些较困难的最优化问题的算法,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用。

BP神经网络算法采用Widrow­Hoff学习算法和非线性可微转移函数的多层网络,在理论上可以逼近任意函数,可以用来分类、预测和建立模型等。

模拟退火算法是基于Monte­Carlo迭代求解策略的一种随机寻优算法,其出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。

遗传算法是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。

模拟退火、神经网络、遗传算法,这些涉及到的东西就更深了,三大非经典算法拿出一个都是万金油。
尤其是神经网络,就是机器学习中的知识。
靠计算机的训练学习,再通过校验,如此反复,迭代。得出模型。
究其原理就像一个无底洞,会用这个万金油即可。
另外两个都是用于求最优解,遗传模拟生物间的优胜劣汰,模拟退火随机择优。

四、模型求解与优化

【1】数值优化方法
如果目标函数或约束条件中包含非线性函数的规划问题为非线性规划,求解非线性规划可用梯度法、牛顿法、拟牛顿法、高斯·塞德尔迭代法,BFGS等一系列方法。

非线性规划(一):定义与数值优化方法(梯度法、牛顿法、拟牛顿法、变尺度法)

非线性规划(二): Matlab 求解约束极值问题

【2】组合优化算法
一些用于模型求解的启发式算法,主要针对很难求解的NP问题。

现代优化算法 (一):模拟退火算法 及应用举例

现代优化算法 (二): 遗传算法 及应用举例

现代优化算法(三):禁忌搜索算法

现代优化算法(四):改进的遗传算法

现代优化算法(五): 蚁群算法

【3】差分方程模型
差分方程是包含未知函数的差分及自变数的方程。主要用于时间序列模型和求解常微分方程。在求微分方程的数值解时,常用差分来近似微分,所导出的方程就是差分方程。通过解差分方程来求微分方程的近似解,是连续问题离散化的一个例子。

差分方程模型(一):模型介绍与Z变换

差分方程模型(二):蛛网模型

差分方程模型(三): 预测商品销售量

差分方程模型(四):遗传模型

【4】常微分方程的解法
建立微分方程只是解决问题的第一步,通常需要求出方程的解。而绝大多数变系数方程、非线性方程都是所谓“解不出来”的,对于用微分方程解决实际问题来说,数值解法就是一个十 分重要的手段.

常微分方程的解法 (一): 常微分方程的离散化 :差商近似导数、数值积分方法、Taylor 多项式近似

常微分方程的解法 (二): 欧拉(Euler)方法

常微分方程的解法 (三): 龙格—库塔(Runge—Kutta)方法 、线性多步法

常微分方程的解法 (四): Matlab 解法

【5】偏微分方程的数值解
自然科学与工程技术中,事物运动发展过程与平衡现象的规律常是含有未知函数及其导数的方程,而偏微分方程是只含有未知多元函数及其偏导数的方程。

偏微分方程的数值解(一):定解问题 & 差分解法

偏微分方程的数值解(二): 一维状态空间的偏微分方程的 MATLAB 解法

偏微分方程的数值解(三): 化工应用实例 ———-触煤反应装置内温度及转换率的分布

偏微分方程的数值解(四): 化工应用————扩散系统之浓度分布

偏微分方程的数值解(五): 二维状态空间的偏微分方程的 MATLAB 解法

偏微分方程的数值解(六): 偏微分方程的 pdetool 解法

【6】稳定状态模型
对于某些主要研究某种意义下稳定状态的特征的实际问题,或当时间充分长以后动态过程的变化趋势,为了分析这种稳定与不稳定的规律常常不需要求解微分方程,而可以利用微分方程稳定性理论直接研究平衡状态的稳定性。

稳定状态模型 (一): 微分方程稳定性理论简介 :自治系统、动力系统、相平面、相图、轨线 、 奇点、孤立奇点;

稳定状态模型 (二):再生资源的管理和开发:资源增长模型 、资源开发模型 、经济效益模型、 种群的相互竞争模型

稳定状态模型 (三):Volterra 模型

【7】变分法模型
动态过程的另一类问题——动态优化问题,一般要归结为求最优控制函数使某个泛函达到极值。变分法是研究泛函极值问题的一种经典数学方法,博文中还介绍了动态系统最优控制问题求解的必要条件和最大值原理。

动态优化模型/ 变分法:泛函、极值、变分

变分法模型的运用:生产设备的最大经济效益

五、数学建模:绘图经验总结

讲解视频
【数学建模绘图系列教程】一、图表类型和工具选择

B站Link:https://www.bilibili.com/video/BV1jg411Z7di

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关链接
讲义中出现的链接放置如下:

神经网络绘图模板:https://github.com/dair-ai/ml-visuals
Echarts官网:https://echarts.apache.org/examples/zh/index.html#chart-type-custom
Pyecharts官网:https://gallery.pyecharts.org/#/README
Seaborn官网:https://seaborn.pydata.org/tutorial.html
Matplotlib官网:https://www.matplotlib.org.cn/gallery/#widgets

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐