Python数据分析与实战挖掘

《Python数据分析与实战挖掘》 张良均
基础篇
书推荐:《用python做科学计算》

扩展库 简介
Numpy数组支持,以及相应的高效处理函数
Scipy矩阵支持,以及相应的矩阵数值计算模块
Matplotlib强大的数据可视化工具、作图库
Pandas强大、灵活的数据分析和探索工具
StatsModels 统计建模和计量经济学,包括描述统计、统计模型估计和推断
Scikit-Learn支持回归、分类、聚类等的强大机器学习库
Keras深度学习库,用于建立神经网络以及深度学习模型
Gensim 文本主题模型的库,文本挖掘用

①Numpy
提供了数组功能,以及对数据进行快速处理的函数。是Scipy、Matplotlib、Pandas等高级扩展库的依赖库。其内置函数处理速度是C语言级别的。
②Scipy
包含最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程常用的计算
③Matplotlib
提供二维绘图,也可以三维绘图,与Matlab相似但更为丰富
使用时如果使用中文无法正常显示,需要作图前手动指定默认字体为中文,如SimHei
④Pandas
python下最强大的数据分析和探索工具。构建在Numpy之上。
支持类似于SQL的增删改查,有丰富的数据处理函数,支持时间序列分析功能,支持灵活处理缺失数据等
Pandas基本的数据结构实Series和DataFrame,序列(一维数组)和表格(二维数组)
⑤StatsModels
Pandas着眼于数据的读取、处理和探索;而StatsModels更注重数据统计建模分析(R的味道)
StatsModels和Pandas——python最强数据挖掘组合
⑥Scikit-Learn
机器学习库,包括数据预处理、分类、回归、聚类、预测和模型分析等;依赖于NumPy、SciPy、Matplotlib
⑦Keras
Scikit-Learn没有人工神经网络模型,Keras用于搭建神经网络,是一个机遇Theano的深度学习库。
安装Keras前需要安装Numpy、Scipy和Theano,安装Theano要先准备一个C++编译器。在windows下需要先安装MinGW(Windows下的GCC和G++),然后安装Theano,最后Kera。如果要实现GPU加速还要配置CUDA
⑧Gensim
用于处理语言方面的任务,如文本相似度计算、LDA、Word2Vec等

数据探索
1、数据质量分析:检查原始数据中是否存在不符合要求的数据。主要包括缺失值、异常值、不一致值、重复数据及特殊符号数据
缺失值,包括记录缺失和记录的某字段缺失等
产生原因:无法获取、遗漏、属性值不存在;
影响:有用信息缺乏、不确定性加重、不可靠
异常值,不合常理的数据,剔除可消除不良影响,分析可进行改进。异常值分析也称离群点分析。
常用的分析方法:简单统计量分析(如max、min);3σ原则(99.7%);箱型图(QL-1.5IQR,QU+1.5IQR)
一致性分析:直属局矛盾性、不相容性
产生原因:数据集成过程中,数据来自不同数据源,存放等未能进行一致性更新
2、数据特征分析
分布分析:数据分布特征与分布类型
①定量数据分布分析:求极差( 最大值与最小值之间的差距;即最大值减最小值后所得之数据 )——决定组距和组数——决定分点——列频率分布表——绘频率分布直方图
②定性数据分布分析:采用分类类型来分组,用饼图或条形图来描述分布
对比分析:两个指标进行比较,展示说明大小水平高低,速度快慢,是否协调等
①绝对数比较
②相对数比较:结构相对数(比重),比例相对数(比值),比较相对数(同类不同背景),强度相对数(密度),计划完成程度相对数,动态相对数
统计量分析:统计描述
集中趋势:均值、中位数、众数
离中趋势:极差、标准差、变异系数(CV=标准差/平均值*100%)、四分位数间距(上下四分位数之差)
周期性分析:是否随时间呈周期变化趋势
贡献度分析:又称帕累托分析,原理是帕累托法则,又称20/80定律。同样的投入在不同的地方产生不同的收益。
相关性分析
①直接绘制散点图
②绘制散点图矩阵,对多个变量两两关系的散点图
③计算相关系数,[1]Pearson相关系数(要求数据服从正态分布);[2]Spearman秩相关系数。两者都要经过假设检验,t检验方法检验其显著性水平以确定其相关成。正态分布下,二者效率等价。对连续测量值,更适合pearson相关系数。[3]判定系数r²
3、主要函数
主要是Pandas用于数据分析和Matplotlib用于数据可视化
Pandas主要统计特征函数

sum 总和(按列)
mean 算数平均值
var 方差
std 标准差
corr Spearman/Pearson相关系数矩阵
cov 协方差矩阵
skew 偏度(三阶矩)
kurt 峰度(四阶矩)
describe 基本描述

cumsum 依次给出前1-n个数的和
cumprod 依次给出前1-n个数的积
cummax 。。。最大值
cummin 。。。最小值
rolling_sum(D,n)、rolling_mean。。。。D中相邻n个数的计算特征

统计作图函数,基于Matplotlib
Python主要统计作图函数

plot 绘制线性二维图,折线图
pie 绘制饼图
hist 绘制二维条形直方图
boxplot 绘制箱型图 Pandas
plot(logy=True) 绘制y轴的对数图形 Pandas
plot(yerr=error) 绘制误差条形图 Pandas

作图前通常要加上以下代码
import matplotlib.pyplot as plt #导入图像库
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
plt.figure(figsize=(7,5))#创建图像区域,指定比例
完成后用plt.show()显示


数据预处理
数据清洗:删除原始数据集中的无关数据、重复数据、平滑噪声数据,处理缺失值、异常值等
①缺失值处理
删除记录、数据插补、不处理
常用插补方法

均值/中位数/众数 根据属性值类型,取均值、中位数、众数进行插补
使用固定值 将缺失属性用常量替代
最近邻插补法 在记录中找到与缺失样本最接近的样本的该属性值进行插补
回归方法 根据已有数据和与其有关的其他变量数据建立拟合模型来预测
插值法 建立合适的插值函数f(x),未知值计算得到。

拉格让日插值法、牛顿插值法。前者不灵活,增删节点要重来。Scipy库中提供前者。
例:将异常点取空,然后取缺值点前后5个值进行拉格朗日插值

②异常值处理:异常值是否剔除看情况,因为有些异常值可能含有有用信息
常用异常值处理方法

删除记录 直接删除
视为缺失值 视为缺失值进行缺失值的处理
平均值修正 取前后两个正常值的平均
不处理 判断其原因,若无问题直接使用进行挖掘


数据集成:将多个数据源合并存在一个一致的数据存储中,要考虑实体识别问题和属性冗余问题,从而将数据在最低层上加以转换、提炼和集成
①实体识别:同名异义、异名同义、单位不统一
②冗余属性识别:多次出现、同属性不同名导致重复

数据变换:对数据规范化处理
①简单函数变换,如平方、开方、对数、差分运算
②规范化,也称归一化,消除量纲和取值范围的差异,进行标准化处理。映射到[-1,1]或[0,1]内。
[1]最小-最大规范化,也称离差标准化。x*=(x-min)/(max-min);缺点:异常值影响;之后的范围限制在[min,max]中
[2]零-均值规范化,也称标准差规范化,处理后[0,1]。x*=(x-mean)/std
[3]小数定标规范化,移动属性值小数位,映射到[-1,1]。x*=x/10^k
③连续属性离散化:分类算法需要离散形式,如ID3、Apriori等
离散化过程就是在取值范围内设立若干个离散花粉店,将取值范围划分为离散区间
等宽法、等频发、基于聚类分析方法
④属性构造
⑤小波变换:信号分析手段,小波分析的理论和方法在信号处理、图像处理、语音处理、模式识别、量子物理等领域得到越来越广泛的应用

数据规约:产生更小且保持数据完整性的新数据集。意义在于降低无效、错误数据;降低存储成本;少量且具有代表性的数据大幅加快。
①属性规约:属性合并或删除无关维,目标是寻找最小子集使子集概率分布尽可能与原来相同
属性规约常用方法

合并属性 将就属性合并为新属性 {A1,A2,A3,B1,B2,C}——{A,B,C}
逐步向前选择 从空集开始,逐个加入最优属性,直到无最优或满足条件 {}—{A1}—{A1,A4}
逐步向后删除 从全集开始,每次删除最差属性,直到无最差或满足阈值
决策树归纳 利用决策树归纳能力进行分类,删除未出现的属性,即效果差的属性
主成分分析 用少量变量解释大部分变量,保留大部分信息,将相关性高的数据转为彼此独立


②数值规约:通过选择替代的、较小的数据来较少数据量,包括有参数(回归、对数线性模型)和无参数方法(直方图、聚类、抽样)

Python主要数据预处理函数

interpolate 一维、高维插值,如拉格朗日、样条插值等 Scipy
unique 去除重复 Pandas/Numpy
isnull 判断是否为空 Pandas
notnull 判断是否非空 Pandas
PCA 主成分分析 Scikit-Learn
random 生成随机矩阵 Numpy



挖掘建模
分类与预测
主要分类与预测算法

回归分析 确定预测值与其他变量关系。线性、非线性、Logistic、岭回归、主成分回归等
决策树 自顶向下分类
人工神经网络 用神经网络表示输入与输出之间的关系
贝叶斯网络 又称信度网络,是不确定知识表达和推理领域最有效的理论模型之一
支持向量机 将低维非线性可分转化为高维线性可分进行分析


主要回归模型分类

线性回归 因/自变量是线性关系 对一个或多个自/因变量线性建模,用最小二乘法求系数
非线性回归 因/自变量是非线性 非线性建模
Logistic回归 因变量为0或1 广义线性回归特例,利用Logistic函数将因变量控制0-1内表示取值为1的概率
岭回归 参与建模的自变量间具有多重共线性 改进的最小二乘法
主成分回归 同上 根据PCA提出,是参数估计的一种有偏估计


逻辑回归——Scikit-Learn
决策树——sklearn.tree;输出一个tree.dot文件,许安装Graphviz进行可视化
人工神经网络——keras

BP神经网络 信息正传播,误差逆传播
LM神经网络 给予梯度下降法和牛顿法的多层前馈神经网络,迭代次数少,收敛块,精度高
RBF径向基神经网络 能以任意精度逼近任意连续函数,输入层-隐含层是非线性,隐含层-输出成是线性,特别适合解决分类问题
FNN模糊神经网络 具有模糊权系数或输入信号是模糊两的神经网络,汇聚NN和模糊系统的有点
GMDH神经网络 也称多项式网络,网络结构在训练中变化
ANFIS自适应神经网络 NN镶嵌在一个全模糊的结构中,自动产生、修正、高度概括出最佳隶属函数和模糊规则

SVM——sklearn.svm
随机森林——sklearn.ensemble
朴素贝叶斯——sklearn.naive_bayes
建模的第一步都是建立一个空白的对象,然后设置模型参数,利用fit进行巡林啊,最后用predict方法预测结果,之后进行一些评估如score等

误差评价:绝对误差、相对误差、平均绝对误差、均方误差、均方根误差、平均绝对百分误差、Kappa统计、识别准确度、识别精确率、反馈率、ROC曲线、混淆矩阵

聚类分析
常用方法:划分方法、层次分析方法、基于密度的方法、基于网格的方法、给予模型的方法
常用算法:K-Means、K-中心点、系统聚类(多层次聚类)
评价方法:purity评价法(正确的比例)、RI评价法、F值评价法
聚类可视化工具——TSNE

关联规则:也称为购物篮分析,目标是找出各项之间的关系
常用算法:Apriori、FP-Tree、Eclat算法、灰色关联法

时序模式:给定一个已被观测的时间序列,预测该序列的未来值
常用模型:平滑法、趋势你合法、组合模型、AR模型、MA模型、ARMA模型、ARIMA、ARCH、GARCH模型及衍生
python主要时序算法函数:acf自相关,plot_acf画自相关系数图、pacf计算偏相关系数、plot_pacf画偏相关系数图、adfuller对观测值序列进行单位根检验、diff差分计算、ARIMA创建ARIMA时序模型、summary或summaty2给出ARIMA模型报告、aic/bic/hqic计算ARIMA模型的指标值、forecast预测、acorr_ljungbox检验白噪声

离群点检测
成因:数据源不同、自然变异、测量和收集误差
类型:全局离群点和局部离群点;数值型离群点和分类型离群点;一维离群点和多维离群点
检测方法:基于统计、基于邻近度、基于密度、基于聚类

你可能感兴趣的:(Python,数据分析)