《大数据分析技术》 教案 第1章教案.数据预处理_第1页
《大数据分析技术》 教案 第1章教案.数据预处理_第2页
《大数据分析技术》 教案 第1章教案.数据预处理_第3页
《大数据分析技术》 教案 第1章教案.数据预处理_第4页
《大数据分析技术》 教案 第1章教案.数据预处理_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

课程教案课程名称:大数据分析技术课程类型:专业核心课程上课时间:2024至2025学年第2学期授课对象:22级应用统计学23级数据科学与大数据技术23级应用统计学教师姓名:所属院部:数学与计算机学院第一章数据预处理§1导言教案-PAGE1-教学过程设计第一课时一、提出问题,并导出新知课主讲教师教学思路向导时间20分钟(一)问题:为什么要预处理数据数据采集完成后所获得的数据是对研究对象的第一手资料,称为原始数据。原始数据一般要经过预处理之后才能应用于数据分析。(二)原因:根据原始数据的特征分析1.原始数据一般有多个来源,不同来源的数据往往有不同的格式,需要将这些不同源、不同格式的数据集成为一个整体。2.原始数据含有脏信息,需要清洗。所谓数据含有脏信息,是指数据具有下列一些性质。(1)不完整:基于分析目的的重要属性在数据中没有。(2)有缺失:有些属性的个别值没有采集到导致数据表中出现空白项。(3)有重复:操作失误,重复记录。(4)有异常值:一是离群点,二是不一致数据。(5)含噪声:数据中存在随机干扰。(6)不一致:数据“不一致性”含义非常丰富,包括量纲不一致、尺度不一致、时段不一致、数据格式不一致,等等。(7)值唯一:有些变量的值是唯一的,这样的变量在数据分析时没有意义。(8)数据有误:数据采集不准确,出现错误数据。(9)有冗余信息:比如交易管理系统对每笔交易时间的记录形如“2011/2/2000:00:00”,该时间型数据含“年月日时分秒”,实际上做客户流分析时“时分秒”信息是冗余的。(10)有特殊符号:数据值带有如“#,$,¥”等符号,不利于数据分析需要清洗。3.原始变量中属性变量需要转换为数值型数据之后才能应用于分析。比如,在推断身高与“性别”的相关关系时,需要将变量“性别”数值化才能引入模型中。详情见第3节。4.某些连续型数据离散化为属性变量对于挖掘数据的价值更有意义。比如,在研究年龄对高血压、糖尿病等慢性病的影响时,将“年龄”离散化为“青年、中年、老年”,比将“年龄”作为连续型数据更有意义。5.有时原始数据中变量太多,在实际分析时有不少特征用不上,此时需要通过对变量进行筛选、删除、主成分分析(PCA)或线性判别分析(LDA)等方法进行降维。6.数据变换:原始数据应用于数据分析时,需消除量纲和量级的影响。具有左述特征的数据的质量是低劣的,而质量低劣的数据不可能挖掘出高质量的结果,进而就不可能有高质量的应用,更不可能有高质量的决策。二、数据预处理流程主讲教师教学思路向导时间25分钟(一)数据预处理流程图介绍1.数据预处理流程如下图所示:2.数据预处理中各模块的含义(1)数据集成:将多源数据整合在一起,将多个数据表整合为一个数据表,等。(2)数据清洗:清洗数据中的脏信息。(3)数据变换:把原始数据转换成适合数据分析的形式。(4)数据归约:在尽可能保持数据原貌的前提下最大限度地精简数据量。(5)数据仓库:数据预处理好之后,存储于数据仓库备用。三、课堂小结主讲教师教学思路向导时间13分钟1.总结总结这节内容知识点2.引入下一节内容

教学过程设计第一课时一、内容回顾,并导出新知课主讲教师教学思路向导时间5分钟(一)回顾数据进行预处理有关的概念1.预处理数据的原因2.数据预处理的流程(二)引入:数据集成1.数据集成的概念数据集成就是将多个数据集整合为一个数据集。这些数据集或有着共同的研究对象,或描述的对象有着基于研究目的的共性,但它们或来源不同(比如,基于体检数据的慢性病研究,体检数据来自不同的医院),或格式不同(比如xls,xlsx,txt,csv,mat,db等),或变量名称不一致,或数据尺度不一致,等等。2.典型的数据集成操作(1)将来自不同数据源的数据整合在一起;(2)将格式不同的数据文件整合为相同的格式,然后合并在一起;(3)清洗多个数据集的不一致性,然后整合为一个数据集。在数据分析之前需首先对数据进行预处理。数据预处理的第一个步骤是数据集成。二、合并数据主讲教师教学思路向导时间20分钟堆叠合并数据—concat1.堆叠合并数据的概念堆叠合并数据是指将两个或多个表的数据沿x轴或y轴合并起来。2.concat函数的主要参数将两个或多个表沿X轴方向(横向增列)或Y轴方向(纵向增行)拼接在一起,可用pandas库中concat函数来实现。concat函数的主要参数介绍如下。pd.concat(objs,axis=0,join='outer')Objs=要拼接的对象axis:{0,1},拼接方向—0:上下(增加行),1:左右(增加列)join:{inner,outer},拼接轴之外另一个轴的合并方式,其中inner:交集,outer:并集上述参数中axis和join不同设置下的结果综合如下:joinaxisinnerouter0增加行,列取交集增加行,列取并集1增加列,行取交集增加列,行取并集【例1.1】下面程序中,数据框a,b如下两表所示。表1.1数据框a表1.2数据框bABCDBDF1A1B1C1D12B2D2F22A2B2C2D24B4D4F43A3B3C3D36B6D6F64A4B4C4D48B8D8F8(1)按“axis=0、join='outer'”合并a,b结果如表1.3所示。表1.3“axis=0、join='outer'”合并a,bABCDF1A1B1C1D12A2B2C2D23A3B3C3D34A4B4C4D42B2D2F24B4D4F46B6D6F68B8D8F8按“axis=1、join='outer'”合并a,b结果如表1.4所示。表1.4“axis=0、join='outer'”合并a,bABCDBDF1A1B1C1D12A2B2C2D2B2D2F23A3B3C3D34A4B4C4D4B4D4F46B6D6F68B8D8F8(3)按“axis=0、join='inner'”合并a,b结果如表1.5所示。表1.5“axis=0、join='inner'”合并a,bBD1B1D12B2D23B3D34B4D42B2D24B4D46B6D68B8D8(4)按“axis=1、join='inner'”合并a,b结果如表1.6所示。表1.6“axis=1、join='inner'”合并a,bABCDBDF2A2B2C2D2B2D2F24A4B4C4D4B4D4F4通过上述两个合并示例知,合并中没有元素的地方用空值补全。例1.1的完整程序:#%%数据合并###例1.1concat数据合并示例##生成数据importpandasaspd#生成数据框aacol=['A','B','C','D']arow=range(1,5)a=[['A1','B1','C1','D1'],['A2','B2','C2','D2'],['A3','B3','C3','D3'],['A4','B4','C4','D4']]a=pd.DataFrame(data=a,index=arow,columns=acol)#生成数据框bbcol=['B','D','F']brow=[2,4,6,8]b=[['B2','D2','F2'],['B4','D4','F4'],['B6','D6','F6'],['B8','D8','F8']]b=pd.DataFrame(data=b,index=brow,columns=bcol)##数据合并#axis=0,join='outer':纵向增行、横向并集axb_0_outer=pd.concat([a,b],axis=0,join='outer')#axis=1,join='outer':横向增列、纵向并集axb_1_outer=pd.concat([a,b],axis=1,join='outer')#axis=0,join='inner':纵向增行、横向交集axb_0_inner=pd.concat([a,b],axis=0,join='inner')#axis=1,join='inner':横向增列、纵向交集axb_1_inner=pd.concat([a,b],axis=1,join='inner')(二)主键合并数据—merge1.主键合并数据的概念主键合并,即通过一个或多个键将两个数据集的行连接起来。2.merge函数实现主键合并的函数是merge,有五种连接方式:左连接(left)、右连接(right)、内连接(inner)、外连接(outer)和交叉连接(cross)。其中最简单的合并方式-inner和outer,涉及的主要参数如下。pd.merge(left,right,how='inner',on=None)left和right分别表示要合并的左表和右表How:{'left','right','outer','inner','cross'},数据连接方式on:表示两个表合并的主键(两表主键必须一致)【例1.2】将例1.1中的a,b两张表以列键“B,D”为主键进行交集合并;(2)并集合并。在例1.1的程序后继续添加下述代码:#例1.2merge数据合并示例axb_merge_inner=a.merge(b,how='inner',on=['B','D'])axb_merge_outer=a.merge(b,how='outer',on=['B','D'])合并结果如表1.7所示。表1.7(a)how='inner',on=['B','D']表1.7(b)how='outer',on=['B','D']ABCDFABCDF0A2B2C2D2F20A1B1C1D11A4B4C4D4F41A2B2C2D2F22A3B3C3D33A4B4C4D4F44B6D6F65B8D8F8(三)重叠数据合并—combine_first数据分析和处理过程中若出现两份数据的内容几乎一致的情况,但是某些特征在其中一张表上是完整的,而在另外一张表上的数据则是缺失的时候,可以用combine_first方法进行重叠数据合并,其原理示意如下。表1.8表1.9表1.10表1.8和表1.9重叠合并0120120120NaN3.05.0142NaN8.20NaN3.05.01NaN4.6NaN2107.04.01424.68.22NaN7.0NaN2107.04.0combine_first的具体用法如下。df=bine_first(df2)对df1和df2进行重叠合并为df【例1.3】下述程序中数据框c和d如表11和表12所示。表1.11数据框c表1.12数据框d表1.13重叠合并idcpuidcpuidcpu010i701i71i312i312i323i52323i533i53i54545i345i3对c和d进行重叠合并,得到表1.13所示的数据框。#例1.3-重叠合并示例importpandasaspdimportnumpyasnpc=pd.DataFrame({'id':[1,np.nan,3,np.nan,5],'cpu':[np.nan,'i3','i5',np.nan,np.nan]})d=pd.DataFrame({'id':[np.nan,2,3,np.nan,5],'cpu':['i7','i3',np.nan,'i5','i3']})#对c和d进行重叠合并cxd=bine_first(d)多源原始数据首先需要合并,即将两个或多个表的数据合并为一张表。左面介绍pandas的数据合并功能。。培养编写程序能力。当合并方式是inner或outer时的含义:两表的列按并集合并,行则按on指定的主键进行交集(inner)或并集(outer)合并!特别注意concat与merge在合并数据时的差异。三、案例分析主讲学生教学思路向导时间15分钟数据集“第2节-运筹学成绩.xlsx”是某校“金融数学”和“应用数学”两个专业五个年级的运筹学成绩,五个年级的成绩分别保存在不同的表中。试将五张表格的成绩合并在一张表中。1.实验过程将合并成绩输出为数据框,该数据框有三列:“年级”、“金融数学”、“应用数学”。五张表有相同的列标签:“金融数学”、“应用数学”,所以用数据框的append()方法将五张表整合在一张表中。2.实验程序#%%第1章第2节案例分析-数据集成示例importpandasaspdimportnumpyasnpscore=pd.DataFrame(columns=["金融工程","数学"])grade=[]forkinrange(2015,2020):#逐一读入五张表的数据temp=pd.read_excel("第2节-运筹学成绩.xlsx",sheet_name=str(k))score=pd.concat([score,temp],axis=0,join='inner')#生成“年级”列r=temp.shape[0]grade=grade+list(k*np.ones(r))#将“年级”插入第1列score.insert(loc=0,column="年级",value=grade)#将集成结果写入excelscore.to_excel("运筹学合并成绩.xlsx")3.实验结果序号年级金融数学应用数学120157168220157882…………55201574NaN56201591NaN5720166145820165257…………114201645NaN115201650NaN1162017729011720179863…………201201774NaN202201797NaN2032018845820420186049…………269201872NaN270201874NaN2712019909727220198396…………3672019NaN433682019NaN39培养学生编程思想,掌握数据集成步骤,为实验铺路。四、课堂小结主讲教师教学思路向导时间5分钟对学生的讲课进行点评2.引出下一个知识点3.下课培养学生学习素养。现学现考查:培养学生课堂注意力的持久性和实时学习力。

教学过程设计第一课时一、内容回顾,并导出新知课主讲教师教学思路向导时间5分钟(一)回顾数据集成有关的知识数据集成的概念合并数据:concat,merge,combine_first高阶:三个参数的经济学意义(二)数据清洗原始数据在集成之后需要通过补充完整数据、填补缺失数据或删除空白数据、删除重复数据、消除异常数据、平滑噪声数据、纠正不一致数据等一系列清洗操作。1.可简单处理的清洗项(1)数据不完整:补充采集或仿真。(2)属性值唯一:直接删除该属性。(3)属性值含冗余信息:直接删除冗余信息。(4)属性值含特殊符号,比如$、*等符号:根据分析需要直接删除特殊符号或通过标准化数据来消除特殊符号。二、重复值的检测与处理主讲教师教学思路向导时间10分钟(一)重复数据的概念所谓数据重复,即一个或者多个特征中出现了完全相同的观测值。(二)数据去重方法1.unique函数去重2.set函数去重3.drop_duplicates函数去重df(Series).drop_duplicates(subset=None,keep='first',inplace=False)subset:表示需要去重列的列名,默认表示删除重复的行keep:{fisrt,last,False},表示重复时保留第几个数据first=保留第一个last=保留最后一个False=只要有重复,一个都不保留inplace:{True,False},表示是否在原表上进行操作需特别提醒的是,drop_duplicates是按某一列或某几列的重复元素删去重复数据所在的行!【例1.4】随机生成两个介于5~15之间的整数m和n,再随机生成一个元素介于10~20之间的m×n整数矩阵M。应用三种去重方法对M#例1.4程序-数据去重示例importnumpyasnpimportpandasaspd#生成数据np.random.seed(2)m=np.random.randint(10,15,size=1)n=np.random.randint(5,m,size=1)M=np.random.randint(10,20,size=(m[0],n[0]))print('\n',"生成的矩阵为:M=",'\n',M)#1.unique去重#1.1numpy中的unique函数A=np.unique(M)print('\n',"矩阵M元素经np.unique函数去重后的数据:",'\n',A)#此时输出的是一个一维数组,包含M中全部的互异元素#1.2pandas中的unique方法df=pd.DataFrame(data=M)col=df.shape[1]B=[[]foriinrange(col)]foriinrange(col):B[i]=df.iloc[i].unique()print('\n',"矩阵M元素经df.unique()方法去重后的数据:",'\n',B)#此时输出项B是个列表,第i个元素就是M第i列的全部互异值!#2.set去重#set只能去一维数据的重复元素【一维数据:没有嵌套的一维列表或一维数组】,#所以用set去重前,需将数据转化为一维数据。C=set(M.flatten())print('\n',"矩阵M元素经set函数去重后的数据:",'\n',C)#此时输出的是一个集合,包含M中全部的互异元素!#3.drop_duplicate去重#按第2列重复元素去行D=df.drop_duplicates(subset=1)print('\n',"矩阵M元素经drop_duplicates函数按第2列重复元素删去行的数据:",'\n',D)相应结果如下:0.生成的矩阵为:M=[[1612181712][1115141415][1713161413][1716111315][1814161319][1210141214][1117181219][1817111618][1519191913][1010121818]]1.矩阵M元素经np.unique函数去重后的数据:[10111213141516171819]2.矩阵M元素经df.unique()方法去重后的数据:[array([16,12,18,17]),array([11,15,14]),array([17,13,16,14]),array([17,16,11,13,15]),array([18,14,16,13,19])]3.矩阵M元素经set函数去重后的数据:{10,11,12,13,14,15,16,17,18,19}4.矩阵M元素经drop_duplicates函数按第2列重复元素删去行的数据:关于重复数据,要注意以下几点:a.弄清楚发生重复数据的原因;b.如何找到重复数据;c.找到重复数据后如何处理。注意,set去重应用的是集合元素的唯一性特性,会导致数据的排列发生改变。方法三只对pandas中的数据框或Series类型有效,该方法不会改变数据的原始排列,且兼具代码简洁和运行稳定的特点。三、缺失值的检测与处理主讲教师教学思路向导时间10分钟数据中某个或某些特征的值是不完整的,这些值称为缺失值。(一)缺失值处理方法概览1.直接删除:简单粗暴;2.直接忽略:既不删除也不填充;3.填充:有光滑填充和不光滑填(二)pandas对缺失值的检测与处理1.pandas对缺失值的检测pandas提供了识别缺失值的方法isnull以及识别非缺失值的方法notnull,两种方法在返回的都是布尔值True或False。返回的结果正好相反,结合sum函数可检测数据中一共含有多少缺失值以及缺失值的分布。2.pandas处理缺失值的方法(1)删除法删除法分为删除观测记录和删除特征,它属于利用减少样本量来换取信息完整度的一种方法,是一种最简单的缺失值处理方法。删除缺失值的方法:dropna,该方法既可以删除观测记录,也可以删除特征。df.dropna(axis=0,how='any',thresh=None,subset=None,inplace=False)axis:{0,1},0为删除观测记录(行),1为删除特征(列)。how:{'any','all'},'any'表示只要有缺失值就执行删除操作,'all'则表示删除全部为缺失值的行或列。Thresh=n,表示保留至少含有n个非na数值的行。subset:表示进行删除缺失值操作的列或行,默认表示所有列或行。inplace:{True,False},表示是否在原表上操作。(2)填充法填充法是指用一个特定的值填充缺失值。特征可分为数值型和类别型,两者出现缺失值时的处理方法也是不同的。pandas提供了缺失值填充的方法:fillna,其基本语法如下。df.fillna(value=None,method=None,axis=1,inplace=False,limit=None)value:用来替换缺失值的值method:{backfill/bfill,pad/ffill},bfill/ffill分别表示使用下/上一个非缺失值填充缺失值。axis:{0,1},填充方向inplace:{True,False},是否在原表上操作limit:表示填补缺失值个数的上限,超过则不进行填补【例1.5】下述程序中数据框a如下表1.14所示。表1.14数据框a表1.15填充后idcpuidcpu0101i31i3填充13i323i523i53i333i34545i3均值3众数i3(1)对缺失值进行填充(2)对缺失值进行删除:删除有缺失值的行程序:#例1.5-缺失值处理示例importpandasaspdimportnumpyasnpa=pd.DataFrame({'id':[1,np.nan,3,np.nan,5],'cpu':[np.nan,'i3','i5','i3',np.nan]})#1.填充b=a.copy()#--数值型数据id_mean=a['id'].mean()#均值填充缺失值b['id'].fillna(id_mean,inplace=True)#--类别型数据cpu_mode=a['cpu'].value_counts().index[0]#众数填充缺失值b['cpu'].fillna(cpu_mode,inplace=True)#2.删除:删除有缺失值的行c=a.dropna()print('\n',"删除有缺失值的行:",'\n',c)结果如下:删除有缺失值的行:idcpu23.0i5(3)插值法插值是一种通过已知的、离散的数据点,计算新数据点的过程或方法。常用的插值法有线性插值、多项式插值和样条插值等。缺失值所在特征为数值型时,通常利用其均值、中位数和众数等描述其集中趋势的统计量来填充缺失值。缺失值所在特征为类别型时,则选择使用众数来填充缺失值。四、异常值的检测与处理主讲教师教学思路向导时间5分钟所谓的异常值,是指离群点,就是过大或过小、偏离常态的值。(一)简单统计量分析简单统计量分析是指最大值最小值判断,是否超出合理范围。(二)3σ原则3σ原则又称为拉依达法则,它将异常值定义为一组测定值中与平均值的偏差超过3倍标准差的值。距离平均值3σ之外的值概率为Px(三)箱线图识别1.异常值的定义箱线图将异常值定义为不在此范围的值2.箱线图对异常值识别的图示3.箱线图的python实现bx=series.boxplot(return_type='dict')sigulary=bx['fliers'][0].get_ydata()培养数学建模思想,掌握数学建模步骤,为实验铺路,为数学建模奠基。五、含噪声数据的处理方法主讲教师教学思路向导时间5分钟噪声,是指随机误差。数据含有噪声,是指数据的观测值偏离真实值,出现了随机误差。数据一般都要去噪处理,也称为数据的平滑处理。Python使用rolling方法来平滑数据。df.rolling(window,min_periods=none,center=False,win_type=none,on=none,axis=0,closed=none)window:表示时间窗的大小,int或表示移动窗向前几个数据;Offset则是针对datetime格式的index进行范围限定min_periods:每个窗口最少包含的观测值数量,小于这个值的窗口结果为NA。值可以是int,默认None。offset情况下,默认为1。center:把窗口的标签设置为居中。默认False,居右win_type:窗口的类型,即截取窗的各种函数,默认为None。on:可选参数。对于dataframe而言,指定要计算滚动窗口的列。值为列名。axis:默认为0,即对列进行计算closed:定义区间的开闭,支持int类型的window。对于offset类型默认是左开右闭的,即默认为right,可以根据情况指定为left或both等。六、案例分析主讲学生教学思路向导时间5分钟titanic数据集记录了titanic号游轮上891位乘客的12个方面的信息的数据集。此处截取前面12条记录如表1.18所示PassengerIDSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked103Braund,Mr.OwenHarrismale2210A/5211717.25S211Cumings,Mrs.JohnBradley(FlorenceBriggsThayer)female3810PC1759971.2833C85C313Heikkinen,Miss.Lainafemale2600STON/O2.31012827.925S411Futrelle,Mrs.JacquesHeath(LilyMayPeel)female351011380353.1C123S503Allen,Mr.WilliamHenrymale35003734508.05S603Moran,Mr.Jamesmale003308778.4583Q701McCarthy,Mr.TimothyJmale54001746351.8625E46S803Palsson,Master.GostaLeonardmale23134990921.075S913Johnson,Mrs.OscarW(ElisabethVilhelminaBerg)female270234774211.1333S1012Nasser,Mrs.Nicholas(AdeleAchem)female141023773630.0708C1113Sandstrom,Miss.MargueriteRutfemale411PP954916.7G6S1211Bonnell,Miss.Elizabethfemale580011378326.55C103S进行titanic数据集基于研究目的的数据清洗过程。结果如下:RangeIndex:891entries,0to890Datacolumns(total12columns):#ColumnNon-NullCountDtype缺失量缺失率0PassengerId891non-nullint64001Survived891non-nullint64002Pclass891non-nullint64003Name891non-nullobject004Sex891non-nullobject005Age714non-nullfloat641770.1986536SibSp891non-nullint64007Parch891non-nullint64008Ticket891non-nullobject009Fare891non-nullfloat640010Cabin204non-nullobject6870.77104411Embarked889non-nullobject20.002245培养学生能力素质。四、课堂小结主讲教师教学思路向导时间5分钟1.总结2.引出下一个知识点3.下课

教学过程设计第一课时一、内容回顾主讲教师教学思路向导时间4分钟(一)回顾数据清洗有关的知识可简单处理的清洗项重复值的检测与处理缺失值的检测与处理异常值的检测与处理含噪声数据的处理方法二、定性变量的赋值方法主讲教师教学思路向导时间13分钟(一)独热编码1.定义对于有n个取值的定性变量,独热编码时需要引入n个符号变量:(1)一个符号变量对应原定性变量的一个取值;(2)每个符号变量的取值都是一个n维布尔向量,其中有且仅有一个“1”(这个唯一的“1”就是独热的含义所在);(3)每个符号变量中那个仅有的“1”对应着原定性变量的一个取值。2.pandas的get_dummies函数pd.get_dummies(data,prefix=None,prefix_sep='_',dummy_na=False,columns=None,sparse=False,drop_first=False)data:需要哑变量处理的数据prefix:表示哑变量化后列名的前缀prefix_sep:表示前缀的连接符dummy_na:{True,False},表示是否为NaN值增加一列columns:表示dataframe中需要编码的列名,默认为None,表示对所有object和category类型进行编码spare:表示虚拟列是否是稀疏的drop_first:{True,False},表示是否通过从k个分类级别中删除第一级获得k-1个分类级别。(二)多热编码对于有n个选项的定性变量,多热编码时需要引入n个符号变量:(1)一个符号变量对应原定性变量的一个取值;(2)对每个参与调研的个体给出的选项,符号变量中对应选项赋值为“1”,没被选择的选项,赋值为“0”。三、连续性数据的离散化主讲教师教学思路向导时间15分钟设有产销平衡的运输问题,其综合运输表如表4所示。试建立其数学模型。(一)等宽离散化pandas提供了cut函数实现连续型数据的等宽离散化,语法如下:pandas.cut(x,bins,right=True,labels=None,retbins=False,precision=3,include_lowest=False,duplicates='raise')x:表示需要进行离散化处理的数据bins:接收int,list,array或tuple。若为int,代表离散化后的类别数;若为序列类型的数据,则表示切分区间right:{True,False},表示右侧是否闭区间labels:离散化后各类别的名称retbins:{True,False},是否返回区间标签precision:显示标签的精度include_lowest:{True,False},表示区间的左边是开还是闭的duplicates:{'raise','drop'},表示重复值处理。当值为raise时不忽略,当值为drop时忽略(二)等频离散化pandas提供了qcut函数实现连续型数据的基于百分位数的等频离散化,语法如下:pd.qcut(x,q,labels=None,retbins=False,precision=3,duplicates='raise')x:表示需要进行离散化处理的数据q:接收int,list,array或tuple。若为int,则q既表示离散化后的类别数,又表示按百分位数为0,1/q,…,(q-1)/q,1/q的等频离散化;若为百分位数序列类型的数据,则表示百分位数切分区间labels:离散化后各类别的名称retbins:{True,False},是否返回区间标签precision:显示标签的精度duplicates:{'raise','drop'},表示重复值处理。当值为raise时不忽略,当值为drop时忽略等宽法离散化对数据分布具有较高要求,若数据分布不均匀,那么各个类的数目也会变得非常不均匀。还可通过聚类对连续性数据离散化,比如单变量的Fisher最优分割法、多变量的k-means聚类法,等等。四、数据变换主讲教师教学思路向导时间13分钟数据变换的概念将数值化数据变换为或统一成适合于数据分析的形式,称为数据变换。数据变换方法1.标准化(Standardization)(1)概念又称为规范化或特征缩放(featurescaling),是指将数值化数据按比例缩放,使之落入一个合适的或事先设定的区间。(2)适用范围z-score标准化方法适用于连续性变量的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况,并要求原始数据的分布近似于高斯分布,否则效果会变得不理想。(3)是否标准化需要标准化的模型总结如下:1)涉及或隐含距离计算的算法,比如K-means、KNN、PCA、SVM等;2)损失函数中含有正则项时,一般需要标准化;3)梯度下降算法,需要标准化。不需要标准化的模型总结如下:1)0/1取值的特征通常不需要标准化,标准化会破坏它的稀疏性。2)与距离计算无关的概率模型,不需要标准化,比如朴素贝叶斯算法。3)与距离计算无关的基于树的模型,不需要标准化,比如决策树、随机森林等,树中节点的选择只关注当前特征在哪里切分对分类更好,即只在意特征内部的相对大小,而与特征间的相对大小无关。4)基于平方损失(即不含正则项)的最小二乘法不需要标准化(4)操作步骤设有形状为m,n型的二维数组我们对X进行列标准化,其步骤如下。S1.求出第j列的均值xj和标准差sS2.进行标准化变换:其中zij为标准化数据,i=1,2,⋯,m。这就完成了第jS3.标准化后的数据围绕0上下波动,大于0说明高于平均水平,小于0则低于平均水平。2.归一化(Normalization)(1)归一化的目标1)把数据缩放至0~1范围之内2)把有量纲表达式变为无量纲表达式(2)归一化的好处1)提升模型的收敛速度2)提升模型的精度3)深度学习中数据归一化可以防止模型梯度爆炸(3)常见的数据归一化方法1)min-max归一化变换2)logistic归一化变换3)arctan归一化变换4)小数定标归一化变换5)将数据归一化到a,b的方法(三)数据变换的python实现1.标准化(Standardization)使用前需导入环境:fromsklearn.preprocessingimportStandardScaler1)功能首先,通过计算训练集中特征的均值、标准差,对每个特征进行独立居中和缩放。然后,将平均值和标准偏差存储起来,在以后的测试集上有相同比例来缩放。奇异值(Outlier)会影响均值和标准差,所以会影响标准化效果。2)参数①copy:boolean,默认为True。如果为False,会尽量避免返回副本,并且直接在原数据上标准化。②with_mean:boolean,默认为True。如果为True,会在缩放前对数据中心化;如果为False,平均值为0。③with_std:boolean,默认为True。如果为True,将数据缩放到单位标准差;如果为False,标准差为1,还可以避免破坏数据的稀疏性。3)属性①mean_:一维数组或None;每个特征的均值。如果with_mean=False,返回None。②var_:一维数组或None;每个特征的方差,也为了计算scale_。如果with_std=False,返回None。③

温馨提示

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

评论

0/150

提交评论