python学习笔记第二十天------------数据分析之建模理论基础
文章目录
一、工作环境准备及数据分析建模理论基础
1.1 Python版本
Python 2 or Python 3
- Python 2.x 是早期版本,Python 3.x是当前版本
- Python 2.7 (2.x的最终版)于2010年发布后很少有大的更新
- Python 2.x 比 Python3.x 拥有更多的工具库
- 大多数Linux系统默认安装的仍是 Python 2.x
- 版本选择取决于要解决的问题
建议选择 Python 2.x 的情况:
- 部署环境不可控,Python版本不能自行选择
- 某些工具库还没有提供支持 Python 3.x。
- 如果选择使用 Python 3.x,需要确定要用的工具库支持新版本。
1.2 Python环境及IDE
Python环境
Anaconda(水蟒)
:是一个科学计算软件发行版,集成了大量常用扩展包的环境,包含了 conda、Python 等 180 多个科学计算包及其依赖项,并且支持所有操作系统平台。下载地址:https://www.continuum.io/downloads
安装包:pip install xxx
,conda install xxx
卸载包:pip uninstall xxx
,conda uninstall xxx
升级包:pip install upgrade xxx
,conda update xxx
IDE
Jupyter Notebook:
命令:jupyter notebook
- Anaconda自带,无需单独安装
- 实时查看运行过程
基本的web编辑器(本地)
- .ipynb 文件分享
- 可交互式
- 记录历史运行结果
IPython:
命令:ipython
- Anaconda自带,无需单独安装
Python的交互式命令行 Shell
- 可交互式
- 记录历史运行结果
- 及时验证想法
Spyder:
命令:spyder
- Anaconda自带,无需单独安装
- 完全免费,适合熟悉Matlab的用户
功能强大,使用简单的图形界面开发环境
二、编码回顾和Python 3.x新特性
2.1 字符串编码格式回顾:
-
ASCII
:早起计算机保存英文字符的编码方式 -
GB2312
:对ASCII的中文扩展 -
GBK/GB18030
:包括了GB2312的所有内容,同时又增加了近20000个新的汉字和符号 -
Unicode
:包括了全球的符合和编码。每个字符用3~4个字节表示,浪费空间 -
UTF-8
:可变长的编码方式,在互联网上使用最广泛的一种Unicode的实现方式,根据语种决定字符长度,如一个汉字3个字节,一个字母1个字节,也是Linux环境下默认编码格式。
2.2 Python3.x 常用的新特性
-
print() 是函数,不是一个语句
-
raw_input()输入函数,改为 input()
-
Python 3 对文本和二进制数据做了更为清晰的区分。
- 文本由unicode表示,为str类型
- 二进制数据由bytes (字节包)表示,为bytes类型
-
新增数据类型 bytes (字节包),代表二进制数据以及被编码的文本字符串前有个前缀
b
-
Python3中 bytes 与 str 转换
- str 可以编码(encode)成 bytes
- bytes 可以解码(decode)成 str
-
字符串格式化输出方式:新增format()方式
-
dict类型变化
之前的 iterkeys(), itervalues(), iteritems(),
改为现在的 keys(), values(), items()
三、数据分析
3.1 什么是数据分析
数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。这一过程也是质量管理体系的支持过程。在实用中,数据分析可帮助人们作出判断,以便采取适当行动。
3.2 数据分析的过程
1. 数据收集:本地数据或者网络数据的采集与操作。
2. 数据处理:数据的规整,按照某种格式进行整合存储。
3. 数据分析:数据的科学计算,使用相关数据工具进行分析。
4. 数据展现:数据可视化,使用相关工具对分析出的数据进行展示。
3.3 数据分析的工具
-
SAS
:SAS(STATISTICAL ANALYSIS SYSTEM,简称SAS)公司开发的统计分析软件,是一个功能强大的数据库整合平台。价格昂贵,银行或者大企业才买的起,做离线的分析或者模型用。 -
SPSS
:SPSS(Statistical Product and Service Solutions,统计产品与服务解决方案)是IBM公司推出的一系列用于统计学分析运算、数据挖掘、预测分析和决策支持任务的产品,迄今已有40余年的成长历史,价格昂贵。 -
R/MATLAB
:适合做学术性质的数据分析,在实际应用上需要额外转换为Python或Scala来实现,而且MATLAB(MathWorks公司出品的商业数学软件)是收费的。 -
Scala
:是一门函数式编程语言,熟练使用后开发效率较高,配合Spark适合大规模的数据分析和处理,Scala的运行环境是JVM。 -
python
:Python在数据工程领域和机器学习领域有很多成熟的框架和算法库,完全可以只用Python就可以构建以数据为中心的应用程序。在数据工程领域和机器学习领域,Python非常非常流行。
四、数据建模基础
4.1 大数据分析场景和模型应用
数据分析建模需要先明确业务需求,然后选择是 描述型分析 还是 预测型分析。
- 如果分析的目的是描述目标行为模式,就采用描述型数据分析,描述型分析就考虑 关联规则、 序列规则 、 聚类 等模型。
- 如果是预测型数据分析,就是量化未来一段时间内,某个事件的发生概率。有两大预测分析模型, 分类预测 和 回归预测。
4.2 常见的数据建模分类
4.2.1 分类与回归
- 分类:是通过已有的训练样本去训练得到一个最优模型,再利用这个模型将输入映射为相应的输出,对输出进行简单的判断从而实现分类的目的,也就具有了对未知数据进行分类的能力。
- 回归:是基于观测数据建立变量间适当的依赖关系,以分析数据内在的规律,得到响应的判断。并可用于预报、控制等问题。
应用:
信用卡申请人风险评估、预测公司业务增长量、预测房价,未来的天气情况等
原理:
- 回归:用属性的 历史数据 预测未来趋势。算法首先假设一些已知类型的函数可以匹配目标数据,然后分析匹配后的误差,确定一个与目标数据匹配程度最好的函数。回归是对真实值的一种 逼近预测。
- 分类:将数据映射到 预先定义的 群组或类。算法要求基于数据 特征值 来定义类别,把具有某些特征的数据项映射到给定的某个类别上。分类并没有逼近的概念,最终正确结果只有一个。 在机器学习方法里,分类属于监督学习。
区别:
分类模型采用 离散预测值,回归模型采用 连续的预测值。
4.2.2 聚类
- 聚类:就是将相似的事物聚集在一起,不相似的事物划分到不同的类别的过程。
- 聚类分析:又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法,同时也是数据挖掘的一个重要算法。
应用:
根据症状归纳特定疾病、发现信用卡高级用户、根据上网行为对客户分群从而进行精确营销等。
原理:
在没有给定划分类的情况下,根据信息相似度进行信息聚类。
聚类的输入是一组 未被标记的数据,根据样本特征的距离或相似度进行划分。划分原则是保持最大的组内相似性和最小的组间相似性。
不同于分类,聚类事先 没有任何训练样本,直接对数据进行建模。聚类分析的目标,就是在相似的基础上收集数据来分类。 在机器学习方法里,聚类属于无监督学习。
4.2.3 时序模型
- 不管在哪个领域中(如金融学、经济学、生态学、神经科学、物理学等),时间序列(time series)数据都是一种重要的结构化数据形式。在多个时间点观察或测量到的任何事物,都可以形成一段时间序列。时间序列大多都是固定频率的,数据点将根据某种规律定期出现。
应用:
下个季度的商品销量或库存量是多少?明天用电量是多少?今天的地铁13号线的人流情况?
原理:
描述 基于时间或其他序列的 经常发生的规律或趋势,并对其建模。 与回归一样,用已知的数据预测未来的值,但这些数据的区别是 变量所处时间的不同。重点考察数据之间在 时间维度上的关联性。