本文是datewhale的数学建模导论课程笔记。
在本章中学到了数学建模中的数据处理和常见的数据模型,主要涉及到的知识有:
- 数据与大数据
- Python数据预处理
- 常见的统计分析模型
- 随机过程与随机模型
- 数据可视化
1.数据与大数据
数据:古希腊的先哲毕达哥拉斯说“万物皆数”,物理学中充满了数据,化学中充满了数据,计算机科学本身也有数据,并且即使是社会学、经济学乃至新闻领域,都充满了量化研究的影子。而这些都是广义的“数据”。因为数据的主要目的,是为了描述信息 和信息的传递。
大数据:而大数据则是指规模庞大、结构复杂的数据集合,通常需要先进的技术和工具来存储和分析,例如云计算和人工智能。大数据通常具有四个特征:数据量大、数据种类多、数据生成速度快和数据价值密度低。大数据可以帮助企业和组织进行深入分析,以获得更好的决策和洞察。
2.Python数据预处理
为什么需要数据的预处理?
因为得到的原始数据往往非常混乱、不全面、模型往往无法从中提取到有效的信息。所以在数据采集完之后,,建模的首要步骤就是数据预处理。数据中的每一列称为一个属性,有多少个属性又可以称为有多少维。
在这里提一个稀疏的概念:当表格中列数超过行数的1/2就可以说是有些稀疏了,如果列数是行数的3倍那它就是严重的稀疏数据。 |
使用pandas处理数据的基础
下面是pandas dataframe的基础语法
数据的规约
数据为何需要规约?
因为实际应用中数据的分布可能是有偏的,量纲影响和数值差异可能会比较大。规约是为了形成对数据的更高效表示,学习到更好的模型。它会保留数据的原始特征,但对极端值、异常值等会比较敏感。这里只看两个比较典型的规约方式:min-max规约和Z-score规约。
min-max规约表达式:
这一操作的目的是为了消除量纲影响,所有的属性都被规约到[0,1]的范围内,数据的偏差不会那么大。但是如果出现异常值,比如非常大的数值,那么这个数据的分布是有偏的。
Z-zcore规约:
3.常见的统计分析模型
回归分析与分类分析
回归分析与分类分析都是一种基于统计模型的统计分析方法。它们都研究因变量(被解释变量)与自变量(解释变量)之间存在的潜在关系,并通过统计模型的形式将这些潜在关系进行显式的表达。不同的是,回归分析中因变量是连续变量,而分类分析中的因变量是属性变量。
-
回归分析:
- 目的:预测一个连续变量(因变量)与一个或多个自变量之间的关系。
- 示例:在学生刚入大学时,大学通常会举办一个大学入学考试,该成绩虽然没什么用,但是能让刚入学的学生保持持续学习的警示。现在,我们想分析大学成绩GPA是否与入学成绩以及高考成绩有关?
-
分类分析:
- 目的:将数据分成不同的类别或组,通常用于预测一个离散变量(目标变量)。
- 示例:ST是我国股市特有的一项保护投资者利于的决策,当上市公司因财务状况不佳导致投资者难以预测其前景时,交易所会标记该公司股票为ST,并进行一系列限制措施。我们想研究被ST的公司其背后的因素,并尝试通过利用公司的财务指标提前预测某上市公司在未来是否会被ST。
假设检验
在数模中,我们既可以通过假设检验对数据进行探索性的信息挖掘,还能对选择模型提供充分的依据,又能在建模完成后,通过特定的假设检验验证模型的有效性。
假设检验大体上可分为两种:参数假设检验与非参数假设检验。若假设是关于总体的一个参数或者参数的集合,则该假设检验就是参数假设检验,刚刚的例子的假设是关于总体均值的,均值是参数,因此这是一个参数假设检验;若假设不能用一个参数集合来表示,则该假设检验就是非参数假设检验,一个典型就是正态性检验。
(1)正态性检验:于参数检验比非参数检验更灵敏,因此一旦数据是正态分布的,我们应该使用参数检验,此时对数据进行正态性检验就非常有必要了。在这里,我们提供了三种方法对帮助大家判断数据的正态性:可视化判断-正态分布概率图;Shapiro-Wilk检验;D'Agostino's K-squared检验。
(2)两组样本的均值相等性检验::两个样本中,一个样本中的受试不能影响另一个样本中的受试,因此,我们可以认为这是两个独立的样本。若两个样本的总体都服从正态分布,那么我们可以使用双样本t检验。如果不服从正态分布,则可以使用Mannwhitneyu秩和检验,Mannwhitneyu秩和检验是一种非参数检验。
随机过程与随机模拟
随机过程是指在一定的概率空间中,随着时间的推移而变化的一组随机变量。它用来描述系统随时间演变的随机特性,常用于金融、物理等领域。
随机模拟是利用计算机生成随机样本,以近似模拟真实过程的方法。通过随机模拟,可以在不知道系统精确模型的情况下,估计其行为和性质,广泛应用于风险评估、优化问题等。
4.数据可视化
数据可视化在一般情况下可以分为:在分析过程中的数据可视化与分析结果表达中的数据可视化。分析过程中的数据可视化强调辅助分析,即图表不是很在意观感如何,只要自己能看懂,自己从图表中得到有用的结论并辅助分析的流程其实就可以了。而分析结果表达中的数据可视化强调在阅读数据分析结论的人能更好地知道分析结论是什么,因此相对于分析过程中的数据可视化来说更加美观、表达的信息更全面。
一个好的数据可视化图标需要哪些要求:
- 图表展示的信息全面且无歧义
- 图表表达的信息越多、越全面越好
- 通俗易懂,不能太专业
Python三大数据可视化工具库简介
-
Matplotlib
-
Seaborn
-
Plotnine
(1)Matplotlib:Matplotlib正如其名,脱胎于著名的建模软件Matlab,因此它的设计与Matlab非常相似,提供了一整套和Matlab相似的命令API,适合交互式制图,还可以将它作为绘图控件,嵌入其它应用程序中。同时,Matplotlib是Python数据可视化工具库的开山鼻祖。
(2)Seaborn:Seaborn主要用于统计分析绘图的,它是基于Matplotlib进行了更高级的API封装。Seaborn比matplotlib更加易用,尤其在统计图表的绘制上,因为它避免了matplotlib中多种参数的设置。Seaborn与matplotlib关系,可以把Seaborn视为matplotlib的补充。
(3)Plotnine:gplot2奠定了R语言数据可视化在R语言数据科学的统治地位,R语言的数据可视化是大一统的,提到R语言数据可视化首先想到的就是ggplot2。数据可视化一直是Python的短板,即使有Matplotlib、Seaborn等数据可视化包,也无法与R语言的ggplot2相媲美,原因在于当绘制复杂图表时,Matplotlib和Seaborn由于“每一句代码都是往纸上添加一个绘图特征”的特性而需要大量代码语句。Plotnine可以说是ggplot2在Python上的移植版,使用的基本语法与R语言ggplot2语法“一模一样”,使得Python的数据可视化能力大幅度提升为什么ggplot2和Plotnine会更适合数据可视化呢?原因可以类似于PhotoShop绘图和PPT绘图的区别,与PPT一笔一画的绘图方式不同的是,PhotoShop绘图采用了“图层”的概念,每一句代码都是相当于往图像中添加一个图层,一个图层就是一类绘图动作.
5.插值模型
线性插值法
线性插值对两个点中的解析式是按照线性方程来建模的。比如得到原始数据列(y)和数据的下标(x), 这里数据下表x可能并不是固定频率的连续取值而是和y一样存在缺失的。给定了数据点(xk,yk)和(xk+1,yk+1),需要对两个点之间构造直线进行填充。很显然,根据直线的点斜式方程,这个直线解析式为:
三次样条插值
三次样条插值是一种非常自然的插值方法。它将两个数据点之间的填充模式设置为三次多项式。它假设在数据点(xk,yk)和(xk+1,yk+1)之间的三次式叫做Ik,那么这一组三次式需要满足条件:
拉格朗日插值
对于一组数据{y}和下标{x},定义n个拉格朗日插值基函数:
这本质上是一个分式,当x=xk时lk(x)=1,这一操作实现了离散数据的连续化。按照对应下标的函数值加权求和可以得到整体的拉格朗日插值函数: