Python数据分析与挖掘实战PPT完整全套教学课件_第1页
Python数据分析与挖掘实战PPT完整全套教学课件_第2页
Python数据分析与挖掘实战PPT完整全套教学课件_第3页
Python数据分析与挖掘实战PPT完整全套教学课件_第4页
Python数据分析与挖掘实战PPT完整全套教学课件_第5页
已阅读5页,还剩627页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据挖掘基础第1章数据挖掘基础第2章Python数据分析简介第3章数据探索第4章数据预处理第5章数据挖掘算法基础-(1)分类与回归第5章数据挖掘算法基础-(2)聚类第5章数据挖掘算法基础-(3)关联规则第5章数据挖掘算法基础-(4)智能推荐第5章数据挖掘算法基础-(5)时间序列第5章数据挖掘算法基础第6章信用卡高风险客户识别第7章餐饮企业菜品关联分析第8章金融服务机构资金流量预测第9章O2O优惠券使用预测第10章电视产品个性化推荐第11章基于TipDM数据挖掘建模平台实现金融服务机构资金流量预测1数据挖掘的基本任务目录数据挖掘发展史2数据挖掘的通用流程3常用数据挖掘建模工具4Python数据挖掘环境配置5数据挖掘的发展史1989年从数据库中发现知识(KDD)1995年第一届国际知识发现与数据挖掘大会1997第三届国际学术大会数据挖掘发展史数据挖掘是知识发现中的核心部分,它是指从数据集合中自动抽取隐藏在数据中的那些有价值的信息的过程。1数据挖掘的基本任务目录数据挖掘发展史2数据挖掘的通用流程3常用数据挖掘建模工具4Python数据挖掘环境配置5分类与回归预测分类是一种对离散型随机变量建模或预测的方法,如:客户流失预测;而回归是通过建模来研究变量之间相互关系的密切程度、结构状态以及进行模型预测的工具,如财政收入预测等。

数据挖掘的基本任务聚类分析代垫学生高收入贸易文书高矮低收入Group1Group2Group3Groupn

聚类分析是指在预先不知道类别标签的情况下,根据信息的相似度原则进行信息聚集的一种方法。目的是使得类别内数据的“差异性”尽可能小(即“同质性”尽可能大),类别间“差异性”尽可能大。数据挖掘的基本任务关联规则关联模式挖掘旨在从大量的数据当中发现特征之间或数据之间的相互依赖关系。这种存在于给定数据集中的频繁出现的关联模式,又称为关联规则。前项(Antecedent)后项(Consequent)蔬菜鲜鱼红酒?啤酒?前项(Antecedent)后项(Consequent)耳机?内存?手机配饰前提(1)&前提(2)&…&前提(m)

结论AntecedentsConsequentBuyingPattern

数据挖掘的基本任务智能推荐智能推荐用于联系用户和信息,并利用信息分析用户的兴趣偏好,为用户推荐感兴趣信息。数据挖掘的基本任务

时间序列

对不同时间下取得的样本数据进行挖掘,用于分析样本数据之间的变化趋势,如:股指预测、天气预测等。时间

数据挖掘的基本任务1数据挖掘的基本任务目录数据挖掘发展史2数据挖掘的通用流程3常用数据挖掘建模工具4Python数据挖掘环境配置5数据挖掘的通用流程数据挖掘的通用流程抽取数据的标准:相关性、可靠性、有效性衡量数据质量的标准:资料完整无缺,各类指标项齐全;数据准确无误,反映的都是正常状态下的水平。数据挖掘的通用流程随机抽样等距抽样分层抽样按起始顺序抽样分类抽样抽取方式:1数据挖掘的基本任务目录数据挖掘发展史2数据挖掘的通用流程3常用数据挖掘建模工具4Python数据挖掘环境配置5常用数据挖掘建模工具Python是一种面向对象、解释性的计算机程序设计语言,它拥有高效的数据结构。

R是一种由统计计算基金会支持的用于统计计算和图形的编程语言和自由软件环境,R语言及其库实现了各种各样的统计和图形技术,包括线性和非线性建模、时间序列分析、分类、聚类等。常用数据挖掘建模工具Matlab是一种主要用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言。常用数据挖掘建模工具SPSS(StatisticalProductandServiceSolutions)采用类似EXCEL表格的方式输入与管理数据,数据接口较为通用,能方便的从其他数据库中读入数据,输出结果十分美观。常用数据挖掘建模工具KNIME是基于Java开发的,采用类似数据流的方式来建立分析挖掘模型。常用数据挖掘建模工具RapidMiner也叫YALE(YetAnotherLearningEnvironment),提供图形化界面,拖拽操作,无需编程,运算速度快。常用数据挖掘建模工具TipDM开源建模平台是基于Python引擎的,可以通过拖拽功能组件的方式实现数据的输入输出,数据预处理,挖掘建模,模型评估等操作,以达到数据挖掘的目的。常用数据挖掘建模工具1数据挖掘的基本任务目录数据挖掘发展史2数据挖掘的通用流程3常用数据挖掘建模工具4Python数据挖掘环境配置5Anaconda是一个Python的集成开发环境,可以便捷的地获取库,且提供对库的管理功能,对环境可以进行统一管理。Python数据挖掘环境配置Python数据挖掘环境配置Python数据挖掘环境配置Python数据挖掘环境配置Python数据挖掘环境配置Python数据挖掘环境配置Python数据挖掘环境配置小结本章节主要介绍数据挖掘的基础知识,包括数据挖掘的发展史、基本任务、通用流程和常用工具,以及Python数据挖掘的环境配置。数据挖掘的基本任务包括分类与回归、聚类、关联规则、智能推荐、时间序列。数据挖掘的通用流程包括了目标分析、数据抽取、数据探索、数据预处理、分析与建模、模型评价。常用的挖掘工具包括了Python、R、Matlab、IBMSPSSModeler、TipDM开源数据挖掘建模平台等。

Python数据挖掘编程基础1Python数据分析预处理常用库目录Python使用入门2Python数据挖掘建模常用库和框架3赋值运算乘法运算幂运算多重赋值字符串操作基本命令基本运算a=3a*3a**3a,b,c=1,2,3#多重赋值#字符串操作a='ThisisthePythonworld'a+'Welcome!'#将a与'Welcome!'拼接,得到'ThisisthePythonworldWelcome!'a.split('')#将a以空格分割,得到列表['This','is','the','Python','world']基本命令基本运算判断语句基本命令判断与循环程序1程序2程序3if条件表达式:

elif条件表达式:

FalseTrueFalseTruefor循环语句基本命令条件表达式FalseTrue循环体while循环语句基本命令while条件表达式:True程序Falseforiinrange(1,5,1):print(i)基本命令range函数Python要像C语言的格式进行循环,实际上需要的是一个数字序列。range函数能够快速构造一个数字序列。defpea(x):returnx+1print(pea(1))#输出结果为2基本命令函数

函数是Python为了代码效率的最大化,减少冗余而提供的最基本的程序结构。Python使用def自定义函数:c=lambdax:x+1#定义函数c(x)=x+1d=lambdax,y:x+y+6#定义函数d(x,y)=x+y+6基本命令使用def定义函数需要使用规范的命名、添加计算内容,以及明确返回值,将会相对复杂。因此,Python支持使用lambda定义“行内函数”。数据结构序列类型:列表、元组映射类型:字典集合类型:可变集合、不可变集合数据结构Python中的数据结构主要分为三种类型:集合(Set)、序列(Sequence)、映射(Mapping),它们可以统称为容器(container)。数据结构数据结构列表(可变)元组(不可变)字典(可变)集合可变数据类型可以直接对数据结构对象的内容进行修改(并非是重新对对象赋值操作),即可以对数据结构对象进行元素的赋值修改、删除或增加等操作。不可变数据类型与可变数据类型不同,不可变数据类型不能对数据结构对象的内容进行修改操作(对对象当中的元素进行增加、删除和赋值修改)。(1)列表的基本操作列表的创建列表的长度列表元素计数列表的下标列表的切片与索引列表的运算列表的增、删、改、查操作数据结构列表方法功能m.append(1)将1添加到列表m末尾m.count(1)统计列表m中元素1出现的次数m.extend([1,2])将列表[1,2]的内容追加到列表m的末尾中m.index(1)从列表m中找出第一个1的索引位置m.insert(2,1)将1插入列表m的索引为2的位置m.pop(1)移除列表m中索引为1的元素(2)列表的其他常用函数数据结构函数功能函数功能cmp(m,n)比较两个列表的元素min(m)返回列表中元素最小值len(m)返回列表元素个数sum(m)将列表中的元素求和max(m)返回列表元素最大值sorted(m)对列表的元素进行升序排序(1)元组的基本操作元组的创建元组的长度元组元素计数元组的下标元组的切片与索引元组的运算元组的查询操作数据结构元组1'word'True'pear'0123-4-3-2-1在数学上,字典实际上是一个映射。字典将键映射到值,通过键来调取数据。数据结构字典123ABC数据结构集合集合既不是序列也不是映射类型,更不是标量。集合是自成一体的类型。集合是唯一的,无序的。一般通过{}或set函数创建一个集合。k={1,1,2,3,3}#注意1和3会自动去重,得到{1,2,3}k=set([1,1,2,3,3])#同样地,将列表转换为集合,得到{1,2,3}数据结构集合的运算a=f|g#f和g的并集b=f&g#f和g的交集c=f–g#求差集(项在f中,但不在g中)d=f^g#对称差集(项在f或g中,但不会同时出现在二者中)

函数式编程(Functionalprogramming)或函数程序设计,又称泛函编程,是一种编程范型。在Python中,函数式编程主要由lambda、map、reduce、filter几个函数构成。假设有一个列表a=[5,6,7],需要为列表a中的每个元素都加3,使用map函数实现并生成一个新列表:数据结构函数式编程a=[5,6,7]b=map(lambdax:x+3,a)b=list(b)print(b)#输出结果也为[8,9,10]函数式编程(Functionalprogramming)或函数程序设计,又称泛函编程,是一种编程范型。在Python中,函数式编程主要由lambda、map、reduce、filter几个函数构成。假设有一个列表a=[5,6,7],需要为列表a中的每个元素都加3,使用map函数实现并生成一个新列表:数据结构a=[5,6,7]b=map(lambdax:x+3,a)b=list(b)print(b)#输出结果也为[8,9,10]库的导入与添加库的导入Python本身内置了很多强大的库,如数学相关的math库,可以为我们提供更加丰富复杂的数学运算。#使用math库进行数学运算importmathmath.sin(2)#计算正弦math.exp(2)#计算指数math.pi#内置的圆周率常数库的导入与添加导入库中的所有函数frommathimport*#导入math库中包含的所有函数,若大量地这样引入第三库,则可能会容易引起命名冲突exp(2)sin(2)库的导入与添加添加第三方库思路特点下载源代码自行安装安装灵活,但需要自行解决上级依赖问题用pip命令安装比较方便,自动解决上级依赖问题用easy_install命令安装比较方便,自动解决上级依赖问题,比pip稍弱下载编译好的文件包一般是Windows系统才提供现成的可执行文件包系统自带的安装方式Linux或Mac系统的软件管理器自带了某些库的安装方式1Python数据分析预处理常用库目录Python使用入门2Python数据挖掘建模常用库和框架3NumPyNumPy的前身Numeric最早是由吉姆·弗贾宁(JimHugunin)与其他协作者共同开发,2005年,特拉维斯.奥利芬特(TravisOliphant)在Numeric中结合了另一个同性质的程序库Numarray的特色,并加入了其他扩展而开发了NumPy。进行科学计算的基础软件包。更多高级扩展库的依赖库。内置函数处理数据的效率较高。pandaspandas的名称源自面板数据(paneldata)和Python数据分析(DataAnalysis),最初是被作为金融数据分析工具而开发出来,由AQRCapitalManagement于2008年4月开发,并于2009年底开源。提供了快速、灵活、明确的数据结构。带有丰富的数据预处理函数。支持数据的增、删、改、查。Matplotlib是约翰·亨特(JohnHunter)在2008年左右的博士后研究中发明出来的,最初只是为了可视化癞痢病人的一些健康指标,慢慢的Matplotlib变成了Python上最广泛使用的可视化工具包。支持折线图、条形图、柱状图、饼图的绘制。支持交互式绘图和非交互式绘图。支持Linux、Windows、MacOSX与Solaris的跨平台绘图。迁移学习的成本比较低。Matplotlib1Python数据分析预处理常用库目录Python使用入门2Python数据挖掘建模常用库和框架3scikit-learn还是Python下强大的机器学习工具包,提供了完善的机器学习工具箱,是一种简单高效的数据分析和挖掘的工具。scikit-learn不仅提供了一些实例数据用于练习,还提供了很多功能接口:model.fit():用于训练模型model.predict(X_new):预测新样本model.predict_proba(X_new):预测概率model.score():得分越高,模型拟合效果越好model.transform():在fit函数的基础上,进行标准化,降维,归一化等数据处理操作model.fit_transform():fit函数和transform函数的组合,既包括了训练又包含了数据处理操作。Scikit-learn深度学习TensorflowTensorflow是基于Google2011年开发的深度学习基础框架DistBelief构建而成。主要用于搭建深度神经网络。TensorFlow即Tensor和Flow,Tensor意味着data,Flow意味着流动、计算、映射,即数据的流动、数据的计算、数据的映射,同时也体现数据是有向的流动、计算和映射的。Keras是由Python编写而成并使用TensorFlow、Theano以及CNTK作为后端的一个深度学习框架,也是深度学习框架中最容易使用的一个。Keras具有高度模块化、用户友好性和易扩展特性。支持卷积神经网络和循环神经网络,以及两者的组合。Keras可无缝衔接CPU和GPU的切换。深度学习KerasPyTorch可帮助构建深度学习项目,其强调灵活性,并允许用Python表达深度学习模型;命令式体验,直接使用nn.module封装便可使网络搭建更快速和方便;调试简单,调试PyTorch就像调试Python代码一样简单。除此之外,PyTorch中还存在着较为完备的应用领域所对应的库:深度学习PyTorch应用领域对应的PyTorch库计算机视觉TorchVision自然语言处理PyTorchNLP图卷积PyTorchGeometric工业部署FastaiPaddlePaddle支持超大规模深度学习模型的训练、多端多平台部署的高性能推理引擎等。命令式编程模式(动态图)功能、性能和体验;原生推理库性能显著优化,轻量级推理引擎实现了对硬件支持的极大覆盖。新增了CUDA下多线程多流支持、TRI子图对动态shape输入的支持,强化量化推理,性能显著优化;全面提升对支持芯片的覆盖度(包括寒武纪、比特大陆等)以及对应的模型数量和性能。深度学习PaddlePaddleCaffe是由伯克利人工智能研究所和社区贡献者共同开发的。主要应用在视频、图像处理等方面,核心语言是C++,支持命令行、Python和MATLAB接口,及支持在CPU上运行、GPU上运行,且Caffe通用性好、非常稳健、快速以及性能优异。深度学习Caffe除了前面所介绍的常用于数据挖掘建模的库之外,还有许多的库也是运用于数据挖掘建模:其他库名版本PyMySQL0.10.0SciPy1.4.1Statsmodels0.11.1XGBoost1.2.1小结本章结合了Python数据挖掘编程基础,重点介绍了Python的使用入门、Python数据分析常用库和Python数据挖掘建模常用库。结合实际操作,对Python基本语句的使用进行操作。结合实际意义与作用,对常用库进行简单的介绍。

第3章数据探索1数据特征分析目录数据校验2时间范围不一致一致性校验时间校验time_1time_22020-01-0108:35:002020-01-1710:31:002020-01-0209:16:002020-01-1811:36:002020-01-0310:33:002020-01-199:45:00…………2020-01-3015:20:002020-02-1919:27:002020-01-3121:18:002020-02-2023:55:00时间粒度不一致一致性校验unupgraded_time_1upgrade_time_22020/03/1610:35:002020/6/814:12:302020/03/1610:36:002020/6/814:13:002020/03/1610:37:002020/6/814:13:302020/03/1610:38:002020/6/814:14:002020/03/1610:39:002020/6/814:14:30时间格式不一致一致性校验order_time1end_time22020-08-1515:16:00202011051430002020-08-1515:25:00202011051435002020-08-1515:33:00202011051442002020-08-1515:40:00202011051448002020-08-1515:47:0020201105145100时区不一致一致性校验Overseas_sever_timeLocal_sever_time2020/05/1009:10:302020/05/1014:10:302020/05/1009:11:002020/05/1014:11:002020/05/1009:11:302020/05/1014:11:302020/05/1009:12:002020/05/1014:12:002020/05/1009:12:302020/05/1014:12:30同名异议一致性校验字段信息校验Number(A)Number(B)1004538109101600016210045383061016000175100453842542380003391004538333423800034810045380074238000256同名同义一致性校验Sold_dtSales_dt2020/7/012020/7/012020/7/032020/7/032020/7/102020/7/102020/7/152020/7/152020/7/242020/7/24单位不统一一致性校验Gold_coins(A)Gold_coins(B)49.56.343456.97.291743.05.510480.610.328867.28.6116信息暂时无法获取或获取信息的代价太大信息遗漏属性值不存在缺失值校验缺失值产生的原因缺失值校验缺失值产生的影响丢失大量有用信息不确定性更加显著,模型中蕴涵的规律更难把握使建模过程陷入混乱,导致不可靠的输出函数或方法名函数或方法功能使用格式isnull用于判断是否为空值pandas.DataFrame.isnull()或pandas.isnull(obj)notnull用于判断是否为非空值pandas.DataFrame.notnull()或pandas.notnull(obj)count用于计算非空元素pandas.DataFrame.count(axis=0,level=None,numeric_only=False)缺失值校验缺失值产生的校验简单统计质量分析

可以先对变量做一个描述性统计分析,进而查看哪些数据是不合理的。Python异常值检测函数或方法:异常值校验函数或方法名函数或方法功能使用格式percentile用于计算百分位数numpy.percentile(a,q,axis=None,out=None,overwrite_input=False,interpolation='linear',keepdims=False)mean用于计算平均值pandas.DataFrame.mean(axis=None,skipna=None,level=None,numeric_only=None,**kwargs)std用于计算标准差pandas.DataFrame.std(axis=None,skipna=None,level=None,ddof=1,numeric_only=None,**kwargs)函数或方法名参数名参数说明percentilea接收array_like。表示输入数组或可以转换为数组的对象。无默认值q接收浮点数的array_like。表示要计算的百分位数或百分位数的序列,必须在0到100之间(含0和100)。无默认值axis接收int、int元组、None。表示计算百分位数的一个或多个的轴。默认为Nonemeanaxis接收int。表示所要应用的功能的轴,可选0和1。默认为Noneskipna接收bool。表示排除空值。默认为Nonelevel接收int或级别名称。表示标签所在级别。默认为Nonestdaxis接收int。表示所要应用的功能的轴,可选0和1。默认为Noneskipna接收bool。表示排除NA或空值。默认为Nonelevel接收int或级别名称。表示标签所在级别。默认为Noneddof接收int。表示Delta的自由度。默认为1异常值校验

Python异常值检测函数或方法的常用参数及其说明:如果数据服从正态分布,异常值被定义为一组测定值中与平均值的偏差超过三倍标准差的值。如果数据不服从正态分布,则与平均值的偏差超过两倍标准差的数据为异常值,称为四分位距准则(IQR)。使用IQR准则和3σ原则可以检测ary=(19,57,68,52,79,43,55,94,376,4581,3648,70,51,38)中的异常值,返回为异常值的元素,并计算元组ary异常值所占的比例:异常值校验3σ原则检测方法检测的异常值异常值比例IQR准则[376,4581,3648]0.21428571428571427原则[4581,3648]0.14285714285714285

异常值校验箱型图分析1数据特征分析目录数据校验2集中趋势是指总体中各单位的次数分布从两边向中间集中的趋势,用于对比同类现象在不同的时间、地点和条件下的一般水平,反映同一总体某类现象在不同时间上变化的规律性、分析现象之间的依存关系。描述性统计分析集中趋势度量指在一组数据中所有数据之和再除以这组数据的个数均值指将一组观察值从小到大进行排列,位于中间的数据中位数指数据集中出现最频繁的值中位数离中趋势是指总体中各单位标志值背离分布中心的规模或程度,用于衡量和比较平均数代表性的大小、反映社会经济活动过程的均衡性和节奏性、衡量风险程度。描述性统计分析离中趋势度量极差数据的离散程度标准差数据偏离均值的程度变异系数标准差相对于均值的离中趋势四分位数间距标间距准差相对于均值的离中趋势pandas库的describe()方法可以给出一些基本的统计量,包括均值、标准差、最大值、最小值、分位数等。describe()方法的基本使用格式及参数说明如下:pandas.DataFrame.describe(percentiles=None,include=None,exclude=None,datetime_is_numeric=False)描述性统计分析参数名称参数说明percentiles接收int。表示要包含在输出中的百分比,须介于0~1。默认为Noneinclude接收类似dtype的列表。表示包括在结果中的数据类型的白名单。默认为Noneexclude接收类似dtype的列表型。表示从结果中忽略的数据类型黑名单。默认为Nonedatetime_is_numeric接收bool。表示是否将datetimedtypes视为数字。默认为False频率分布分析主要步骤:定量数据分组遵循的主要原则如下:各组之间必须是相互排斥的。各组必须将所有的数据包含在内。各组的组宽最好相等。分布分析定量数据的分布分析求极差决定组距与组数决定分点列出频率分布表绘制频率分布直方图对于定性数据,常根据数据的分类类型进行分组,可以采用饼图和柱形图对定性变量进行分布分析。以某餐馆的各菜系在某段时间内的销售额为例,采用定性数据的分布分析方法进行分析:分布分析定性数据的分布分析对比分析是指将两个相互联系的指标进行比较,从数量上展示和说明研究对象规模的大小、水平的高低、速度的快慢,以及各种关系是否协调,适用于指标间的横纵向比较、时间序列的比较分析。对比分析主要有以下两种形式:对比分析绝对数比较是利用绝对数进行对比,从而寻找差异的一种方法绝对数比较用于反映客观现象之间数量联系程度的综合指标相对数比较由于研究目的和对比基础不同,相对数可以分为以下几种:对比分析结构相对数将同一总体内的部分数值与全部数值对比求得比重比例相对数将同一总体内不同部分的数值对比比较相对数将同一时期两个性质相同的指标数值对比强度相对数将两个性质不同但有一定联系的总量指标对比计划完成程度相对数将某一时期实际完成数与计划数对比动态相对数将同一现象在不同时期的指标数值对比周期性分析是探索某个变量是否随着时间变化而呈现出某种周期变化趋势。以某景区2019年3月份人流量为例,根据人流量数据,制时序图,并分析景区人流量的变化趋势:周期分析贡献度分析又称帕累托分析,贡献度分析的原理是帕累托法则,又称20/80定律。以服装企业为例,根据企业对应的秋装盈利数据,绘制服装盈利帕累托图:贡献度分析判断两个变量是否具有线性相关关系的最直观的方法是直接绘制散点图。相关性分析直接绘制散点图利用散点图矩阵同时绘制各变量间的散点图,从而快速发现多个变量间的主要相关性。相关性分析绘制散点图矩阵为了更加准确地描述变量之间的线性相关程度,可以通过计算相关系数来进行相关分析。Pearson相关系数Pearson相关系数一般可用于分析两个连续性变量之间的关系,其计算公式为:相关性分析计算相关系数

相关性分析Spearman秩相关系数不服从正态分布的变量、分类或等级变量之间的关联性可采用Spearman秩相关系数,也称等级相关系数来描述。Spearman秩相关系数计算公式如下: 对两个变量成对的取值分别按照从小到大(或从大到小)顺序编秩,代表的秩次,代表的秩次,为、的秩次之差。相关性分析

一个变量秩次的计算过程:相关性分析

从小到大排序从小到大排序时的位置秩次

0.5110.8221.0331.24(4+5)/2=4.51.25(4+5)/2=4.52.3662.877判定系数定系数是相关系数的平方,可用进行表示,用于衡量回归方程对的解释程度。判定系数取值范围为

。越接近于1,表明两个变量之间的相关性越强;接近于0,表明两个变量之间几乎没有直线相关关系。相关性分析

pandas库的corr()方法可计算出列与列、变量与变量之间的成对相关系数,但不包括空值。corr()方法的基本使用格式和参数说明如下:pandas.DataFrame.corr(method='pearson',min_periods=1)相关性分析参数名称参数说明method接收方法的名称。表示计算相关系数所要使用的方法,可选pearson、kendall、spearman。默认为pearsonmin_periods接收int。表示每对列必须具有有效结果的最小观察数。默认为1小结本章主要讲解如何从数据校验和数据特征分析两个方面对数据进行探索。介绍了数据校验中的一致性、缺失值和异常值的校验方法。介绍了数据特征分析中的分布、对比、统计量、周期、贡献度和相关性分析,并相应结合了各种小案例进行演示。

第4章数据预处理1数据变换目录数据清洗2数据合并3记录重复是指数据中某条记录的一个或多个属性的值完全相同。在某企业的母婴发货记录表中,利用列表(list)对用品名称去重,查看所有的品牌名称:重复值处理记录重复defdelRep(list1):list2=[]foriinlist1:ifinotinlist2:list2.append(i)returnlist2names=list(data['品牌名称'])#提取品牌名称name=delRep(names)#使用自定义的去重函数去重重复值处理除了利用列表去重之外,还可以利用集合(set)元素为唯一的特性去重:print('去重前品牌总数为:',len(names))name_set=set(names)#利用set的特性去重print('去重后品牌总数为:',len(name_set))pandas.DataFrame.drop_duplicates(subset=None,keep='first',inplace=False)重复值处理pandas提供了一个名为drop_duplicates的去重方法。该方法只对DataFrame或Series类型有效。drop_duplicates()方法的基本使用格式和参数说明如下:参数名称参数说明subset接收str或sequence。表示进行去重的列。默认为Nonekeep接收特定str。表示重复时保留第几个数据。first:保留第一个。last:保留最后一个。false:只要有重复都不保留。默认为firstinplace接收bool。表示是否在原表上进行操作。默认为False属性内容重复是指数据中存在一个或多个属性名称不同,但数据完全相同。当需要去除连续型属性重复时,可以利用属性间的相似度,去除两个相似度为1的属性的其中一个:corr_=data[['品牌标签','仓库标签']].corr(method='kendall')print('kendall相似度为:\n',corr_)重复值处理属性内容重复重复值处理除了使用相似度矩阵进行属性去重之外,可以通过pandas库的DataFrame.equals()方法进行属性去重。DataFrame.equals()方法的基本使用格式和参数说明如下:pandas.DataFrame.equals(other)参数名称参数说明other接收Series或DataFrame。表示要与第一个进行比较的另一个Series或DataFrame。无默认值处理缺失值的方法可分为3类:删除记录、数据插补和不处理。在数据分析中常用的插补方法处理缺失值:缺失值处理插补可方法方法描述平均数/中位数/众数插补根据属性值的类型,用该属性取值的平均数/中位数/众数进行插补使用固定值将缺失的属性值用一个常量替换最近临插补在记录中找到与缺失样本最接近的样本的该属性值插补回归方法对带有缺失值的变量,根据已有数据和与其有关的其他变量(因变量)的数据建立拟合模型来预测缺失的属性值插值法插值法是利用已知点建立合适的插值函数

,未知值由对应点

求出的函数值

近似代替拉格朗日插值公式指的是在节点上给出节点基函数,然后做基函数的线性组合,组合系数为节点函数值的一种插值多项式。拉格朗日插值法的基本实现步骤如下:缺失值处理拉格朗日插值法确定原始数据因变量和自变量取缺失值前后取缺失值前后各k个数据基于拉格朗日插值多项式对全部缺失数据依次进行插补牛顿插值法也是多项式插值,与拉格朗日插值相比,具有承袭性和易于变动节点的特点。牛顿插值法的基本实现步骤如下:缺失值处理牛顿插值法计算差商计算牛顿插值多项式利用所得多项式计算所需插入缺失部分的值在数据预处理时,异常值是否剔除,需视具体情况而定,因为有些异常值可能蕴含着有用的信息。异常值处理常用方法如下:异常值处理异常值处理方法方法描述删除含有异常值的记录直接将含有异常值的记录删除视为缺失值将异常值视为缺失值,利用缺失值处理的方法进行处理平均值修正可用前后两个观测值的平均值修正该异常值不处理直接在具有异常值的数据集上进行分析建模1数据变换目录数据清洗2数据合并3简单函数变换是对原始数据进行某些数学函数变换,常用的包括平方、开方、取对数、差分运算等。平方:开方:取对数:差分运算:简单函数变换最小-最大标准化也称为离差标准化,是对原始数据的线性变换,将数值映射到[0,1]之间。其中,max为样本数据的最大值,min为样本数据的最小值。max-min为极差。数据标准化最小-最大标准化零-均值标准化也叫标准差标准化,经过处理的数据的均值为0,标准差为1。其中为原始数据的均值,为原始数据的标准差,零-均值标准化是当前用得最多的数据标准化方法。数据标准化零-均值标准化通过移动属性值的小数位数,将属性值映射到[-1,1]之间,移动的小数位数取决于属性值绝对值的最大值。其中k为属性值中绝对值最大的数值的位数。数据标准化小数定标标准化数据离散化离散化的过程:确定分类数设定离散划分点用不同符号代表落在每个子区间的数据值数据离散化常用的离散化方法:

首先将连续属性的值用聚类算法进行聚类,然后再将聚类得到的簇进行处理,合并到一个簇的连续属性值做同一标记

等宽法将属性的值域分成具有相同宽度的区间,区间的个数由数据本身的特点决定或由用户指定等宽法等频法将相同数量的记录放进每个区间等频法聚类独热编码即One-Hot编码,又称一位有效编码,是处理类型数据较好的方法,主要是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候都只有一个编码位有效。独热编码有以下优点:将离散型属性的取值扩展到欧氏空间,离散型属性的某个取值就对应欧氏空间的某个点。对离散型属性使用独热编码,可以让属性之间的距离计算更为合理。独热编码在Python中使用scikit-learn库中preprocessing模块的OneHotEncoder函数进行独热编码,该函数的基本使用格式如下:classsklearn.preprocessing.OneHotEncoder(n_values=‘auto’,categorical_features=‘all’,dtype=<class‘numpy.float64’>,sparse=True,handle_unknown=’error’)独热编码参数名称参数说明n_values接收int或arrayofints。表示每个功能的值数。默认为autocategorical_features接收all或arrayofindices或mask。表示将哪些功能视为分类功能。默认为allspares接收boolean。表示返回是稀疏矩阵还是数组。默认为Truehandle_unknown接收str。表示在转换过程中引发错误还是忽略是否存在未知的分类特征。默认为error1数据变换目录数据清洗2数据合并3多表合并堆叠合并数据横向堆叠多表合并堆叠合并数据纵向堆叠pandas.concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,verify_integrity=False,copy=True)多表合并使用pandas库的concat函数可以实现横向堆叠和纵向堆叠,concat函数的基本使用格式和常用参数说明如下:参数名称参数说明objs接收多个Series、DataFrame、Panel的组合。表示参与连接的pandas对象的列表的组合。无默认值axis接收0或1。表示连接的轴向,默认为0join接收inner或outer。表示其他轴向上的索引是按交集(inner)还是并集(outer)进行合并。默认为outerpandas.DataFrame.append(other,ignore_index=False,verify_integrity=False)多表合并除了concat函数之外,pandas库的append()方法也可以用于纵向合并两张表,append()方法的基本使用格式和常用参数说明如下:参数名称参数说明other接收DataFrame或Series。表示要添加的新数据。无默认值ignore_index接收bool。如果输入True,就会对新生成的DataFrame使用新的索引(自动产生),而忽略原来数据的索引。默认为Falseverify_integrity接收bool。如果输入True,那么当ignore_index为False时,会检查添加的数据索引是否冲突,如果冲突,那么会添加失败。默认为False主键合并,即通过一个或多个键将两个数据集的行连接起来。多表合并主键合并数据pandas库中的merge函数和join()方法都可以实现主键合并,但两者的实现方式并不相同。merge函数的基本使用格式和常用参数说明如下:pandas.merge(left,right,how='inner',on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=False,suffixes=('_x','_y'),copy=True,indicator=False)多表合并参数名称参数说明left接收DataFrame或Series。表示要添加的新数据1。无默认值right接收DataFrame或Series。表示要添加的新数据2。无默认值how接收inner、outer、left、right。表示数据的连接方式。默认为inneron接收str或sequence。表示两个数据合并的主键(必须一致)。默认为Noneleft_on接收str或sequence。表示left参数接收数据用于合并的主键。默认为Noneright_on接收str或sequence。表示right参数接收数据用于合并的主键。默认为Nonesort接收bool。表示是否根据连接键对合并后的数据进行排序。默认为False除了使用merge函数以外,join()方法也可以实现部分主键合并的功能。但是使用join()方法时,两个主键的名字必须相同,join函数的基本使用格式和常用参数说明如下:pandas.DataFrame.join(other,on=None,how='left',lsuffix='',rsuffix='',sort=False)多表合并参数名称参数说明other接收DataFrame、Series或包含了多个DataFrame的list。表示参与连接的其他DataFrame。无默认值on接收列名或包含列名的list或tuple。表示用于连接的列名。默认为Nonehow接收特定str。取值为“inner”时代表内连接;取值为“outer”时代表外连接;取值为“left”时代表左连接;取值为“right”时代表右连接。默认为“inner”lsuffix接收str。表示用于追加到左侧重叠列名的尾缀。无默认值rsuffix接收str。表示用于追加到右侧重叠列名的尾缀。无默认值sort接收bool。表示根据连接键对合并后的数据进行排序。默认为False多表合并重叠合并数据数据分析和处理过程中偶尔会出现两份数据的内容几乎一致的情况,但是某些属性在其中一张表上是完整的,而在另外一张表上的数据则是缺失的。这时除了使用将数据一对一比较,然后进行填充的方法外,还有一种方法就是重叠合并。分组是使用特定的条件将元数据进行划分为多个组。聚合是对每个分组中的数据执行某些操作,最后将计算结果进行整合。分组聚合groupby()方法提供的是分组聚合步骤中的拆分功能,能够根据索引或字段对数据进行分组。其基本使用格式和常用参数说明如下:pandas.DataFrame.groupby(by=None,axis=0,level=None,as_index=True,sort=True,group_keys=True,squeeze=False,**kwargs)分组聚合使用groupby()方法拆分数据参数名称参数说明by接收list、str、mapping或generator。用于确定进行分组的依据。如果传入的是一个函数,那么对索引进行计算并分组;如果传入的是一个字典或Series,那么字典或Series的值用来作为分组依据;如果传入一个NumPy数组,那么数据的元素作为分组依据;如果传入的是字符串或字符串列表,那么使用这些字符串所代表的字段作为分组依据。无默认值axis接收int。表示操作的轴向,默认对列进行操作。默认为0level接收int或索引名。表示标签所在级别。默认为Noneas_index接收bool。表示聚合后的聚合标签是否以DataFrame索引形式输出。默认为Truesort接收bool。表示是否对分组依据、分组标签进行排序。默认为Trueagg()方法和aggregate()方法都支持对每个分组应用某函数,包括Python内置函数或自定义函数。针对DataFrame的agg()方法与aggregate()方法的基本使用格式和常用参数说明如下:pandas.DataFrame.agg(func,axis=0,*args,**kwargs)pandas.DataFrame.aggregate(func,axis=0,*args,**kwargs)分组聚合使用agg()方法聚合数据参数名称参数说明func接收list、dict、function。表示应用于每行或每列的函数。无默认值axis接收0或1。代表操作的轴向。默认为0apply()方法类似于agg()方法,能够将函数应用于每一列。不同之处在于,与agg()方法相比,apply()方法传入的函数只能够作用于整个DataFrame或Series,而无法像agg()方法一样能够对不同字段应用不同函数来获取不同结果。apply()方法的基本使用格式和常用参数说明如下:pandas.DataFrame.apply(func,axis=0,broadcast=False,raw=False,reduce=None,args=(),**kwds)分组聚合使用apply()方法聚合数据参数名称参数说明func接收functions。表示应用于每行或每列的函数。无默认值axis接收0或1。表示操作的轴向。默认为0broadcast接收bool。表示是否进行广播。默认为Falseraw接收bool。表示是否直接将ndarray对象传递给函数。默认为Falsereduce接收bool或None。表示返回值的格式。默认为Nonetransform()方法能够对整个DataFrame的所有元素进行操作。transform()方法只有一个参数“func”,表示对DataFrame操作的函数。以菜品详情表为例,对销量和售价使用pandas库的transform()方法进行翻倍:detail[['counts','amounts']].transform(lambdax:x*2).head(4)分组聚合使用transform()方法聚合数据counts(菜品销量)amounts(菜品售价)0258129022903298本章介绍了数据预处理的数据清洗、数据变换和数据合并3个主要任务。数据清洗主要介绍了对重复值、缺失值和异常值的处理。数据变换介绍了如何从不同的应用角度对已有属性进行简单的函数变换、数据标准化、数据离散化和独热编码。数据合并主要介绍了多表合并和分组聚合。小结

第5章数据挖掘算法基础第5章数据挖掘算法基础1聚类目录分类与回归2关联规则3智能推荐4时间序列5分类算法构造一个分类模型,模型的输入为样本的属性值,输出为对应的类别,将每个样本映射到预先定义好的类别。回归算法则是建立两种或两种以上变量间相互依赖的函数模型,然后使用函数模型预测目标的值。常用的分类算法与回归算法常用的分类与回归算法:常用的分类算法与回归算法算法名称算法描述回归分析回归分析是确定预测属性(数值型)与其他变量间相互依赖的定量关系最常用的统计学方法。包括线性回归、非线性回归、Logistic回归、岭回归、主成分回归、偏最小二乘回归等模型决策树决策树采用自顶向下的递归方式,在内部结点进行属性值的比较,并根据不同的属性值从该结点向下分支,最终得到的叶结点是学习划分的类最近邻分类最近邻分类是一种典型的“懒惰学习”算法,基于指定的距离度量,找出测试样本的最近邻,并基于投票法对测试样本进行分类支持向量机支持向量机的基本思想是在样本空间或特征空间中,构造出最优超平面,使得超平面与不同类样本集之间的距离最大,从而达到最大化泛化能力的目的。人工神经网络人工神经网络是一种模仿大脑神经网络结构和功能而建立的信息处理系统,表示神经网络的输入与输出变量之间关系的模型集成学习集成算法使用多种算法的组合进行预测,比单一分类器具有更高的准确率和鲁棒性,通常分为Bagging(聚合)、Boosting(提升)和Stacking(堆叠)三种模式对于分类模型的评价,常用的模型评价指标包括了准确率、精确率、反馈率、混淆矩阵和ROC曲线等。分类与回归的模型评价分类模型的评价指标准确率准确率(Accuracy)是指预测正确的结果所占总样本的百分比:错误率

错误率(Fallibility)是指预测错误的结果所占总样本的百分比:分类与回归的模型评价精确率精确率(Precision)是指所有被预测为正的样本中实际为正的样本的概率:反馈率反馈率(Recall)是指实际为正样本预测为正样本占实际为正样本的总数概率:分类与回归的模型评价分类与回归的模型评价ROC曲线接收者操作特征曲线(ReceiverOperatingCharacteristiccurve,ROC曲线)是一种非常有效的模型评价方法,可为选定临界值给出定量提示。对于回归模型,常用的模型评价指标包括了绝对误差与相对误差、误差分析中的综合指标(平均绝对误差、均方误差、均方根误差)、平均绝对百分误差和Kappa统计量等。绝对误差(AbsoluteError):相对误差(RelativeError):平均绝对误差(MeanAbsoluteError,MAE):分类与回归的模型评价回归模型的评价指标均方误差(MeanSquaredError,MSE):均方根误差:平均绝对百分误差:分类与回归的模型评价Kappa统计Kappa统计是比较两个或多个观测者对同一事物,或观测者对同一事物的两次或多次观测结果是否一致,将由随机造成的一致性和实际观测的一致性之间的差别大小作为评价基础的统计指标。Kappa取值在区间[-1,1]内,其值的大小均有不同意义,具体如下:当Kappa=1时,说明两次判断的结果完全一致。当Kappa=-1时,说明两次判断的结果完全不一致。当Kappa=0时,说明两次判断的结果是随机造成。当Kappa<0时,说明一致程度比随机造成的还差,两次检查结果很不一致,在实际应用中无意义。当Kappa>0时,说明有意义,Kappa愈大,说明一致性愈好。当

时,说明已经取得相当满意的一致程度。当Kappa<0.4时,说明一致程度不够。分类与回归的模型评价对于由d个属性组成的样本集,其中是

在第

个属性上的取值,线性模型即通过学习得到一个属性的线性组合来预测样本标签的函数:

其中,表示回归系数的集合,其中回归系数表示属性在预测目标变量时的重要性,b为常数。线性模型线性回归模型使用scikit-learn库中linear_model模块的LinearRegression类可以建立线性回归模型,其基本使用格式和常用参数描述如下:classsklearn.linear_model.LinearRegression(fit_intercept=True,normalize=False,copy_X=True,n_jobs=1)线性模型参数名称说明fit_intercept接收bool。表示是否有截据,若没有则直线过原点。默认为Truenormalize接收bool,表示是否将数据归一化,默认为Falsecopy_X接收bool,表示是否复制数据表进行运算,默认为Truen_jobs接收int,表示计算时使用的核数,默认为1

逻辑回归是一种广义的线性回归模型,但实际是逻辑回归是一个分类算法。具体的分类方法:设定一个分类阈值,将预测结果大于分类阈值的样本归为正类,反之归为反类。其中,的取值范围是,与线性模型中的一致。线性模型逻辑回归模型逻辑回归模型的建模步骤:线性模型使用scikit-learn库中linear_model模块的LogisticRegression类可以建立逻辑回归模型,其语法格式和常用参数描述如下:classsklearn.linear_model.LogisticRegression(penalty='l2',class_weight=None,random_state=None,solver='liblinear',max_iter=100)线性模型参数名称说明penalty接收str。表示正则化选择参数,可选l1或l2。默认为l2solver接收str。表示优化算法选择参数,可选参数为newton-cg,lbfg,liblinear,sag,当penalty='l2'时,4种都可选;当penalty='l1'时,只能选liblinear。默认为liblinearclass_weight接收balanced以及字典,表示类型权重参数,如对于因变量取值为0或1的二元模型,可以定义class_weight={0:0.9,1:0.1},这样类型0的权重为90%,而类型1的权重为10%。默认为None决策树是一树状结构,它的每一个叶节点对应着一个分类,非叶节点对应着在某个属性上的划分,根据样本在该属性上的不同取值将其划分成若干个子集。对于非纯的叶节点,多数类的标号给出到达这个节点的样本所属的类。决策树根部节点(rootnode)中间节点(non-leafnode)分支(branches)叶节点(leafnode)决策树问题:对于给定样本集,如何判断应该先选择在哪个属性上进行拆分?理想情况:在拆分过程中,当叶节点只拥有单一类别时,将不必继续拆分。目标是寻找较小的树,希望递归过程尽早停止较小的树意味着什么?当前最好的拆分属性产生的拆分中目标类的分布应该尽可能地单一(单纯),多数类占优。决策树算法通常按照纯度的增加来选择拆分属性。用于评价拆分分类目标变量的纯度度量包括:熵(entropy,信息量)信息增益(Gain)信息增益率基尼(Gini,总体发散性)改变拆分准则(splittingcriteria)导致树的外观互不相同。决策树纯度的度量常用的决策树算法:决策树决策树算法算法描述ID3算法其核心是在决策树的各级节点上,使用信息增益方法作为属性的选择标准,来帮助确定生成每个节点时所应采用的合适属性C4.5算法C4.5决策树生成算法相对于ID3算法的重要改进是使用信息增益率来选择节点属性。C4.5算法可以克服ID3算法存在的不足:ID3算法只适用于离散的描述属性,而C4.5算法既能够处理离散的描述属性,也可以处理连续的描述属性CART算法CART决策树是一种十分有效的非参数分类和回归方法,通过构建树、修剪树、评估树来构建一个二叉树。当终结点是连续变量时,该树为回归树;当终结点是分类变量,该树为分类树SLIQ算法SLIQ算法对C4.5决策树分类算法的实现方法进行了改进,使得其能处理比C4.5大得多的训练集,在一定范围内具有良好的可伸缩性决策树天气情况对是否打高尔夫球的影响日期天气温度(华氏度)湿度起风打球?1晴8585FNo2晴8090TNo3阴8378FYes4雨7096FYes5雨6880FYes6雨6570TNo7阴6465TYes8晴7295FNo9晴6970FYes10雨7580FYes11晴7570TYes12阴7290TYes13阴8175FYes14雨7180TNo15阴8590F?16雨8079F?17晴7870T?ID3算法简介及其原理决策树天气Yes湿度风YesNoNoYes晴阴雨>75<=75是否日期天气温度(华氏度)湿度起风打球?1Sunny8585FNo2Sunny8090TNo3Overcast8378FYes4Rainy7096FYes5Rainy6880FYes6Rainy6570TNo7Overcast6465TYes8Sunny7295FNo9Sunny6970FYes10Rainy7580FYes11Sunny7570TYes12Overcast7290TYes13Overcast8175FYes14Rainy7180TNo如果数据集D中共有N类样本,出现的概率分别为,则D的信息熵为:打球问题的信息熵为:决策树日期天气温度(华氏度)湿度起风打球?1晴8585FNo2晴8090TNo3阴8378FYes4雨7096FYes5雨6880FYes6雨6570TNo7阴6465TYes8晴7295FNo9晴6970FYes10雨7580FYes11晴7570TYes12阴7290TYes13阴8175FYes14雨7180TNo15阴8590F?16雨8079F?17晴7870T?天气属性的信息增益晴:打球记录2条,不打球记录为3条阴:打球记录4条,不打球记录0条雨:打球记录3条,不打球记录2条某属性a的信息增益为:决策树日期天气温度(华氏度)湿度起风打球?1晴8585FNo2晴8090TNo3阴8378FYes4雨7096FYes5雨6880FYes6雨6570TNo7阴6465TYes8晴7295FNo9晴6970FYes10雨7580FYes11晴7570TYes12阴7290TYes13阴8175FYes14雨7180TNo15阴8590F?16雨8079F?17晴7870T?决策树ID3算法具体流程对当前样本集合,计算所有属性的信息增益选择信息增益最大的属性作为测试属性,将测试属性中取值相同的样本划为同一个子样本集若子样本集的类别属性只含有单个类别,则分支为叶子节点,判断其属性值并标上相应的符号,然后返回调用处;否则对子样本集递归调用本算法使用scikit-learn库中tree模块的DecisionTreeClassifier类可以建立决策树模型,其语法格式和常用参数描述如下:classsklearn.tree.DecisionTreeClassifier(*,criterion='gini',

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论