




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《Python数据挖掘实战》第一章绪论第1章绪论.pptx第2章Python数据挖掘模块.pptx第3章数据探索.pptx第4章数据预处理.pptx第5章特征选择.pptx第6章基础分类模型及回归.pptx第7章集成技术.pptx第8章聚类分析.pptx第9章关联规则挖掘.pptx第10章时间序列挖掘.pptx第11章异常检测.pptx第12章智能推荐.pptx全套可编辑PPT课件二、
数据挖掘的基本步骤
一、数据挖掘概述主要内容三、数据挖掘的常见任务四、数据挖掘的主要工具3
为什么挖掘数据?大量数据被收集,存储在数据库、数据 仓库中。计算机越来越便宜,功能越来越强大。数据爆炸但知识贫乏。人们积累的数据越来越多。但是,目前这些数据还仅仅应用在数据的录入、查询、统计等功能,无法发现数据中存在的关系和规则,无法根据现有的数据预测未来的发展趋势,导致了“数据爆炸但知识贫乏”的现象。一、数据挖掘概述为什么挖掘数据?数据以极快的速度收集和存储(GB/hour)传统的技术难以处理这些——
rawdata低价值密度的数据许多数据根本未曾分析过数据挖掘可能帮助科学家一、数据挖掘概述定义:数据、信息和知识(1)数据(Data):以文本、数字、图形、声音和视频等形式对现实世界中的某种实体、事件或活动的记录,是未经加工和修饰的原料。(2)信息(Information):是为了特定的目的,对数据进行过滤、融合、标准化、归类等一系列处理后得到的有价值的数据流。(3)知识(Knowledge):是通过对信息进行归纳、演绎、提炼和总结,得到的更具价值的观点、规律或者方法论。一、数据挖掘概述什么是数据挖掘?定义:数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的数据中提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。其它名字:Knowledgediscovery(mining)indatabases(KDD),knowledgeextraction,data/patternanalysis,informationharvesting一、数据挖掘概述数据挖掘的历史演变一、数据挖掘概述数据挖掘是多学科交叉领域利用了来自如下一些领域的思想:统计学的抽样、估计和假设检验人工智能、机器学习的搜索算法、建模技术和学习理论数据库系统提供有效的存储、索引和查询处理支持此外,还包括:分布式技术、最优化、进化计算、信息论、信号处理、可视化和信息检索等技术。MachineLearning/AIStatisticsDataMiningDatabasesystems一、数据挖掘概述
在什么样的数据上进行挖掘?在计算机科学中,数据是数字、文字、声音、图像、视频等可以输入到计算机并被识别的符号。如:企业运营数据用户数据视频、游戏数据等从表现形式上:数字、文本、声音、图像、视频等从数据组织和存储方式上看,分为:结构化数据非结构数据一、数据挖掘概述通常,数据挖掘可以在任何类型的数据上进行,包括:关系数据库、数据仓库、事务数据库、高级数据库系统、文本、Web、日志、图像、视频、语音等。
在什么样的数据上进行挖掘?一、数据挖掘概述数据挖掘的应用
数据挖掘技术的应用非常广泛,在金融、电子商务、医学、市场营销、生物学、科学研究等方面均有大量应用,例如:信贷风险管理反洗钱监测客户关系管理蛋白质分子结构预测股票交易地震预警商品推荐一、数据挖掘概述二、数据挖掘的一般流程典型的数据分析的流程:需求分析:数据分析中的需求分析也是数据分析环节的第一步和最重要的步骤之一,决定了后续的分析的方向、方法。数据获取:数据是数据分析工作的基础,是指根据需求分析的结果提取,收集数据。数据预处理:数据预处理是指对数据进行数据合并,数据清洗,数据变换和数据标准化,数据变换后使得整体数据变为干净整齐,可以直接用于分析建模这一过程的总称。数据挖掘建模:通过统计分析、回归分析、聚类、分类、关联规则、智能推荐等模型与算法发现数据中的有价值信息,并得出结论的过程。模型评价与优化:模型评价是指对已经建立的一个或多个模型,根据其模型的类别,使用不同的指标评价其性能优劣的过程。部署:部署是指将通过了正式应用数据分析结果与结论应用至实际生产系统的过程。二、数据挖掘的一般流程三、数据挖掘的常见任务预测vs.描述预测(Prediction)根据其他属性的值,预测特定属性的值描述(Description)导出概括数据中潜在联系的模式任务类型:分类(Classification)[Predictive]回归(Regression)[Predictive]关联规则发现(AssociationRuleDiscovery)[Descriptive]聚类(Clustering)[Descriptive]异常/偏差检测(Anomaly/DeviationDetection)[Predictive]时间序列分析(timeseriesanalysis)四、数据挖掘工具介绍
数据挖掘是一个包含多个步骤的复杂数据处理流程,在实施过程中必须依赖特定的数据挖掘工具或软件,才能取得较好的结果。商业化的数据挖掘软件:SAS的EnterpriseMiner,IBM的SPSSModeler,Oracle的DataMiner等开源数据挖掘软件:Weka,RapidMiner,KNIME等基于脚本语言的工具:如Python语言,R语言等语法简单精练。对于初学者来说,比起其他编程语言,Python更容易上手。有很强大的库。可以只使用Python这一种语言去构建以数据为中心的应用程序。功能强大。Python是一个混合体,丰富的工具集使它介于传统的脚本语言和系统语言之间。Python不仅具备所有脚本语言简单和易用的特点,还提供了编译语言所具有的高级软件工程工具。不仅适用于研究和原型构建,同时也适用于构建生产系统。研究人员和工程技术人员使用同一种编程工具,会给企业带来非常显著的组织效益,并降低企业的运营成本。Python是一门胶水语言。Python程序能够以多种方式轻易地与其他语言的组件“粘接”在一起。Python数据分析主要包含以下5个方面优势四、数据挖掘工具介绍快速高效的多维数组对象ndarray。对数组执行元素级的计算以及直接对数组执行数学运算的函数。读写硬盘上基于数组的数据集的工具。线性代数运算、傅里叶变换,以及随机数生成的功能。将C、C++、Fortran代码集成到Python的工具。
Python数据分析常用类库1.NumPy(NumericalPython)——
Python科学计算的基础包四、数据挖掘工具介绍SciPy主要包含了8个模块,不同的子模块有不同的应用,如插值、积分、优化、图像处理和特殊函数等。egrate数值积分例程和微分方程求解器scipy.linalg扩展了由numpy.linalg提供的线性代数例程和矩阵分解功能scipy.optimize函数优化器(最小化器)以及根查找算法scipy.signal信号处理工具scipy.sparse稀疏矩阵和稀疏线性系统求解器scipy.specialSPECFUN(这是一个实现了许多常用数学函数的Fortran库)的包装器scipy.stats检验连续和离散概率分布、各种统计检验方法,以及更好的描述统计法scipy.weave利用内联C++代码加速数组计算的工具2.SciPy——专门解决科学计算中各种标准问题域的模块的集合四、数据挖掘工具介绍提供了一系列能够快速、便捷地处理结构化数据的数据结构和函数。高性能的数组计算功能以及电子表格和关系型数据库(如SQL)灵活的数据处理功能。复杂精细的索引功能,以便便捷地完成重塑、切片和切块、聚合及选取数据子集等操作。3.Pandas——数据访问的核心库四、数据挖掘工具介绍Python的2D绘图库,非常适合创建出版物上用的图表。操作比较容易,只需几行代码即可生成直方图、功率谱图、条形图、错误图和散点图等图形。提供了pylab的模块,其中包括了NumPy和pyplot中许多常用的函数,方便用户快速进行计算和绘图。交互式的数据绘图环境,绘制的图表也是交互式的。4.Matplotlib——绘制数据图表的Python库四、数据挖掘工具介绍简单有效,可以供用户在各种环境下重复使用。封装了一些常用的算法方法。基本模块主要有数据预处理、模型选择、分类、聚类、数据降维和回归6个,在数据量不大的情况下,scikit-learn可以解决大部分问题。5.scikit-learn——数据挖掘和数据分析工具四、数据挖掘工具介绍Python环境的安装和配置学习编程语言的第一关,就是安装和环境配置。我们必须与计算机约定如何理解代码、指令和语法,才能够顺利地与计算机交流,赋予它复杂的功能。Python便是其中的一种“方言”。对于新手,Python及其第三方模块在安装环节有许多已知的难题。比如源码编译的安装方式、环境变量的配置、不同模块之间的版本依赖问题。为了避免不必要的麻烦,我们将采用更加简单的安装方式。本书使用的是Python的科学计算发行版——Anaconda。
除Python本身之外,Anaconda囊括了科学计算和数据分析所需的主流模块,独立的包管理工具Conda,以及两款不同风格的编辑器Jupyter和Spyder.四、数据挖掘工具介绍预装了大量常用Packages。完全开源和免费。额外的加速和优化是收费的,但对于学术用途,可以申请免费的License。对全平台和几乎所有Python版本支持。
Python的Anaconda发行版Anaconda最新版本的下载地址:/download四、数据挖掘工具介绍安装包——“next”——“Iagree”——“AllUsers(requiresadminprivileges)”——选择安装路径——“Install”——“finish”。在Windows系统上安装Anaconda四、数据挖掘工具介绍JupyterNotebook是一种基于Web的交互式Python开发环境,能够将代码、运行结果、文本、公式、图表以富文本的形式一起展示在网页中,是一种广受欢迎Python程序开发工具。Anaconda包含了JupyterNotebook和Spyder两种Python程序的开发工具。JupyterNotebook开发工具四、数据挖掘工具介绍谢谢大家!《Python数据挖掘实战》
第二章Python数据挖掘模块二、
Panda一、Numpy主要内容三、Matplotlib四、Scikit-learn29
Numpy是NumericalPython的简称,是高性能计算和数据分析的基础包。Numpy主要提供以下几个主要功能:Ndarray数据对象:Numpy的多维数组对象,用于存储和处理数据。提供可用于对数组数据进行快速运算的数学函数。提供可用于读写磁盘数据的工具。提供常用的线性代数、傅里叶变化和随机数操作。提供可调用C/C++和Fortran代码的工具。提供能够无缝、快速地与各种数据库集成的工具。一、Numpy30
1.Ndarray数组的创建
Ndarray是一个快速、灵活的数据容器,是由同质元素(指几乎所有元素的类型和大小都相同)组成的多维数组。Ndarray数组的常用创建方法有:array()、arange()、linspace()、ones()、zeros()以及各种随机生成函数。(1)array()函数
可以将Python的列表、元组或者其他序列类型数据转化为一个Ndarray数组。一、Numpy31(2)arrange()函数
用于创建一个等差数组,基本函数语法为:arange([start,]stop[,step],dtype=None)
它在区间[start,stop)上以start为起点,以step为步长构建一个等差数组。一、Numpy32(3)linespace()函数
用于创建一个等差数组,基本函数语法:linspace(start,stop,num=50,endpoint=True,dtype=None)
该函数可以将区间[start,stop]等分为具有num个元素的等差数组。其中,endpoint参数用于控制所生成的数组是否包含stop。一、Numpy33(4)zeros()、ones()、zeros_like()、ones_like()函数
用于生成一个指定形状,且初始值全为0或者1的数组。zeros():生成全0数组,参数为一个指示数组形状的元组ones():生成全1数组,参数为一个指示数组形状的元组zeros_like():生成全0数组,参数为一个现有数组ones_like():生成全1数组,参数为一个现有数组一、Numpy34(5)随机生成函数
Numpy的random模块提供了多种随机数组构造函数,用于生成指定形状且符合特定分布的随机Ndarray数组,包括:Numpy.random.rand(d0,d1,…):生成一个值在区间[0,1)上均匀分布的随机数组。数组的形状由d0,d1等参数给定。Numpy.random.randn(d0,d1,…):生成一个符合标准正态分布的随机数组,数组的形状由d0,d1等参数给定。Numpy.random.randint(low,high=None,size=None):生成一个在区间[low,high)上均匀分布,形状为size的整数数组。一、Numpy35
2.Ndarray数组的属性
多维数组Ndarray有3个重要的属性:(1)dtype属性Ndarray的数据类型包括:一、Numpy36(1)dtype属性
在创建Ndarray数组时,均可通过设置dtype参数指定其数据类型。也可以使用astype()函数对数组对象的类型进行转化。一、Numpy37(2)ndim和shape属性ndim属性用来参看数组对象的维数,即具有多少个维度。shape属性可以获得数组对象的形状,即在每个维度的具体大小。一、Numpy383.索引和切片
Numpy可以通过下标索引的方式获取Numpy数组中的某个元素,或者通过切片的方式获取数组中的一块数据。(1)普通索引Numpy可以将每个维度的索引值单独放到一个中括号“[]”,拼接多个维度的索引值来获得某一个元素值。一、Numpy39(2)切片
Numpy中的切片用于获取Numpy数组的一块数据,其操作方式与Python列表中的切片很相似,均使用“[]”指定下标实现。
其中,每个维度上使用冒号“:”分割起始位置、截止位置(切片时不包含该位置)与步长,逗号“,”用于区分不同维度上的切片操作,用省略号“…”表示切片操作遍历剩余所有的维度。一、Numpy404.排序
Numpy提供了排序函数sort()实现数组对象的排序。并且,它可以使用axis参数来指定在指定维度(轴)上进行排序。
在Numpy中,调用sort()函数的方式有两种:np.sort(Ndarray数组对象)Ndarray数组对象.sort()区别在于:前一种方式会返回一个排序好的新数组,不会对原数组的顺序做修改。后一种调用方式会直接在原数组上进行重新排序。一、Numpy415.Numpy的数组运算(1)数组与数值的算术运算Numpy支持数组和数值之间进行加、减、乘、除、求余、乘方等算术运算。(2)数组与数组的算术运算Numpy数组与数组进行运算时,如果两个数组的形状相同,则运算过程为两个数组对应位置的元素进行相应算术运算。如果形状不同,则要利用Numpy的“广播”特性进行计算。一、Numpy426.Numpy的统计函数Numpy支持一组统计函数对数组进行统计分析一、Numpy43Pandas是基于Numpy构建的一个数据分析模块,它也是Python语言中最强大也最重要的数据分析和处理模块之一。Pandas是一个专门为处理表格和混杂数据而设计的高效模块,而Numpy更适合处理统一的数值数据。
可以在Anaconda命令行终端中使用pip命令或者conda命令进行安装,如下所示。pipinstallpandas#pip安装方式
condainstallpandas#Anaconda安装方式二、Pandas44Pandas的数据结构
Pandas提供了两种重要的数据结构:Series和DataFrame。
(1)SeriesSeries由一组数据(可以是不同数据类型)和与之对应的索引值所组成。创建一个Series对象时,可以通过向pd.Series传递一个Python列表、字典或者Numpy一维数组来实现。二、Pandas45
(2)DataFrame
一个DataFrame对象由多个列组成,每列的数据类型可以不同(数值、文本等)。
创建DataFrame对象的典型方法是向pd.DataFrame()方法传入二维列表、字典或者二维数组。二、Pandas462.查看和获取数据
(1)数据查看和设置
在创建一个DataFrame对象后,可以使用对象的一些内置函数和属性对它的基本信息进行观察和设置。常用的操作包括。获取df的行数:df.shape[0]或者len(df)。获取df的列数:df.shape[1]。获取df的维数:df.shape。获取df的列名或者行名:df.columns或df.index。重新定义列名字:df.columns=[‘A’,‘B’,‘C’]。更改某些列的名字:df.rename(columns={‘x’:‘X’},inplace=True)查看df的概要信息:()查看df中前n行的数据信息:df.head(n)查看df最后n行的信息:df.tail(n)二、Pandas47(2)数据获取
Pandas也支持使用索引和切片等方式获取DataFrame中的值,进而进行计算或者修改。Pandas进行数据索引和切片的方式通常有以下三种:
通过列索引获得对象中的一列或者多列。通过对象的loc[]函数或iloc[]函数获取指定行索引、列索引位置上的数据。使用条件索引获得满足条件的部分数据或切片。二、Pandas48(2)数据获取
二、Pandas493.Pandas的算术运算Pandas支持将Series或DataFrame对象当作一个整体进行算术运算。Pandas提供了两种算术运算方法。第一种是直接采用“+”、“-”、“*”、“/”等算术运算符实现;第二种方法是使用add()、sub()、mul()、div()、mod()等函数实现算术运算。Pandas在对两个对象进行算术运算时,只有对应索引(行索引和列索引)相同的两个数据才可以进行算术运算;而不同索引的数据不能直接进行算术运算,但默认情况下,它们会以NaN出现在计算结果中。二、Pandas503.Pandas的算术运算二、Pandas514.Pandas的统计汇总函数二、Pandas525.Pandas读写文件Pandas可以方便地读取本地文件如CSV、TXT和XLSX等。
(1)读CSV文本文件Pandas使用read_csv()函数读入一个CSV文件,并将所读取的数据存入到一个DataFrame对象中。
read_csv(filepath_or_buffer,sep,delimiter=",",
header=0,encoding="gbk")
主要参数的含义是:filepath_or_buffer:文件路径名,也可以是存储数据的URL地址。sep:读取CSV文件时指定的分隔符,默认为逗号。delimiter:定界符,备选分隔符。header:设置导入DataFrame的列名称。如果设置为0,则表示文件的第0行为列名称。encoding:文件的编码方式,常用的有utf8,ansi和gbk等。二、Pandas53(2)写CSV文本文件
数据处理完毕以后,可以使用to_csv()函数将DataFrame格式的数据保存为CSV文件。to_csv()函数的完整形式如下:
to_csv(path_or_buf,sep,na_rep,index,header,encoding)
主要参数的含义是:path_or_buf:所要保存的文件路径名。sep:数据保存时,不同项目之间的分隔符。na_rep:数据保存时,空值的存储形式。index:bool型值,其中True表示将行索引存入文件,False表示不存储header:可以设置为字符串或布尔列表,默认为True,此时写出列encoding:文件的编码方式,常用的有utf-8,ansi和gbk等。二、Pandas54(1)读Excel文件Pandas可以读写扩展名为.xls或.xlsx的Excel文件。
read_excel(io,sheetname=0,header=0,index_col=None)
主要参数的含义是:io:Excel文件的路径名。sheetname:默认值为0,此时返回Excel中第一个表;也可设置为str,int,list或None。header:指定哪一行作为列名的,默认是第0行。index_col:作用是指定用哪一列作为行索引。二、Pandas55(2)写Excel文件
使用to_excel()函数将DataFrame格式的数据保存为Excel文件。
to_excel(excel_writer,sheetname=None,na_rep="",
header=True,index=True)
主要参数的含义是:excel_writer:所要保存的Excel文件路径名或者Excel_writer对象。sheetname:str类型参数,存放数据的表格名称。na_rep:数据保存时,空值的存储形式,默认为空字符串。header:可设置为bool型或者字符串列表;默认为Truebool型值,其中True表示将行索引存入文件,False表示不存储行索引二、Pandas56
Matplotlib是Python的基础绘图模块,可以绘制多种样式的图形,如线图、直方图、饼图、散点图、三维图形等。
安装Matplotlib模块,可以使用pip或者conda命令:pipinstallmatplotlib
#使用pip安装matplotlibcondainstallmatplotlib#使用conda安装
三、Matplotlib571Matplotlib绘图元素
在Matplotlib中,整个图形是一个画布(Figure)对象。使用Matplotlib进行绘图,实质上是在调用各种函数在画布上添加各种基本绘图元素,并通过设置函数的参数来控制各元素的外形。
三、Matplotlib58设置坐标轴参数所需的函数
三、Matplotlib三、Matplotlib参数名称解释取值linewidth线条宽度取0-10之间的数值,默认为1.5。linestyle线条样式可取“-”“--”“-.”“:”四种。默认为“-”。marker线条上点的形状可取“o”“D”“h”“.”“,”“S”等20种,默认为None。markersize点的大小取0-10之间的数值,默认为1。Matplotlib中图形的参数linestyle取值意义linestyle取值意义-实线-.点线--长虚线:短虚线602常用Matplotlib图形的绘制(1)折线图
使用plot()函数进行折线图的绘制,并通过设置函数的参数来控制各元素的外形。
其基本语法为:
plot(x,y,color,linewidth,linestyle,marker,markersize)
主要参数的含义是:x,y:折线上的一系列点的X坐标和Y坐标。color:折线的颜色。linewidth:折线的线条宽度。linestyle:折线的样式。marker:线条上的标记点类型。markersize:折线上标记点的大小。
三、Matplotlib61绘制折线图的示例62(2)散点图
散点图可以将数据集中的每个点绘制在二维平面上,用户可根据数据点的散布情况对数据的分布进行观察和推测,或者分析变量之间的相关性。Matplotlib使用scatter()函数来绘制散点图,其基本语法为:
scatter(x,y,s,c,marker,alpha)主要参数为:x,y:数据点的X坐标和Y坐标。s:散点(标记点)的大小。c:散点的颜色。marker:散点的样式,默认为’o’,即散点用圆圈表示。alpha:透明度,该值越小则绘制的散点越透明
三、Matplotlib63绘制散点图的示例64Scikit-learn是Python语言中构建数据挖掘模型的强大模块,它涵盖了几乎所有主流的数据挖掘算法,并且提供了统一的调用接口。Scikit-learn提供了覆盖数据挖掘任务主要阶段的多个功能模块,包括:1.数据集模块2.数据预处理模块3.模型训练模块4.模型评估模块5.其他功能模块四、Scikit-learn谢谢大家!《Python数据挖掘实战》
第三章数据探索3.2数据统计描述3.1数据对象与特征主要内容
3.3数据可视化
3.4相关性和相似性度量引言数据收集和存储技术的快速发展使得现代计算机系统正在以无法想象的速度积累着海量数据。与此同时,数据的来源也愈发广泛。通过使用数据统计描述和可视化等方法,认识数据的统计特征,探索数据的分布规律,了解异常值、缺失值等情况,以便更好地掌握数据的特点,进而有针对性地开展后续数据预处理和构建数据挖掘模型工作。
“数据探索”,它通常是数据挖掘过程中的首要任务。一、数据对象和特征数据集可以看作由数据对象构成的集合。一个数据对象则代表一个实体,有时也被称为记录、样本、实例、点、向量、模式等。
数据对象通常由一组刻画对象基本属性的特征来描述。对于存储在数据库中的数据,数据库的一行对应着一个数据对象,它们也被称为“元组”,一列则对应着数据的一个特征。一、数据对象和特征一、数据对象和特征数据对象的特征可以使用各种类型的数据进行描述,例如文本、数值、序数等。我们把特征分为5种主要类型:标称特征二元特征序数特征区间标度特征比率标度特征
1特征及其类型一、数据对象和特征2离散和连续特征从特征的取值数量的角度将其分为两种类型:离散特征和连续特征。(1)离散特征在一定区间范围内具有有限个取值,可以用整数、符号、布尔值、序数数据等表示。通常,标称特征、二元特征、序数特征和整数数值特征都是离散特征。例如,职工人数、设备台数、颜色、性别、年龄等。(2)连续特征可以在一定区间范围内任意取值,具有无限个取值。通常,区间标度特征和比率标度特征属于连续特征。例如,生产零件的规格尺寸、人体的身高和体重、污染物浓度等。一、数据对象和特征二、数据统计描述数据统计描述通过计算数据的一些统计度量指标帮助我们认识数据,是较为常用的探索数据分布特点的方法之一。
统计描述通常包括两类度量指标:集中趋势和离中趋势。1.集中趋势
二、数据统计描述二、数据统计描述
二、数据统计描述(2)中位数
有些时候特征的取值并非集中在取值区间中心区域附近或者均匀分布,而是集中在区间的一侧,这样的数据称为“有偏”数据。
对于这样的偏度较大的数据,较好的度量数据集中趋势的指标是中位数,用xM
表示。中位数是数据排序后位于中间位置的那个取值:二、数据统计描述(3)众数
众数是另外一种中心趋势的度量指标,它只对离散型的特征有意义。它是指一个特征的取值范围内出现频数最高的值。因此,众数通常用于离散特征上的集中趋势度量。
例如,一组学生的成绩分别为:85、80、81、85、90、85、72、94、88、81、70。其中,分数85出现的频数最高(3次),因此该组学生成绩的众数为85。然而,有时频数最高的值可能会同时有多个,从而出现多个众数。具有多个众数的数据一般被称为多峰数据。2离中趋势
二、数据统计描述二、数据统计描述
二、数据统计描述(3)四分位极差
四分位数也称四分位点,是指在统计描述过程中把特征的所有取值由小到大排列后,通过3个点(25%位置,50%位置,75%位置)可以将数据分割成4等份,这3个位置点对应的数值分别称为1/4分位数(Q1,下四分位数)、2/4分位数(Q2中位数)和3/4分位数(Q3,上四分位数)
四分位数极差(Inter-QuartileRange,IQR)是指上四分位数与下四分位数之差。一般来说,其间距应该涵盖一半的数据量。
所以,IQR值越大说明特征的离中程度越大,反之,说明离中程度越小。
二、数据统计描述三、数据可视化在数据挖掘过程中,利用图形工具对数据进行可视化,直接在二维或三维空间中观察数据的分布规律,或者观察特征之间的相关关系,是对数据进行探索的常用方法之一。散点图散点图是一种直接将数据点绘制在二维或者三维坐标系中的图形,用户可根据数据点的散布情况对数据的分布或者特征之间的相关关系进行直观的观察。三、数据可视化使用Matplotlib模块中的scatter()函数实现散点图。
(a)散点图
(b)分类显示的散点图三、数据可视化
两个特征之间的相关性分为多种情况,包括完全线性正相关、完全线性负相关、线性正相关、线性负相关、线性无关和非线性相关。
三、数据可视化箱线图也称盒图,一般用来展现数据的分布(如上、下四分位数,中位数等),也可以用箱线图来反映数据的异常情况
(2)箱线图箱线图展示花萼宽度三、数据可视化频率直方图,亦称频率分布直方图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据类型,纵轴表示分布情况。
(3)频率直方图频率直方图展示花瓣长度三、数据可视化柱状图也称条形图、长条图,是一种以长方形的长度为变量的表达图形的统计报告图,由一系列高度不等的纵向条纹表示数据大小的情况,用来比较两个或以上的变量。柱状图亦可横向排列,或用多维方式表达。
(4)柱状图柱状图展示三个品种鸢尾花的数量三、数据可视化饼图,或称饼状图,是一个划分为几个扇形的圆形统计图,用于描述数量、频率或百分比之间的相对关系或占比情况。在饼图中,每个扇区的弧长大小为其所表示的数量的比例。这些扇区合在一起刚好是一个完整的圆。
(5)饼图饼图展示三个品种鸢尾花所占比例与简单的散点图不同,散点图矩阵可以同时看到多个特征的分布情况,以及两两特征之间的关系。
(6)散点图矩阵鸢尾花数据散点矩阵四、相关性和相似性度量其一,观察数据的特征之间是否存在相关性,以便判断是否存在冗余特征,或者观察特征和目标变量之间是否相关性,以便为特征工程提供依据。探索数据有两项非常重要的工作。其二,许多数据挖掘模型的工作依赖于对数据之间相似性的计算。例如,给定两个数据对象,如何评价它们是否是相似对象等。本节将介绍针对不同类型数据的定量计算方法四、相关性和相似性度量1.数据相关性度量相关性是数据不同特征之间相关关系的度量,也即一个特征的取值随着另外一个特征取值的变化情况。常用的相关性度量方法包括:协方差、皮尔逊(Pearson)相关系数、斯皮尔曼(Spearman)相关系数、肯德尔(Kendall)相关系数等四、相关性和相似性度量1.数据相关性度量(2)皮尔逊(Pearson)相关系数皮尔逊相关系数最早是由统计学家卡尔·皮尔逊提出,用于衡量两个连续变量之间的线性相关性程度,通常用
表示。它定义为两个随机变量之间协方差和标准差的商,如下公式所示:四、相关性和相似性度量1.数据相关性度量(3)斯皮尔曼(Spearman)相关系数
斯皮尔曼相关系数主要用于描述分类或等级变量之间、分类或等级变量与连续变量之间的关系。斯皮尔曼相关系数主要通过关注两个变量的秩次大小(对应数值的位置)来计算其之间的相关性:即若两个变量的对应值,在各组内的排列顺位是相同或类似的,则具有显著的相关性。其计算公式如下所示:四、相关性和相似性度量1.数据相关性度量(3)斯皮尔曼(Spearman)相关系数
斯皮尔曼相关系数主要用于描述分类或等级变量之间、分类或等级变量与连续变量之间的关系。斯皮尔曼相关系数主要通过关注两个变量的秩次大小(对应数值的位置)来计算其之间的相关性:即若两个变量的对应值,在各组内的排列顺位是相同或类似的,则具有显著的相关性。其计算公式如下所示:四、相关性和相似性度量又称肯德尔秩相关系数或一致性系数。与斯皮尔曼秩相关系数相似,肯德尔相关系数也是一种秩相关系数,主要用于度量两个等级变量(即有序的类别变量,如名次,评分等)的相关程度或单调关系强弱。肯德尔相关系数使用了“对(Pairs,两个元素为一对)”这一概念来决定相关系数的强弱。“对”可以具体分为一致对/同序对(ConcordantPairs)和分歧对/异序对(DiscordantPairs):一致对表示相对关系取值一致,分歧对则表示相对关系取值不一致。肯德尔相关系数计算公式下,即一致对和分歧对之差与总对数的比值:(4)肯德尔(Kendall)相关系数四、相关性和相似性度量2.数据相似性度量相似性是度量数据对象之间相似程度的方法,它是聚类、推荐等数据挖掘模型的核心概念之一。
不同类型的数据有对应的相似性度量指标:针对二元特征的杰卡德相似系数(Jaccard)针对文档数据的余弦相似度(Cosine)针对数值特征的各种距离度量(Distance),如:欧式距离(Euclideandistance)、马氏距离(Mahalanobisdistance)、曼哈顿距离(Manhattandistance)、切比雪夫距离(Chebyshevdistance)等。四、相关性和相似性度量(1)杰卡德相似系数(Jaccard)
四、相关性和相似性度量(2)余弦相似度(Cosine)
四、相关性和相似性度量(3)欧式距离
四、相关性和相似性度量(4)马式距离
四、相关性和相似性度量(5)曼哈顿距离
曼哈顿距离,也称为城市街区距离(CityBlockdistance)或出租车几何(Taxicabgeometry)。为充分理解曼哈顿距离和欧式距离的区别:假设你在城市中要从一个十字路口到另外一个十字路口,真实行驶的距离由于有建筑的存在,因此不是直线距离,可以理解为直角边距离。在此过程中,实际行驶的距离就是曼哈顿距离。
谢谢大家!《Python数据挖掘实战》
第四章数据预处理4.2数据清洗
4.1数据集成主要内容
4.3数据变换4.4数据规约引言从日常生产、生活中收集的数据通常质量不高,存在异常值(例如,账号余额:−100)、缺失值、不可能的数据组合(例如,年龄为2岁,学历为研究生)等情况。数据预处理技术可以有效改善现有数据集的质量,从而有助于提升后续数据挖掘工作的准确率和效率,让数据更适合后续的挖掘任务。一、数据集成数据集成是指将来自多个不同(异构)数据源的数据(集)组合到一个集成的数据存储中,并提供数据统一视图的过程。这些异构数据源可能包括多维数据集、数据库或数据文件等。其基本概念和过程如所示。
一、数据集成在这个过程中,需要解决的问题主要包括:同名异义、异名同义、单位不统一和颗粒度不统一等:(1)同名异义:例如,员工信息表A中的属性ID和交易记录表B中的属性ID可能分别描述的是员工编号和订单编号,即描述的是不同的实体.(2)异名同义:例如,数据表A中的sales_dt和数据表B中的sales_date都是描述销售日期,但是使用了不同的特征名称,即A.sales_dt=B.sales_date。(3)单位不统一:例如,数据表A和B中,描述同一个实体分别用的是国际单位和我国传统的计量单位。(4)颗粒度不统一:例如,数据表A描述每天每个城市的数据,数据表B描述每月每个省份的数据。一、数据集成在识别实体后,数据集成常做的一项工作是将不同来源的数据合并在一起,Python提供了数据堆叠、数据增补、数据合并等函数进行集成。1.数据堆叠
数据堆叠,是按照轴拼接两个DataFrame对象,通常使用Pandas模块中的concat()函数完成,函数的基本语法如下所示。concat(objs,axis=0,join='outer',ignore_index=False)一、数据集成2.数据增补
除了堆叠的方法,append()函数也可以用于纵向合并两张表,称为数据增补。一个数据框对象(DataFrame)可以调用append()函数将另外一个数据框对象添加到其尾部
append(other,ignore_index=False)一、数据集成3.数据合并
merge()函数也可以用于合并两个数据对象,并可以实现类似数据库中的左连接(left)、右连接(right)、内连接(inner)和外连接(outer)合并方式。merge(left,right,how='inner',on=None,
left_on=None,right_on=None,left_index=False,right_index=False,suffixes)二、数据清洗数据清洗是指为检测和消除数据中的重复值、错误值、异常值、缺失值、不一致值等问题而采取的各种措施和手段,目的是为了提高数据质量。数据清洗是数据预处理阶段中一项非常重要的工作,本节将重点介绍常见的数据清理技术。二、数据清洗在数据集成过程中,我们按行或者按列合并不同来源的数据对象,不可避免地产生数据重复问题。通常,数据重复包括记录重复和特征重复。(1)
记录重复
记录重复是指多个数据对象(行数据)都是关于同一个实体的描述。
1.重复值处理二、数据清洗DataFrame.duplicated(subset=None,keep='first')检验重复记录:去除重复记录DataFrame.drop_duplicates(subset=None,keep='first',inplace=False)二、数据清洗(1)
记录重复importpandasaspdscores={'姓名':['张三','李四','王五','张三'],'语文':[84,92,87,84],'数学':[89,90,95,89],'英语':[90,81,75,92],'计算机':[85,92,90,85]}df=pd.DataFrame(scores)print("检验重复的记录:\n",df.duplicated(subset=['姓名']))df_drop=df.drop_duplicates(subset=['姓名'],keep='first')print("去重的数据为:\n",df_drop)二、数据清洗
(2)特征重复
由于数据集成是将多来源数据表格进行堆叠或合并的过程,这个过程较常出现特征冗余的问题:如果一个特征(数据集的列或属性)的数据信息可以从任何其他特征或特征集合直接或间接得出,则称为特征冗余。
冗余处理是数据集成过程中需要关注的一个重要的问题。有些特征冗余是可以通过相关分析检测出来的。例如,给定两个特征,如果是标称特征,我们可以使用卡方系数进行检验;如果是数值特征,我们可以使用相关系数(CorrelationCoefficient)进行检验。二、数据清洗
(2)特征重复常用的缺失值检测采用统计分析方法,逐个检查数据的每个特征的缺失情况。Pandas对象中isnull()函数提供了非常方便的缺失值检查功能,它将为返回一个布尔型矩阵,每个布尔值(True或False)指示数据是否缺失具体使用中,我们可以使用isnull().sum()返回Pandas对象的每一列的缺失值计数。二、数据清洗2.缺失值处理直接删除缺失值是直接删除存在缺失值的行或者列来获得完整的数据。然而,这种方法将同时删掉有用的数据,造成信息的损失。通常,特定的行或者列存在大量的缺失时(例如,超过70-75%数据缺失),我们采用直接删除的方法。dropna(axis=0,how='any',subset=None,inplace=False)pandas模块的dropna()函数可以实现缺失值的删除功能,它的基本语法如下所示。(1).直接删除二、数据清洗(1).直接删除importpandasaspdscores={'姓名':['张三','李四','王五','刘一'],'语文':[84,92,87,84],'数学':[89,pd.NA,95,89],'英语':[90,81,pd.NA,92],'计算机':[85,92,90,85]}df=pd.DataFrame(scores)print('成绩数据对象的特征缺失值情况:')print(df.isnull().sum())df.dropna(axis=0,how='any',inplace=True)#删除所有包含缺失值的行print('删除包含缺失值记录后的数据为:\n',df)二、数据清洗(2)替换或插补缺失值常用的数据填充方法包括:(1)使用均值、中位数或众数等具有代表性的数值进行替换;(2)可以使用某些固定值(如0值或‘Unknown’)对缺失值替换;(3)使用临近值进行替换fillna(value=None,method=None,axis=None,inplace=False,limit=None)上述三种替换方法均可以使用Pandas模块中的fillna()函数实现二、数据清洗(2)替换或插补缺失值importpandasaspdimportnumpyasnp#生成包含缺失值的数据scores={'姓名':['张三','李四','王五','刘一'],'语文':[84,92,87,84],'数学':[89,pd.NA,95,89],'英语':[90,81,pd.NA,92],'计算机':[85,92,90,85]}df=pd.DataFrame(scores)#1.均值替换df_mean=df['数学'].fillna(value=df['数学'].mean(),inplace=False)print('使用均值替换:\n',df_mean)#2.中位数替换df_median=df['数学'].fillna(df['数学'].median(),inplace=False)print('使用中位数替换:\n',df_median)4.2.2缺失值处理数据缺失是较为常见的数据质量问题,通常指数据记录中某些特征的缺失。造成数据缺失的原因很多,可能包括:字段在存储时的遗漏或丢失(例如,数据错误删除、采集设备故障、人为因素等)、数据获取成本较高等。缺失值的存在会对数据挖掘模型的准确性、可靠性产生较大的影响。因此,在数据预处理阶段,需要检查缺失数据的情况,并给予针对性的处理。二、数据清洗3.异常值检测和处理在数据挖掘中,异常值是指不符合预期模式,且观测值明显偏离其它观测值的数据。异常值也称为离群点(Outlier),产生的原因很多,可能包括但不限于录入错误、测量错误、数据生成过程中的错误等。异常值的存在将显著影响构建的数据挖掘模型的准确性和可靠性。因此,需要对异常值进行检测和处理。通常,异常值的检测方法包括:3σ原则、箱线图分析、聚类分析。二、数据清洗3.异常值检测和处理又称为“拉伊达准则”,是在假定数据服从正态分布的情况下,绝大部分数据的取值都应该位于3倍标准差范围内,那么超出3倍标准差范围的值被识别为异常值。下表给出了正态分布的数据的取值分布情况。显然,只有不到0.3%的数据位于3倍标准差之外(这里,符号μ和σ分别表示数据的均值和标准差)。取值的分布范围在全部数据中的比例(μ-σ,μ-σ)68.27%(μ-2σ,μ-2σ)95.45%(μ-3σ,μ-3σ)99.73%(1)3σ原则
二、数据清洗(2)
箱线图分析箱线图,也称盒图,有五个基本数值信息组成:最小值(min),下四分位数(Q1),中位数(median),上四分位数(Q3)和最大值(max),常用来展现数据的分布情况,也可以用于异常值检测。其中,箱体中部的线通常表示中位数(也可以通过参数设置增加均值),箱体的两端边分别表示上四分位数和下四分位数。二、数据清洗(2)
箱线图分析异常值判断的主要原理和过程为:首先需要计算IQR(四分位数极差,inter-quartilerange),即上四分位数(Q3)与下四分位数(Q1)之间的差值(IQR=Q3-Q1),可以看做是箱子的长度;在此基础上,计算箱子的最小观测值min为:Q1-1.5*IQR,最大观测值max为:Q3+1.5*IQR。箱体外部的两边缘线(胡须,whisker)分别表示最大观测值和最小观测值。因此,小于最小观测值(Q1-1.5*IQR)和大于最大观测值(Q3+1.5*IQR)的数值则被认定为异常值,在箱线图中表示为上下边缘线外的孤立点。二、数据清洗(2)
箱线图分析importpandasaspdimportnumpyasnpimportmatplotlib.pyplotasplt#生成原始数据scores={'姓名':['S1','S2','S3','S4','S5','S6'],'英语':[90,81,110,92,83,85]}df=pd.DataFrame(scores)print(df)#绘制箱线图plt.figure(figsize=(8,6),dpi=200)axes=plt.boxplot(df['英语'],notch=True,patch_artist=True)#箱线图print(axes['fliers'][0].get_ydata)outlier=axes['fliers'][0].get_ydata()#获取异常值plt.show()#图形展示print('异常值为:\n',outlier)二、数据清洗(3)
聚类方法异常值通常数量较少,且正常数据有明显的差异。从聚类的角度,异常值在数据空间中孤立存在,不构成特定的簇,所在区域的密度很低。因此,一些基于密度的聚类算法能根据数据点所在位置的密度识别出异常数据,例如DBSCAN聚类算法,以上统计描述方法和可视化方法辅助检测异常值或离群点。那么如果检测到数据集出现异常值或离群点,常见的处理方法包括:直接剔除掉异常值,主要用于异常值数量较少的时候。借鉴缺失值的处理方法进行替换或插值。不处理,在某些情况下,异常值可能代表特殊的含义,如何处理需要咨询业务人员或深入了解数据收集过程。
三、数据变换
数据变换是对数据进行规范化处理,转换为“适当”的形式以适应数据挖掘算法的需要。常见的数据变换操作包括:数据规范化、数值特征的二值化和离散化、标称特征的数值化处理等。三、数据变换数据规范化是指为了消除不同数据(特征)在度量单位上的差异以及取值范围的影响,将数据按照一定比例进行标准化,使其落入到同一水平的取值范围内。常用规范化方法包括:“最小-最大(min-max)”规范化,“零-均值(Z-score)”规范化和小数定标规范化。1.数据规范化三、数据变换(1)
最小最大规范化“最小-最大”规范化,也称为“离差标准化”,是将数据按比例线性缩放到特定区间[min,max],通常是[0,1]区间。对于每个特征,其最小值被转换为0,最大值被转换为1。计算方式如下式所示。
sklearn.preprocessing模块提供了MinMaxScaler类能帮助我们快速实现数据的最小-最大规范化三、数据变换(1)
最小最大规范化fromsklearn.datasetsimportload_irisfromsklearn.preprocessingimportMinMaxScalerimportpandasaspdiris=load_iris().data#使用离差标准化对数据进行预处理m_scaler=MinMaxScaler()#创建一个min-max规范化对象iris_scale=m_scaler.fit_transform(iris)iris_scale=pd.DataFrame(data=iris_scale,columns=["petal_len","petal_wid","sepal_len","sepal_wid"])print("规范化后的前5条iris数据:\n",iris_scale[0:5])三、数据变换(2)
零均值规范化“零-均值”规范化,也称为标准差规范化或Z-分数规范化(Z-scoreScaling),是按照均值中心化,然后利用标准差重新缩放数据,使数据服从均值为0,方差为1的正态分布,计算方式如下:
sklearn.preprocessing模块提供了StandardScaler类能帮助我们快速实现数据的“零-均值三、数据变换(2)
零均值规范化fromsklearn.datasetsimportload_irisfromsklearn.preprocessingimportStandardScalerimportpandasaspdiris=load_iris().data#使用标准差规范化对数据进行处理iris_scale=StandardScaler()#创建一个标准差规范化对象iris_scale=iris_scale.fit_transform(iris)iris_scale=pd.DataFrame(data=iris_scale,columns=["petal_len","petal_wid","sepal_len","sepal_wid"])print("规范化后的前5条iris数据:\n",iris_scale[0:5])三、数据变换2.数值特征的二值化和离散化二值化(Binarization)是将连续取值的数据转换为数值0和1的操作,即把数值特征转换为二元特征的过程。sklearn.preprocessing模块中的Binarizer类能创建一个二值化对象,用于数据的二值化操作。它的基本语法为:Binarizer(threshold=0.0)其中,参数threshold表示用于二值化的阈值,默认为0。(1)二值化三、数据变换2.数值特征的二值化和离散化(1)二值化fromsklearn.preprocessingimportBinarizerimportnumpyasnpprice=np.array([1000,2530,3500,6000,200,8200])b=Binarizer(threshold=3000)#创建二值化对象,阙值为3000b_price=b.fit_transform(price.reshape(1,-1))print("二值化后的价格:\n",b_price)三、数据变换2.数值特征的二值化和离散化(2)离散化离散化(Discretization)是通过将连续特征值映射到一定区间或通过使用标称来转换成离散数值或分类特征的过程。常用的离散化方法主要包括等宽法、等频法、以及通过聚类、决策树等算法进行离散化三、数据变换(2)离散化等宽法(Fixed-Width)该方法将连续属性的特征从最小值到最大值划分成具有相同宽度的n个区间,即n个等距区间。其中区间总个数n需要自行设定。等宽法离散化可以通过pandas模块的cut()函数实现,其基本语法为:pandas.cut(x,bins,right=True,labels=None,retbins=False)三、数据变换(2)离散化等频法(Fixed-Frequency)该方法主要根据数据频率进行区间划分,即将数量基本相同的记录放入区间,划分成为等频区间,以保证每个区间的频率基本一致。与等宽法类似,等频法离散化可以通过pandas库中的qcut()函数实现,其基本语法为:pandas.qcut(x,
q,
labels=None,
retbins=False)三、数据变换(2)离散化importpandasaspd#生成销量数据sale_df=pd.DataFrame({'sale':[400,50,100,450,500,320,160,280,320,380,200,460]})#等宽离散化sale_df['sale_fixedwid']=pd.cut(sale_df["sale"],bins=3)print(sale_df)#等频离散化sale_df['sale_fixedfreq']=pd.qcut(sale_df["sale"],q=4)print(sale_df)三、数据变换3.标称特征的数值化处理它将标称特征类型编码为二元数值特征,如0或1。例如,一个名称为“天气”的标称特征可能包含的取值为“晴天”、“阴天”和“雨天”。通过数据变换处理,结果生成三个二元特征,即判断“天气=晴天”、“天气=阴天”和“天气=雨天”。这三个二元特征的可能值为1(True/真)或0(False/假)。独热编码主要通过调用sklearn.preprocessing模块中的OneHotEncoder类实现,基本使用语法如下所示。OneHotEncoder(
categories='auto',
drop=None,
sparse=True,
handle_unknown='error')(1)独热编码三、数据变换3.标称特征的数值化处理(1)独热编码
另外,使用Pandas模块中的get_dummies()函数实现标称特征的二元数值化,这种方法又称为哑变量编码。其基本使用语法如下所示。get_dummies(data,
prefix=None,
prefix_sep='_',
dummy_na=False,
columns=None,
drop_first=False,
dtype=None)三、数据变换(1)独热编码importpandasaspdfromsklearn.preprocessingimportOneHotEncoder,LabelEncoder#原始数据weather_df=pd.DataFrame({'天气':['晴天','雨天','阴天','晴天'],'销量':[400,50,100,450]})print(weather
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第一章一方水土养一方人教学设计2023-2024学年高二地理人教版(2019)选择性必修3
- 中国打印墨水行业市场运营现状及投资规划研究建议报告
- 第14课 制作数字小报教学设计
- 第25章 第3节 《远离烟酒 拒绝毒品》教学设计-2024-2025学年初中生物八年级下册同步教学(苏科版)
- 2025年酒店总经理任期目标与绩效管理合同
- Unit 3 Fascinating Parks Explore theme parks and write about a park 教学设计-2024-2025学年高中英语人教版(2019)选择性必修第一册
- 第1章第3节 怎样学习化学教学设计-2024-2025学年九年级化学沪教版(全国)(2024)上册
- 家政人员派遣合同模板
- 汽车赛事运输合同样本
- 二零二五年度医院与医疗志愿者签订的志愿服务劳动合同书
- 2024年江苏省卫生健康委员会所属事业单位招聘笔试真题
- 教育强国建设规划纲要(2024-2035年)要点解读(教育是强国建设民族复兴之基)
- 廉洁知识培训课件
- 2025年电梯专用电机项目可行性研究报告
- 煤矿安全生产方针及法律法规课件
- 建筑行业新员工试用期考核制度
- 二年级经典诵读社团计划
- 洁净室施工组织设计方案
- 2025年教科室工作计划样本(四篇)
- 2024年版古董古玩买卖合同:古玩交易税费及支付规定
- 高职院校高水平现代物流管理专业群建设方案(现代物流管理专业群)
评论
0/150
提交评论