《Python工程应用—机器学习方法与实践第3章数据预处理》由会员分享,可在线阅读,更多相关《Python工程应用—机器学习方法与实践第3章数据预处理(45页珍藏版)》请在金锄头文库上搜索。
1、第一章第一章 概论概论西华大学西华大学机器学习第三章 数据预处理XXX学校XXXXXX20222022目录Contents概述数据预分析数据清理数据集成数据变换数据规约主要数据预处理函数 3 XXXXXXXXXXXXXXXXX 本章知识图谱本章知识图谱3求是 明德 卓越 概述一 5 XXXXXXXXXXXXXXXXX1 1 概述概述5数据特点:不完整、不一致、冗余、易受噪声干扰数据预处理数据预分析数据清理数据集成数据规约数据转换对数据的特性有个大致的了解使数据格式标准化、清除异常数据、纠正错误、清除重复数据将多个数据源的数据进行整合并统一存储通过平滑聚集、数据概化、规范化等方式将数据转换成适用
2、于后续处理的形式。在保持原数据的完整性的情况下对数据集进行规约或简化。求是 明德 卓越数据预分析二 72 2 数据预分析数据预分析7数据统计特性分析数据质量分析查看数据的一些统计特性,包括均值、方差、最大值、最小值等检查原始数据中是否存在脏数据包括针对缺失值分析、异常值分析、以及不一致的值、重复数据和含有特殊符号的数据的分析。数据预分析 82.1 2.1 统计特性分析统计特性分析8 数据统计特性分析可以通过Pandas包中的describe()函数很方便的实现。describe函数的原型为:DataFrame.describe(percentiles=None,include=None,exc
3、lude=None,datatime _is_numeric=false)percentiles:该参数可以设定数值型特征的统计量,默认是.25,.5,.75,也就是返回25%、50%、75%数据量时的数字,但是这个可以修改的,如可以根据实际情况改为.25,.5,.8,即表示返回25%、50%、80%数据量时的数字。include:该参数默认只计算数值型特征的统计量,当输入include=O时,会计算离散型变量的统计特征,当参数是all的时候会把数值型和离散型特征的统计量都进行显示。exclude:该参数可以指定在统计的时候不统计哪些列,默认不丢弃任何列。datetime_is_numeric
4、:一个布尔类型的值,表明是否将datetime类型视为数字。这会影响该列计算的统计信息。92.1 2.1 统计特性分析统计特性分析9 示例代码段:import pandas as pddf=pd.DataFrame(categorical:pd.Categorical(d,e,f),numeric:1,2,3,object:a,b,c )df.describe()#描述一个DataFrame。默认情况下,仅返回数字字段 df.describe(include=all)#描述DataFrame数据类型的所有列 102.2 2.2 数据质量分析数据质量分析101.缺失值分析数据的缺失主要包括记录的
5、缺失和记录中某个字段信息的缺失,两者都会造成分析结果的不准确性(1)缺失值产生的原因 缺失值产生的原因主要包括:部分信息暂时无法获取,或者获取信息的代价太大;部分信息由于数据采集设备故障、存储介质故障或者传输故障等原因被遗漏或者丢失;某些对象的该属性值并不存在,从而造成缺失值的产生。112.2 2.2 数据质量分析数据质量分析11(2)缺失值的影响 缺失值产生的影响主要有:机器学习建模将丢失大量的有用信息,模型中蕴含的规律更难把握,机器学习中所表现出的不确定性更加显著。除此之外,包含空值的数据会使建模过程陷入混乱,导致不可靠的输出。(3)缺失值的分析 虽然缺失值的影响很深远,但是使用简单的统计
6、分析,就可以得到缺失值的相关属性,即缺失属性数、缺失数以及缺失率等。122.2 2.2 数据质量分析数据质量分析122.异常值分析 异常值分析是检验是否有录入错误以及是否含有不合常理的数据。忽视异常值的存在是一个十分危险的行为,不加剔除地将异常值包括到数据的计算分析过程中,对结果会产生不良影响。(1)简单统计量分析 通过上一小节介绍的数据统计特性分析能发现一些简单的数据异常值。比如,可以通过某个变量的最大值和最小值来判断这个变量的取值是否超出合理的范围,如用户年龄为2020岁,则该变量的取值就存在异常。132.2 2.2 数据质量分析数据质量分析13 142.2 2.2 数据质量分析数据质量分
7、析14(2)箱型图分布 152.2 2.2 数据质量分析数据质量分析153.一致性分析 数据不一致性是指数据的矛盾性、不相容性。直接对不一致性的数据进行学习,可能会产生与实际相违背的学习结果。数据分析过程中,不一致数据的产生主要发生在数据集成的过程中,这可能是由于被用于分析的数据是来自不同的数据源、对于重复存放的数据未能进行一致性更新造成的。例如:两张表中都存储了用户的电话号码,但是在用户的电话号码发生改变之时只更新了一张表中的数据,那么两张表中就有了不一致的数据,这样在数据建模过程中会导致学习出现误差。求是 明德 卓越 数据清理三 173.1 3.1 异常值处理异常值处理17表3-1异常值处
8、理方法 数据预处理时,异常值是否剔除,需视具体情况而定,因为有些异常值可能蕴含着某种有用的信息。异常值处理常用的方法如表3-1所示。异常值处理方法方法描述删除直接将含有异常值的记录删除视为缺失值将异常值视为缺失值,利用缺失值处理的方法进行处理平均值修正可用前后两个观测值的平均值修正该异常值不处理直接在具有异常值的数据集上进行建模 183.2 3.2 缺失值处理缺失值处理18表3-2 常用插补方法 缺失值处理的方法主要可以分为三类:删除记录、数据插补和不处理。其中,最常用的是数据插补方法。常用的插补方法如表3-2所示。插补方法插补方法方法描述方法描述均值均值/中位数中位数/众数插补众数插补用该属
9、性取值的平均数/中位数/众数进行插补使用固定值使用固定值将缺失的属性值用一个常量替换最近临插补最近临插补在记录中找到与缺失样本最接近的样本的属性值插补回归方法回归方法对带有缺失值的变量,根据已有的数据和与其相关的其他变量(因变量)的数据建立拟合模型来预测缺失的属性值插值法插值法 193.2 3.2 缺失值处理缺失值处理19拉格朗日插值法介绍:(1)求已知的过n个点的n-1次多项式:203.2 3.2 缺失值处理缺失值处理20解出拉格朗日插值多项式为:213.2 3.2 缺失值处理缺失值处理21拉格朗日插值法演示:首先,构造数据,设置异常值,把销量大于5000和销量小于400的异常值替换为Non
10、e,最后,定义拉格朗日插值函数,对数据进行插值,实现代码如下所示:import pandas as pd#导入数据分析库Pandasfrom scipy.interpolate import lagrange#导入拉格朗日插值函数inputfile=./data/catering_sale.xls#销量数据路径outputfile=./tmp/sales.xls#输出数据路径data=pd.read_excel(inputfile)#读入数据#过滤异常值,将其变为空值datau销量(datau销量 5000)=None 223.2 3.2 缺失值处理缺失值处理21#s为列向量,n为被插值的位置
11、,k为取前后的数据个数,默认为5 def ployinterp_column(s,n,k=5):if n k:y=slist(range(n+1,n+1+k)else:y=slist(range(n-k,n)+list(range(n+1,n+1+k)#取数 y=yy.notnull()#剔除空值 return lagrange(y.index,list(y)(n)#插值并返回插值结果#逐个元素判断是否需要插值 for i in data.columns:for j in range(len(data):if(datai.isnull()j:#如果为空即插值 dataij=ployinterp
12、_column(datai,j)data.to_excel(outputfile)#输出结果,写入文件 利用拉格朗日插值对2015/2/21日和2015/2/14日的数据进行插补,结果是4275.255和4156.86求是 明德 卓越 数据集成四 244 数据集成数据集成24 人们日常使用的数据来源于各种渠道,数据集成就是将多个文件或者多个数据源中的异构数据进行合并,然后存放在一个统一的数据库中进行存储。在数据集成过程中,来自多个数据源的现实世界实体的表达形式有的是不一样的,有可能是不匹配的,要考虑实体识别问题的属性冗余问题,从而将原始数据在最底层上加以转换、提炼和集成。254.1 实体识别实
13、体识别25 实体识别是指从不同数据源识别出现实世界的实体,任务是统一不同数据源的矛盾之处。实体识别中常常存在的问题有以下三种。(1)同名异义两个数据源中同名的属性描述的不是同一个意思。(2)异名同义两个数据源中同一个属性有两个不同的名字。(3)单位不统一描述同一实体分别使用不同的单位。实体识别过程中,我们需要对同名异义、异名同义以及单位不统一的情况进行准确识别 264.1 冗余属性识别冗余属性识别26冗余属性是指数据中存在冗余的情况,一般分为以下两种情况:(1)同一属性多次出现 不同的两个数据源中,同一个属性在两个数据源中都有记录,当对数据源进行集成的时候,若不进行处理,新数据集中同一属性就多
14、次出现,导致我们需要处理大量的重复数据。(2)同一属性命名不一致 在实体识别中所提到的异名同义的情况下,若不对数据进行处理,新数据集中同一属性多次出现,不仅会导致我们处理的数据量增大,还会影响我们模型的建立,从而导致输出结果不准确。求是 明德 卓越 数据变换五 285 数据变换数据变换28 数据变换是指将数据转换成统一的适合机器学习的形式。比如将连续的气温数值变为高、中、低这样的离散形式,或将字符描述变为离散数字等。295.1简单函数变换简单函数变换29 简单函数变换是指对采集的原始数据使用各种简单数学函数进行变换,常见的函数包括平方、开方、取对数、差分运算等。简单的函数变换常用来将不具有正态
15、分布的数据变换为具有正态分布的数据。在时间序列分析中,有时简单的差分运算就能将序列转换成平稳序列。如果数据较大,可以取对数或者开方将数据进行压缩,从而减小数据的处理量。305.2 归一化归一化30缺陷:当有新数据加入时,可能导致和的变化。315.2 归一化归一化31 325.2 归一化归一化32#-*-coding:utf-8-*-#数据规范化import pandas as pdimport numpy as npdatafile=./data/normalization_data.xls#参数初始化data=pd.read_excel(datafile,header=None)#读取数据(
16、data-data.min()/(data.max()-data.min()#最小-最大规范化(data-data.mean()/data.std()#零-均值规范化data/10*np.ceil(np.log10(data.abs().max()#小数定标规范化 335.3 连续属性离散化连续属性离散化33 数据离散化本质上是将数据离散空间划分为若干个区间,最后用不同的符号或者整数值代表每个子区间中的数据。离散化涉及两个子任务:确定分类和将连续属性值映射到这个分类之中。(1)等宽法:根据需要,首先将数据划分为具有相同宽度的区间,区间数据事先制定,然后将数据按照其值分配到不同区间中,每个区间用一个数据值表示。(2)等频法:这种方法也是需要先把数据分为若干个区间,然后将数据按照其值分配到不同区间中,但是和等宽法不同的是,每个区间的数据个数是相等的。(3)基于聚类分析的方法:这种方法是指将物理或者抽象对象集合进行分组,再来分析由类似的对象组成的多个类,保证类内相似性大,类间相似性小。聚类分析方法的典型算法包括K-Means(也叫K-均值)算法、K-中心点算法,其中最常用的算法就是K-Mea