




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
校企合作共编实验讲义《数据分析与挖掘技术》实验指导书
前言本书是编者在多年教学经验基础上,根据职业本科培养目标的要求,结合电子技术新的发展而编写的。作为职业本科院校电子、自动化、通信类等专业数字电子技术实验课程操作指导用书,也可供从事电子技术的工程技术人员参考。教材在内容安排上,以应用为目的,以“必需、够用”为度,将理论知识的讲授与学生能力的培养有机地结合起来。在加强必备的基础知识的前提下,保证内容的实用性。尽量做到深入浅出、删繁就简、重点突出。本书遵循“理论够用、重在应用”的指导思想,将知识点融入到实例中,讲解细致,操作简单,内容丰富、实用,图文并茂,实践性强。本书为了巩固学生的学习成果,每一章均附有课后训练项目及练习题,以期激发学生的学习兴趣,并使学生通过实验与习题获得能力的提高。由于编写时间仓促,加之编者水平有限,难免有不足或疏漏之处,恳请读者批评指正。编者2021年5月第第页实验一相关性系数实验目的1.掌握相关性分析的概念2.能够用Python求解相关性系数3.能够用python绘制散点图二、实验任务任务一:根据给出的数据求解相关性系数任务二:绘制散点图,解释绘制的图形的含义三、实验原理(部分课程可以删除此项)相关系数是最早由统计学家卡尔·皮尔逊设计的统计指标,是研究变量之间线性相关程度的量,一般用字母r表示。由于研究对象的不同,相关系数有多种定义方式,较为常用的是皮尔逊相关系数。相关表和相关图可反映两个变量之间的相互关系及其相关方向,但无法确切地表明两个变量之间相关的程度。相关系数是用以反映变量之间相关关系密切程度的统计指标。相关系数是按积差方法计算,同样以两变量与各自平均值的离差为基础,通过两个离差相乘来反映两变量之间相关程度;着重研究线性的单相关系数。需要说明的是,皮尔逊相关系数并不是唯一的相关系数,但是最常见的相关系数,以下解释都是针对皮尔逊相关系数。依据相关现象之间的不同特征,其统计指标的名称有所不同。如将反映两变量间线性相关关系的统计指标称为相关系数(相关系数的平方称为判定系数);将反映两变量间曲线相关关系的统计指标称为非线性相关系数、非线性判定系数;将反映多元线性相关关系的统计指标称为复相关系数、复判定系数等。相关关系是一种非确定性的关系,相关系数是研究变量之间线性相关程度的量。由于研究对象的不同,相关系数有如下几种定义方式。简单相关系数:又叫相关系数或线性相关系数,一般用字母r表示,用来度量两个变量间的线性关系。复相关系数:又叫多重相关系数。复相关是指因变量与多个自变量之间的相关关系。例如,某种商品的季节性需求量与其价格水平、职工收入水平等现象之间呈现复相关关系。典型相关系数:是先对原来各组变量进行主成分分析,得到新的线性关系的综合指标,再通过综合指标之间的线性相关系数来研究原各组变量间相关关系。NumPy是一个开源的Python库,主要用在数据分析和科学计算,基本上可以把NumPy看做是Python数据计算的基础,因为很多非常优秀的数据分析和机器学习框架底层使用的都是NumPy。比如:Pandas,SciPy,Matplotlib,scikit-learn,scikit-image等。NumPy库主要包含多维数组和矩阵数据结构。它为ndarray(一个n维数组对象)提供了对其进行有效操作的方法。NumPy可以用于对数组执行各种数学运算。并且提供了可在这些数组和矩阵上运行的庞大的高级数学函数库。Python中有一个数据类型叫做List,list中可以存储不同种类的对象。在应用程序中这样做没有什么问题,但是如果是在科学计算中,我们希望一个数组中的元素类型必须是一致的,所以有了NumPy中的Array。NumPy可以快速的创建Array,并且对其中的数据进行操作。NumPy中的Array要比Python中的List要快得多,并且占用更少的内存空间。什么是NumPy?NumPy是用于处理数组的python库。它还拥有在线性代数、傅立叶变换和矩阵领域中工作的函数。NumPy由TravisOliphant于2005年创建。它是一个开源项目,您可以自由使用它。NumPy指的是数值Python(NumericalPython)。为何使用NumPy?在Python中,我们有满足数组功能的列表,但是处理起来很慢。NumPy旨在提供一个比传统Python列表快50倍的数组对象。NumPy中的数组对象称为ndarray,它提供了许多支持函数,使得利用ndarray非常容易。数组在数据科学中非常常用,因为速度和资源非常重要。数据科学:计算机科学的一个分支,研究如何存储、使用和分析数据以从中获取信息。为什么NumPy比列表快?与列表不同,NumPy数组存储在内存中的一个连续位置,因此进程可以非常有效地访问和操纵它们。这种行为在计算机科学中称为引用的局部性。这是NumPy比列表更快的主要原因。它还经过了优化,可与最新的CPU体系结构一同使用。NumPy用哪种语言编写?NumPy是一个Python库,部分用Python编写,但是大多数需要快速计算的部分都是用C或C++编写的。NumPy代码库在哪里?NumPy的源代码位于这个github资料库中:/numpy/numpygithub:使许多人可以在同一代码库上工作。1.Python最重要的绘图工具如今数据分析最常用的两种编程语言分别为R和Python,其中R作为老牌的数据分析语言,集成了大量的数理统计、经济学常用的工具,是数据分析必备的编程语言。而近几年Python凭借其强大的生态,有许多开源的数据处理模块,如Numpy、Pandas、scipy、Matplotlib、SKlearn等,一跃成为数据分析编程语言的黑马。说到使用Python进行数据可视化,最重要的模块便是Matplotlib,其期初是模仿Matplotlib的方式开发的绘图模块,经过迭代已经可以成熟的对Numpy和Pandas进行兼容,使用起来方便而快捷。另一方面,像Seaborn等更加高级的模块也是在Matplotlib的基础上开发的,虽然更加高效,但如果想更加灵活的控制图片的每一个控件,还是需要掌握Matplotlib。2.Matplotlib的绘图方式Matplotlib有两种会图方式,一种是函数式绘图方式(类似MATLAB);另一种是面向对象的绘图方式。如果在导入matplotlib时,你会收到类似『无命名模块』和模块名称的错误,这意味着你还需要安装该模块。一个常见的问题是缺少名为six的模块。这意味着你需要使用pip安装six。或者,你可以前往M并通过访问下载页面下载适当的版本进行安装。请记住,因为你的操作系统为64位,你不一定需要64位版本的Python。如果你不打算尝试64位,你可以使用32位。打开IDLE并阅读顶部。如果它说你是64位,你就是64位,如果它说是32位,那么你就是32位。一旦你安装了Python,你就做好了准备,你可以编写任何你想要的逻辑。我喜欢使用IDLE来编程,但你可以随意使用任何你喜欢的东西。importmatplotlib.pyplotasplt这一行导入集成的pyplot,我们将在整个系列中使用它。我们将pyplot导入为plt,这是使用pylot的python程序的传统惯例。plt.plot([1,2,3],[5,7,4])接下来,我们调用plot的.plot方法绘制一些坐标。这个.plot需要许多参数,但前两个是'x'和'y'坐标,我们放入列表。这意味着,根据这些列表我们拥有3个坐标:1,52,7和3,4。plt.plot在后台『绘制』这个绘图,但绘制了我们想要的一切之后,当我们准备好的时候,我们需要把它带到屏幕上。plt.show()通过numpy的corrcoef函数计算出相关系数,再通过matplotlib进行可视化。四、实验设备1.Windows电脑2.鼠标3.键盘五、实验准备1.导入必要的模块2.加载数据3.相关性系数计算与散点图绘制4.相关性系数的理论知识皮尔逊相关系数测量变量之间的线性关联。它的值可以这样解释:+1-完全正相关+0.8-强正相关+0.6-中等正相关0-无关联-0.6-中度负相关-0.8-强烈的负相关-1-完全负相关我们将说明相关系数如何随不同类型的关联而变化。在本文中,我们还将显示零关联并不总是意味着零关联。非线性相关变量的相关系数可能接近零。皮尔逊相关系数是多少?皮尔逊相关系数也称为皮尔逊积矩相关系数。它是两个随机变量X和Y之间线性关系的度量。在数学上,如果(σXY)是X和Y之间的协方差,并且(σX)是X的标准偏差,则皮尔逊相关系数ρ可以由下式给出:使用Numpy的Python中的Pearson相关系数皮尔逊相关系数可以使用corrcoef()Numpy中的方法在Python中计算。此函数的输入通常是一个矩阵,例如sizemxn,其中:每列代表一个随机变量的值每行代表一个n随机变量样本n代表不同随机变量的总数m代表每个变量的样本总数对于n随机变量,它返回一个nxn方矩阵M,其中M(i,j)指示了随机变量i和之间的相关系数j。由于变量与变量自身之间的相关系数为1,因此所有对角线项(i,i)均等于1。实验步骤1.计算相关性系数importnumpyasnpimportmatplotlibimportmatplotlib.pyplotaspltnp.random.seed(1)x=np.random.randint(0,100,50)y1=0.8*x+np.random.normal(0,15,50)y2=100-0.7*x+np.random.normal(0,15,50)y3=np.random.randint(0,100,50)r1=np.corrcoef(x,y1)r2=np.corrcoef(x,y2)r3=np.corrcoef(x,y3)图1计算相关性系数2.绘制相关性散点图fig=plt.figure()plt.subplot(151)plt.scatter(x,y1,color='k')plt.subplot(153)plt.scatter(x,y2,color='k')plt.subplot(155)plt.scatter(x,y3,color='k')print(r1)print(r2)print(r3)plt.show()图2绘制相关性散点图相关性例题练习importnumpyasnpimportmatplotlibimportmatplotlib.pyplotaspltnp.random.seed(1)x=np.array([14.2,16.4,11.9,15.2,18.5,22.1,19.4,25.1,23.4,18.1,22.6,17.2])y=np.array([215,325,185,332,406,522,412,614,544,421,445,408])r=np.corrcoef(x,y)fig=plt.figure()plt.scatter(x,y,color='k')print(r)plt.show()图3例题练习七、注意事项1.注意计算相关系数的两个变量的长度要相同2.NumPy(NumericalPython的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。主要介绍一下NumPy中corrcoef方法的使用。numpy.corrcoefnumpy.corrcoef(x,y=None,rowvar=True,bias=<novalue>,ddof==<novalue>)[source]返回皮尔逊积矩相关系数。R的值介于-1和1之间,包括端值。参数:x:array_like包含多个变量和观察值的一维或二维数组。x的每一行代表一个变量,每一列都是对所有这些变量的一次观察。另请参阅下面的rowvar。y:数组,可选一组额外的变量和观察结果。y与x具有相同的形状。rowvar:布尔型,可选如果rowvar为True(默认),则每一行代表一个变量,列中包含观察值。否则,关系被转置:每列代表一个变量,而行包含观察值。bias:_NoValue,可选没有效果,请勿使用。ddof:_NoValue,可选没有效果,请勿使用。dtype:数据类型,可选结果的数据类型。默认情况下,返回数据类型将至少具有numpy.float64精度。注意:由于浮点舍入,结果数组可能不是Hermitian,对角线元素可能不是1,元素可能不满足不等式abs(a)<=1。实部和虚部被裁剪到区间[-1,1]试图改善这种情况,但在复杂的情况下并没有多大帮助。此函数接受但丢弃参数偏差和ddof。这是为了向后兼容此函数的先前版本。这些参数对函数的返回值没有影响,可以在这个和以前版本的numpy中安全地忽略。八、思考与练习1.相关性系数的计算公式其中,Cov(X,Y)为X与Y的协方差,Var[X]为X的方差,Var[Y]为Y的方差相关性系数的取值范围相关系数衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高。当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关)。具体的,如果有两个变量:X、Y,最终计算出的相关系数的含义可以有如下理解:当相关系数为0时,X和Y两变量无关系。当X的值增大(减小),Y值增大(减小),两个变量为正相关,相关系数在0.00与1.00之间。当X的值增大(减小),Y值减小(增大),两个变量为负相关,相关系数在-1.00与0.00之间。九、实验报告整理实验数据,分析实验数据,编制实验报告。实验二等深分箱一、实验目的1.掌握等深分箱的概念2.掌握等深分箱的求解过程3.能够用python语言进行等深分箱二、实验任务任务一:根据给出的数据进行等深分箱任务二:描述等深分箱的过程与含义任务三:至少用2种方法进行局部平滑实验原理(部分课程可以删除此项)分箱:分箱方法是一种简单常用的预处理方法,通过考察相邻数据来确定最终值。所谓“分箱”,实际上就是按照属性值划分的子区间,如果一个属性值处于某个子区间范围内,就称把该属性值放进这个子区间所代表的“箱子”内。把待处理的数据(某列属性值)按照一定的规则放进一些箱子中,考察每一个箱子中的数据,采用某种方法分别对各个箱子中的数据进行处理。在采用分箱技术时,需要确定的两个主要问题就是:如何分箱以及如何对每个箱子中的数据进行平滑处理。分箱的方法:有4种:等深分箱法、等宽分箱法、最小熵法和用户自定义区间法。统一权重,也成等深分箱法,将数据集按记录行数分箱,每箱具有相同的记录数,每箱记录数称为箱子的深度。这是最简单的一种分箱方法。统一区间,也称等宽分箱法,使数据集在整个属性值的区间上平均分布,即每个箱的区间范围是一个常量,称为箱子宽度。用户自定义区间,用户可以根据需要自定义区间,当用户明确希望观察某些区间范围内的数据分布时,使用这种方法可以方便地帮助用户达到目的。分箱数据的好处分箱并解锁隐藏在数据集中的信号和惊喜。数据分箱是知识工作者或数据科学家必须具备的一项基本技能。当我们想集体研究模式而不是单独研究模式时,需要事先将单个值分类为多个组。我们可以按值范围、百分位数和数据聚类对值进行分组。分解连续预测变量有什么好处如果您使用分箱并获得分类变量,您可能能够应用不适用于连续变量的学习算法。您的数据集可能更适合其中一种算法,因此这是您的第一个好处。估计由于分箱造成的损失的想法是基于论文“PAClearningwithinrelevantattributes”。这也有其他名称,例如“离散化”、“切碎数据”或“binning”。1有时使用的特定方法包括“中值拆分”或“极端”。分解连续预测变量有什么好处数据分箱是知识工作者或数据科学家必须具备的基本技能。当我们想集体研究模式而不是单独研究模式时,需要事先将单个值分类为多个组。我们可以按值范围、百分位数和数据聚类对值进行分组。如果您使用分箱并获得分类变量,您可能能够应用不适用于连续变量的学习算法。您的数据集可能更适合其中一种算法,因此这是您的第一个好处。估计由于分箱造成的损失的想法是基于论文“PAClearningwithinrelevantattributes”。数据分箱这也被称为“离散化”、“切分数据”或“binning”等其他名称。1有时使用的具体方法包括“中值拆分”或“极端”,这是DataWrangling中的重要步骤之一。分箱:它在连续变量中找到一组易于数据分箱如果您使用分箱并获得分类变量,您可能能够应用不适用于连续变量的学习算法。您的数据集可能更适合其中一种算法,因此这是您的第一个好处。估计由于分箱造成的损失的想法是基于论文“PAClearningwithinrelevantattributes”。这也有其他名称,例如“离散化”、“切碎数据”或“分箱”。1有时使用的具体方法包括“中值拆分”或“极端”。为什么分箱连续数据几乎总是一个错误这是数据整理中的重要步骤之一。Binning的优点:它可以在连续变量中找到一组易于处理的模式此外,binning可以通过减少噪声或非线性来提高预测模型的准确性。最后,分箱可以轻松识别数值变量的异常值、无效值和缺失值。为什么对连续数据进行分箱几乎总是一个错误这也被称为“离散化”、“切分数据”或“分箱”等其他名称。1有时使用的具体方法包括“中值拆分”或“极端”。DataWrangling中的重要步骤。Binning的优势:它在连续变量中找到一组易于识别的模式。在Cox回归中binning的优势是什么?:统计学此外,分箱可以通过减少噪声或非线性来提高预测模型的准确性。最后,分箱可以轻松识别数值变量的异常值、无效值和缺失值。这种聚合虽然与信息丢失有关,但减少了要处理的数据量,便于分析。例如,对数据进行分箱。Cox回归中分箱的优势是什么?:统计是DataWrangling的重要步骤之一。Binning的优点:它可以在连续变量中找到一组易于处理的模式此外,binning可以通过减少噪声或非线性来提高预测模型的准确性。最后,分箱可以轻松识别异常值、数值变量的无效值和缺失值。博客文章:FICO-1034这种聚合虽然与信息丢失有关,但减少了要处理的数据量,便于分析。例如,对数据进行分箱等深分箱:按记录数进行分箱,每箱具有相同的记录数,每箱的记录数称为箱的权重,也称箱子的深度。数据平滑:将数据划分到不同的箱子之后,可以运用如下三种策略对每个箱子中的数据进行平滑处理:平均值平滑:箱中的每一个值被箱中数值的平均值替换。中值平滑:箱中的每一个值被箱中数值的中值替换。边界平滑:箱中的最大值和最小值称为箱子的边界,箱中的每一个值被最近的边界值替换。四、实验设备1.Windows电脑2.鼠标3.键盘实验准备1.导入必要的模块2.需要的数据集3.熟悉等深分箱的步骤和方法4.分箱理论知识部分的介绍分箱:分箱方法是一种简单常用的预处理方法,通过考察相邻数据来确定最终值。所谓“分箱”,实际上就是按照属性值划分的子区间,如果一个属性值处于某个子区间范围内,就称把该属性值放进这个子区间所代表的“箱子”内。把待处理的数据(某列属性值)按照一定的规则放进一些箱子中,考察每一个箱子中的数据,采用某种方法分别对各个箱子中的数据进行处理。在采用分箱技术时,需要确定的两个主要问题就是:如何分箱以及如何对每个箱子中的数据进行平滑处理。分箱的方法:有4种:等深分箱法、等宽分箱法、最小熵法和用户自定义区间法。统一权重,也成等深分箱法,将数据集按记录行数分箱,每箱具有相同的记录数,每箱记录数称为箱子的深度。这是最简单的一种分箱方法。统一区间,也称等宽分箱法,使数据集在整个属性值的区间上平均分布,即每个箱的区间范围是一个常量,称为箱子宽度。用户自定义区间,用户可以根据需要自定义区间,当用户明确希望观察某些区间范围内的数据分布时,使用这种方法可以方便地帮助用户达到目的。例:客户收入属性income排序后的值(人民币元):800100012001500150018002000230025002800300035004000450048005000,分箱的结果如下。统一权重:设定权重(箱子深度)为4,分箱后箱1:800100012001500箱2:1500180020002300箱3:2500280030003500箱4:4000450048005000统一区间:设定区间范围(箱子宽度)为1000元人民币,分箱后箱1:80010001200150015001800箱2:20002300250028003000箱3:350040004500箱4:48005000用户自定义:如将客户收入划分为1000元以下、1000~2000、2000~3000、3000~4000和4000元以上几组,分箱后箱1:800箱2:100012001500150018002000箱3:2300250028003000箱4:35004000箱5:450048005000六、实验步骤1.导入模块importnumpyasnpimportmath#要处理的数据x=np.array([60,65,63,66,67,69,71,72,74,76,77,82,84,87,90])x图1导入模块2.排序#对数据排序x.sort()x3.等深分箱,深度为3#数据长度除以深度3,则为划分的数组行数,第2个3表示多少列,也就是箱子的深度depth=x.reshape(int(x.size/3),3)depth图2等深分箱4.局部平滑(1)按均值进行平滑mean_depth=np.full([5,3],0)mean_depth图3按均值进行平滑foriinrange(0,5):forjinrange(0,3):#第i行算数平均值mean_depth[i][j]=int(depth[i].mean())#按平均值平滑后的等深箱mean_depth图4第i行算数平均值(2)按中位数进行平滑foriinrange(0,5):forjinrange(0,3):#第i行算数平均值mean_depth[i][j]=int(np.median(depth[i]))#按平均值平滑后的等深箱mean_depth图5按中位数进行平滑(3)按边界值平滑#定义等深箱每行左边界edgeLeft=np.arange(5)#定义等深箱每行右边界edgeRight=np.arange(5)#按边界值平滑,初始化edge_depthedge_depth=np.full([5,3],0)edge_depth图5按边界值平滑#等深分箱法、边界值平滑技术#遍历等深箱行foriinrange(0,5):#第i行左边界edgeLeft[i]=depth[i][0]#第i行右边界edgeRight[i]=depth[i][-1]#遍历等深箱列forjinrange(0,3):#第一列,即左边界if(j==0):edge_depth[i][j]=depth[i][0]#进行第一列的最小值赋值#第3列(等深箱最后一列),即右边界if(j==2):edge_depth[i][j]=depth[i][2]else:#非最小、最大值则进行比较#判断距离左边界近还是距离右边界近if(math.pow((edgeLeft[i]-depth[i][j]),2)>math.pow((edgeRight[i]-depth[i][j]),2)):edge_depth[i][j]=edgeRight[i]else:edge_depth[i][j]=edgeLeft[i]#按边界值平滑后的等深箱edge_depth图6判断左边界距离七、注意事项1.等深分箱前需要排序2.分箱个数要3.等深分箱:按记录数进行分箱,每箱具有相同的记录数,每箱的记录数称为箱的权重,也称箱子的深度。八、思考与练习1.等深分箱的宽度怎么设定?2.等深分箱的特点3.分箱操作分为两类:等深分箱(qcut)等宽分箱(cut)等深分箱:每箱的样本量基本一致(有点分位数的意思)以数量为划分标准(100份数据分5个箱子,每个差不多20份数据),返回的是区间。九、实验报告整理实验数据,分析实验数据,编制实验报告。实验三等宽分箱一、实验目的1.掌握等宽分箱的概念2.掌握等宽分箱的求解过程3.能够用python语言进行等宽分箱二、实验任务任务一:根据给出的数据进行等宽分箱任务二:描述等宽分箱的过程与含义任务三:至少用2种方法进行局部平滑任务四:简述等深分箱与等宽分箱的异同三、实验原理(部分课程可以删除此项)分箱:分箱方法是一种简单常用的预处理方法,通过考察相邻数据来确定最终值。所谓“分箱”,实际上就是按照属性值划分的子区间,如果一个属性值处于某个子区间范围内,就称把该属性值放进这个子区间所代表的“箱子”内。把待处理的数据(某列属性值)按照一定的规则放进一些箱子中,考察每一个箱子中的数据,采用某种方法分别对各个箱子中的数据进行处理。在采用分箱技术时,需要确定的两个主要问题就是:如何分箱以及如何对每个箱子中的数据进行平滑处理。分箱的方法:有4种:等深分箱法、等宽分箱法、最小熵法和用户自定义区间法。统一权重,也成等深分箱法,将数据集按记录行数分箱,每箱具有相同的记录数,每箱记录数称为箱子的深度。这是最简单的一种分箱方法。统一区间,也称等宽分箱法,使数据集在整个属性值的区间上平均分布,即每个箱的区间范围是一个常量,称为箱子宽度。用户自定义区间,用户可以根据需要自定义区间,当用户明确希望观察某些区间范围内的数据分布时,使用这种方法可以方便地帮助用户达到目的。分箱数据的好处分箱并解锁隐藏在数据集中的信号和惊喜。数据分箱是知识工作者或数据科学家必须具备的一项基本技能。当我们想集体研究模式而不是单独研究模式时,需要事先将单个值分类为多个组。我们可以按值范围、百分位数和数据聚类对值进行分组。分解连续预测变量有什么好处如果您使用分箱并获得分类变量,您可能能够应用不适用于连续变量的学习算法。您的数据集可能更适合其中一种算法,因此这是您的第一个好处。估计由于分箱造成的损失的想法是基于论文“PAClearningwithinrelevantattributes”。这也有其他名称,例如“离散化”、“切碎数据”或“binning”。1有时使用的特定方法包括“中值拆分”或“极端”。分解连续预测变量有什么好处数据分箱是知识工作者或数据科学家必须具备的基本技能。当我们想集体研究模式而不是单独研究模式时,需要事先将单个值分类为多个组。我们可以按值范围、百分位数和数据聚类对值进行分组。如果您使用分箱并获得分类变量,您可能能够应用不适用于连续变量的学习算法。您的数据集可能更适合其中一种算法,因此这是您的第一个好处。估计由于分箱造成的损失的想法是基于论文“PAClearningwithinrelevantattributes”。数据分箱这也被称为“离散化”、“切分数据”或“binning”等其他名称。1有时使用的具体方法包括“中值拆分”或“极端”,这是DataWrangling中的重要步骤之一。分箱:它在连续变量中找到一组易于数据分箱如果您使用分箱并获得分类变量,您可能能够应用不适用于连续变量的学习算法。您的数据集可能更适合其中一种算法,因此这是您的第一个好处。估计由于分箱造成的损失的想法是基于论文“PAClearningwithinrelevantattributes”。这也有其他名称,例如“离散化”、“切碎数据”或“分箱”。1有时使用的具体方法包括“中值拆分”或“极端”。为什么分箱连续数据几乎总是一个错误这是数据整理中的重要步骤之一。Binning的优点:它可以在连续变量中找到一组易于处理的模式此外,binning可以通过减少噪声或非线性来提高预测模型的准确性。最后,分箱可以轻松识别数值变量的异常值、无效值和缺失值。为什么对连续数据进行分箱几乎总是一个错误这也被称为“离散化”、“切分数据”或“分箱”等其他名称。1有时使用的具体方法包括“中值拆分”或“极端”。DataWrangling中的重要步骤。Binning的优势:它在连续变量中找到一组易于识别的模式。在Cox回归中binning的优势是什么?:统计学此外,分箱可以通过减少噪声或非线性来提高预测模型的准确性。最后,分箱可以轻松识别数值变量的异常值、无效值和缺失值。这种聚合虽然与信息丢失有关,但减少了要处理的数据量,便于分析。例如,对数据进行分箱。Cox回归中分箱的优势是什么?:统计是DataWrangling的重要步骤之一。Binning的优点:它可以在连续变量中找到一组易于处理的模式此外,binning可以通过减少噪声或非线性来提高预测模型的准确性。最后,分箱可以轻松识别异常值、数值变量的无效值和缺失值。博客文章:FICO-1034这种聚合虽然与信息丢失有关,但减少了要处理的数据量,便于分析。例如,对数据进行分箱等深分箱:按记录数进行分箱,每箱具有相同的记录数,每箱的记录数称为箱的权重,也称箱子的深度。数据平滑:将数据划分到不同的箱子之后,可以运用如下三种策略对每个箱子中的数据进行平滑处理:平均值平滑:箱中的每一个值被箱中数值的平均值替换。中值平滑:箱中的每一个值被箱中数值的中值替换。边界平滑:箱中的最大值和最小值称为箱子的边界,箱中的每一个值被最近的边界值替换。四、实验设备1.导入必要的第三方模块2.准备数据集3.提前掌握等宽分箱的方法与步骤五、实验准备1.导入必要的模块math、pandas、numpynumpy库安装教程:(1)首先右键点击桌面左下角的开始图标,然后选择运行。(2)在窗口中出入cmd,点击确定。(3)在dos窗口中输入pipinstallnumpy,按下回车键会开始安装numpy这个库。(4)输入命令:python,按下回车键,进入python解释器。(5)输入代码:importnumpyasnp,按下回车键引入这个库。(6)可以看到引入这个库之后,python解释器没有报错,证明安装numpy成功了。pandas库安装教程:【1】右键点击桌面左下角的开始图标,然后选择运行。【2】在弹出的窗口中输入cmd,然后点击确定。【3】输入:pipinstallpandas,按下回车键,会自动开始安装。【4】安装完成之后,输入:python-mpiplist,按下回车键看一下有没有安装成功。【5】输入python,按下回车键进入python解释器。【6】输入:importpandas,导入这个库,看看不会会报错,不报错的话就说明安装成功了。2.需要的数据集3.熟悉等宽分箱的步骤和方法一句话概括版分箱就是把数据按特定的规则进行分组,实现数据的离散化,增强数据稳定性,减少过拟合风险。逻辑回归中进行分箱是非常必要的,其他树模型可以不进行分箱。分箱的定义数据分箱(Binning)作为数据预处理的一部分,也被称为离散分箱或数据分段。其实分箱的概念其实很好理解,它的本质上就是把数据进行分组。虽然在实际建模中,分箱一般都是针对连续型数据(如价格、销量、年龄)进行的。但是从理论上,分箱也可以对分类型数据进行。比如,有些分类型数据可取的值非常多,像中国的城市这种数据,这种情况下可以通过分箱,让已经是离散型的数据变得更加离散,比如,城市可以被划分为一级城市、二级城市、三级城市,或者把垃圾分为有害垃圾、可回收垃圾、湿垃圾、干垃圾等等。所以经过分箱后的数据,有以下两个特点:数据可取值的范围变小了数据的可取值会更加确定与稳定数据中信息会变得模糊,不再那么精确那么我们为什么要做这样的分箱操作呢?分箱的原因在建立逻辑回归模型的过程中,基本都会对特征进行分箱的操作。有些树模型,虽然不是必须,也会对一些特征进行一些分箱,这里主要的原因是增强鲁棒性与避免过拟合。当把数据进行分箱处理后,数据会变得更加稳定,之前取值范围不定的数据经过分箱后,变成了取值固定的数据。这样经过分箱后,特征包容异常值的能力增强,特征出现模型无法处理值的可能性也就降低了很多。举例来说,如果突然出现了一个1000岁的人在年龄这个特征中的话,如果没分箱,模型就炸了;但分箱后,只会把它放到“60岁以上”这个分类中,不会对模型有影响。所以模型的稳定性与鲁棒性也就提高了。同时,在实际的建模过程中,常有一些连续型变量对结果的影响效果非常大,比如客户的资产极大的影响了客户在未来是否会对产品进行购买。这时候,这种特征会影响其他特征的表现,让模型无法将注意力放在其他特征中。因此,通过分箱,可以使特征提供的信息变得模糊,这样特征的精准度降低,模型的泛化能力增强,过拟合可能性也随之降低。除了上面这两个比较大的好处,分箱另一个优势是会加快模型的训练速度,对数据进行离散化后,模型的复杂性降低了,计算速度会比之前快,并能够加快模型的训练速度。所以对使用数据集规模大、对模型运行效率或响应速度有要求的以及需要部署上线的模型比较合适。此外,分箱的实际操作中,一般会将空值、缺失值单独处理,将他们在分箱操作时作为一个特殊类别存在,这样既能很好的处理空值,又能保证其存在被模型训练考虑在内。最后,特别说一下,分箱的过程在很多分类问题上都会进行,但应用最广泛的是逻辑回归算法。这是因为在逻辑回归模型中,这主要是因为逻辑回归属于广义线性模型,它与树模型的建模原理本质是不同的。因此把一个特征离散为N个哑变量(DummyVariable)之后,每一个哑变量就会产生一个单独的权重,相当于为模型引入非线性,进而提升模型表达能力,加大模型拟合能力。总结一下前面的内容,分箱的好处有下面5点:提高模型的稳定性与鲁棒性防止过拟合问题加快模型训练速度很好的处理空值与缺失值增强逻辑回归的拟合力分类型特征的分箱对于原本已经是离散化的特征,分箱的方式相对单一,我在实际中会根据两个指标评估离散化特征:特征可取值的多少特征是否有序如果离散化特征可取的值非常多,如垃圾名称这种特征,它可取的值有无数种而且取值之间没有次序之分,那么可以将这种特征进行归类,合并相似项,以减少可取值的数量,比如把垃圾名称特征分箱为有害垃圾、可回收、干垃圾、湿垃圾等。其次,如果一个特征的取值是有顺序的,比如客户等级,它的可取值为:黑金客户、白金客户、金卡客户、银卡客户、普通客户。这时候,一种分箱方法就是按照数据的等级,将文本数据转化为数值型的数据,这时候,就可以依据连续型数据的分箱方法,继续对数据进行操作的。当然,如果数据可取的值很少,一般取值10个值以内,那我基本都不会对这种分类型特征继续进行分箱处理。这个也是根据实际数据表现而定的。连续型特征的分箱连续型特征的分箱分为无监督分箱与有监督分箱两类,分别各有2种应用的比较广的方法:无监督分箱:不需要提供Y,仅凭借特征就能实现分箱等宽分箱等频分箱有监督分箱:需要结合Y的值,通过算法实现分箱决策树分箱卡方分箱无监督分箱无监督分箱是比较好理解的,等距分箱与等频分箱都是不考虑好坏数据的比例以及数据分布的,这两种方法都是无脑通过数据最大值、最小值以及不同区间数据的个数直接等分。等宽分箱也叫等距分箱,它将数据从最小值到最大值之间,平均分为N等份。比如前面说的年龄数据,最大值为75,最小值为3,如果试图将数据分为4份,这时候每个区间的长度就是:(75-3)/4=18。切分后的边界就是:21,39,47,75(amin+W,amin+2W,…,amin+(N-1)*W)而相对的,等频分箱是将数据的值由大到小排列后,将数据分成N等份,保证每份中数据的个数是一样的。同样是年龄这个例子,我们首先将数据从大到小排列,这个特征一共有12个数据值,我们依然希望把数据分为4个箱,这时候等频分箱中每个箱就有3个数据。分箱与算法应用最后,我们说一下应用分箱技术的算法与场景。分箱操作一般只在分类问题中进行,在分类问题中,对逻辑回归算法,分箱是极为重要且必须的。而对于树模型,如lightGBM、XGBoost等模型,分箱不是一个必须操作,但是却能够预防模型的过拟合并使模型的稳定性更好。就是分类问题中的逻辑回归(LR,LogisticRegression)算法。之所以它必须用分箱,原因是逻辑回归的本质是线性模型,如果不进行分箱,不只特征的鲁棒性会极差,而且会导致模型的倾斜,很可能无法产生很好的结果。而树模型(lightGBM、XGBoost等)对所有的输入特征都当做数值型对待,如果是离散型的数据,是需要进行One-Hot编码的,即将特征转化为哑变量(DummyVariables)。因此分箱不是必须的,但是分箱仍然可以帮助模型预防过拟合。需要注意的只是,分箱后,还是需要把数据进行哑变量处理的。六、实验步骤1.导入必要的模块importnumpyasnpimportpandasaspdimportmath2.加载数据x=np.array([60,65,63,66,67,69,71,72,74,76,77,82,84,87,90])X图1加载数据3.排序x.sort()4.#定义等区间bins=[60,70,80,90,100]#对数据按区间分段,right=False表示区间左闭右开x_cuts=pd.cut(x,bins,right=False)#number数组即为每个区间的数据数量number=pd.value_counts(x_cuts)#取所有的区间最大的数据数量rows=number.max()#定义初始化等宽箱widthList=np.full([4,rows],0)图2初始化等宽箱#将要处理的数据按照等宽分箱法进行分箱i=0forjinrange(0,4):forainrange(0,number[j]):widthList[j][a]=x[i]i=i+1widthList图3等宽分箱法进行分箱按均值进行平滑#初始化mean_widthmean_width=np.full([4,rows],0)mean_width图4按均值进行平滑#按平均值平滑,均值平滑技术foriinrange(0,4):forjinrange(0,number[i]):#第i行算数平均值mean_width[i][j]=int(widthList[i].sum()/number[i])mean_width#按均值平滑后的等宽箱图5均值平滑后的等宽箱按边界值进行平滑#定义每箱左边界edgeLeft=np.arange(4)#定义每箱右边界edgeRight=np.arange(4)print(edgeLeft)print(edgeRight)图6每箱右边界#按边界值平滑,初始化edge_widthedge_width=np.full([4,rows],0)edge_width图7边界值平滑#等宽分箱法、边界值平滑技术#遍历等深箱行foriinrange(0,4):#第i行左边界edgeLeft[i]=widthList[i][0]#第i行右边界edgeRight[i]=widthList[i][number[i]-1]#遍历等宽箱列forjinrange(0,number[i]):#第一列,即左边界if(j==0):edge_width[i][j]=widthList[i][0]#进行第一列的最小值赋值#第3列(等深箱最后一列),即右边界if(j==number[i]-1):edge_width[i][j]=widthList[i][number[i]-1]else:#非最小、最大值则进行比较#判断距离左边界近还是距离右边界近if(math.pow((edgeLeft[i]-widthList[i][j]),2)>math.pow((edgeRight[i]-widthList[i][j]),2)):edge_width[i][j]=edgeRight[i]else:edge_width[i][j]=edgeLeft[i]#按边界值平滑后的等深箱edge_width图8按边界值平滑后的等深箱七、注意事项1.等宽分箱前需要排序2.分箱的个数要合理,不能太多,也不能太少。3.三类变量分箱方法的及注意要点3.1无序变量分箱举个例子,在实际模型建立当中,有个job职业的特征,取值为(“国家机关人员”,“专业技术人员”,“商业服务人员”),对于这一类变量,如果我们将其依次赋值为(国家机关人员=1;专业技术人员=2;商业服务人员=3),就很容易产生一个问题,不同种类的职业在数据层面上就有了大小顺序之分,国家机关人员和商业服务人员的差距是2,专业技术人员和商业服务人员的之间的差距是1,而我们原来的中文分类中是不存在这种先后顺序关系的。所以这么简单的赋值是会使变量失去原来的衡量效果。怎么处理这个问题呢,“一位有效编码”(one-hotEncoding)可以解决这个问题,通常叫做虚变量或者哑变量(dummpyvariable):比如职业特征有3个不同变量,那么将其生成个2哑变量,分别是“是否国家党政职业人员”,“是否专业技术人员”,每个虚变量取值(1,0)。3.2有序变量分箱有序多分类变量是很常见的变量形式,通常在变量中有多个可能会出现的取值,各取值之间还存在等级关系。比如高血压分级(0=正常,1=正常高值,2=1级高血压,3=2级高血压,4=3级高血压)这类变量处理起来简直不要太省心,使用pandas中的map()替换相应变量就行。3.3连续变量的分箱方式连续变量的分箱可以划分2种:无监督分组,有监督分组3.3.1无监督分组:等宽划分:按照相同宽度将数据分成几等份。缺点是受到异常值的影响比较大。pandas.cut方法可以进行等宽划分。等频划分:将数据分成几等份,每等份数据里面的个数是一样的。pandas.qcut方法可以进行等频划分。importpandasaspddf=pd.DataFrame([[22,1],[13,1],[33,1],[52,0],[16,0],[42,1],[53,1],[39,1],[26,0],[66,0]],columns=['age','Y'])#print(df)df['age_bin_1']=pd.qcut(df['age'],3)#新增一列存储等频划分的分箱特征df['age_bin_2']=pd.cut(df['age'],3)#新增一列存储等距划分的分箱特征print(df)3.3.2有监督学习方法:卡方分箱,卡方分箱用的较少。八、思考与练习1.等宽分箱与等深分箱的异同之处。数据处理中的等宽分箱与等深分箱等宽分箱每组数据的上边界与下边界差值一样等深分箱每组数据中包含的条目数近乎一样。Python里可以通过pcut(等深分箱即每箱的样本量基本一致)和cut(等宽分箱即样本量之间有相同的宽度)对样本进行分箱。等宽分箱的特点按数据特征值的间距均匀切分,每个箱体的数值距离一样一定可以分箱无法保证箱体样本数均匀信用分统计时常用等距分箱九、实验报告整理实验数据,分析实验数据,编制实验报告。实验四主成分分析一、实验目的1.掌握主成分分析的概念主成分分析的目的是要从一组测量变量中得到少数几个相互独立的线性组合(主成分),使用它们来捕获原始变量中尽可能多的变异性。主成分分析是一种降维方法,也是一种探索性数据分析工具。主成分分析也可用于构造预测模型,如主成分分析回归(亦称PCA回归或PCR)所述。对于包含大量变量的数据,“主成分”平台提供称为“宽”方法的估计方法。“宽”方法使您能够在较短的计算时间内计算主成分。随后可将这些主成分用在PCA回归中。对于包含大量零的数据,也称为稀疏数据,“主成分”平台提供“稀疏”估计方法。与“宽”方法类似,“稀疏”方法能够以较短的计算时间计算主成分。与“宽”方法的不同之处在于,“稀疏”方法计算用户定义的固定数量的主成分,而不是完整集合。“主成分”平台还支持因子分析。JMP提供若干类型的正交和斜交因子分析样式的旋转,用来帮助解释提取的成分。有关因子分析的信息,请参见因子分析。掌握主成分分析的求解过程与计算步骤主成分分析的主要步骤为:原始数据减去平均值,使数据的均值变为0计算协方差矩阵计算协方差矩阵的特征值和特征向量将特征值从大到小排序保留最前面的k个特征向量将数据转换到上述k个特征向量构建的新空间中。3.能够用python语言完成主成分分析二、实验任务任务一:根据给出的数据进行主成分分析任务二:描述零均值变换前后的数据情况任务三:简述主成分分析的过程三、实验原理(部分课程可以删除此项)主成分分析算法(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的信息量最大(方差最大),以此使用较少的数据维度,同时保留住较多的原数据点的特性。主成分分析(PCA,principalcomponentanalysis)是一种数学降维方法,利用正交变换(orthogonaltransformation)把一系列可能线性相关的变量转换为一组线性不相关的新变量,也称为主成分,从而利用新变量在更小的维度下展示数据的特征。主成分是原有变量的线性组合,其数目不多于原始变量。组合之后,相当于我们获得了一批新的观测数据,这些数据的含义不同于原有数据,但包含了之前数据的大部分特征,并且有着较低的维度,便于进一步的分析。在空间上,PCA可以理解为把原始数据投射到一个新的坐标系统,第一主成分为第一坐标轴,它的含义代表了原始数据中多个变量经过某种变换得到的新变量的变化区间;第二成分为第二坐标轴,代表了原始数据中多个变量经过某种变换得到的第二个新变量的变化区间。这样我们把利用原始数据解释样品的差异转变为利用新变量解释样品的差异。这种投射方式会有很多,为了最大限度保留对原始数据的解释,一般会用最大方差理论或最小损失理论,使得第一主成分有着最大的方差或变异数(就是说其能尽量多的解释原始数据的差异);随后的每一个主成分都与前面的主成分正交,且有着仅次于前一主成分的最大方差(正交简单的理解就是两个主成分空间夹角为90°,两者之间无线性关联,从而完成去冗余操作)。PCA降维的目的,就是为了在尽量保证“信息量不丢失”的情况下,对原始特征进行降维,也就是尽可能将原始特征往具有最大投影信息量的维度上进行投影。将原特征投影到这些维度上,使降维后信息量损失最小。主成分分析的意义简化运算。在问题研究中,为了全面系统地分析问题,我们通常会收集众多的影响因素也就是众多的变量。这样会使得研究更丰富,通常也会带来较多的冗余数据和复杂的计算量。比如我们我们测序了100种样品的基因表达谱借以通过分子表达水平的差异对这100种样品进行分类。在这个问题中,研究的变量就是不同的基因。每个基因的表达都可以在一定程度上反应样品之间的差异,但某些基因之间却有着调控、协同或拮抗的关系,表现为它们的表达值存在一些相关性,这就造成了统计数据所反映的信息存在一定程度的冗余。另外假如某些基因如持家基因在所有样本中表达都一样,它们对于解释样本的差异也没有意义。这么多的变量在后续统计分析中会增大运算量和计算复杂度,应用PCA就可以在尽量多的保持变量所包含的信息又能维持尽量少的变量数目,帮助简化运算和结果解释。去除数据噪音。比如说我们在样品的制备过程中,由于不完全一致的操作,导致样品的状态有细微的改变,从而造成一些持家基因也发生了相应的变化,但变化幅度远小于核心基因(一般认为噪音的方差小于信息的方差)。而PCA在降维的过程中滤去了这些变化幅度较小的噪音变化,增大了数据的信噪比。利用散点图实现多维数据可视化。在上面的表达谱分析中,假如我们有1个基因,可以在线性层面对样本进行分类;如果我们有2个基因,可以在一个平面对样本进行分类;如果我们有3个基因,可以在一个立体空间对样本进行分类;如果有更多的基因,比如说n个,那么每个样品就是n维空间的一个点,则很难在图形上展示样品的分类关系。利用PCA分析,我们可以选取贡献最大的2个或3个主成分作为数据代表用以可视化。这比直接选取三个表达变化最大的基因更能反映样品之间的差异。(利用Pearson相关系数对样品进行聚类在样品数目比较少时是一个解决办法)发现隐性相关变量。我们在合并冗余原始变量得到主成分过程中,会发现某些原始变量对同一主成分有着相似的贡献,也就是说这些变量之间存在着某种相关性,为相关变量。同时也可以获得这些变量对主成分的贡献程度。对基因表达数据可以理解为发现了存在协同或拮抗关系的基因。四、实验设备1.Windows电脑2.鼠标3.键盘五、实验准备1.导入必要的模块numpy、pandas、matplotlibPython使用pip安装matplotlib模块matplotlib是python中强大的画图模块。首先确保已经安装python,然后用pip来安装matplotlib模块。进入到cmd窗口下,建议执行python-mpipinstall-Upipsetuptools进行升级。接着键入python-mpipinstallmatplotlib进行自动的安装,系统会自动下载安装包。安装完成后,可以用python-mpiplist查看本机的安装的所有模块,确保matplotlib已经安装成功。需要的数据集通过numpy来创建数据集,numpy库的优势:Numpy中的多维数组称为ndarray,这是Numpy中最常见的数组对象。ndarray对象通常包含两个部分:ndarray数据本身描述数据的元数据Numpy数组的优势Numpy数组通常是由相同种类的元素组成的,即数组中的数据项的类型一致。这样有一个好处,由于知道数组元素的类型相同,所以能快速确定存储数据所需空间的大小。Numpy数组能够运用向量化运算来处理整个数组,速度较快;而Python的列表则通常需要借助循环语句遍历列表,运行效率相对来说要差。Numpy使用了优化过的CAPI,运算速度较快3.熟悉主成分分析的步骤和方法六、实验步骤importnumpyasnpimportpandasaspdimportmatplotlib.pyplotasplt#导入数据X=np.array([[2.5,2.4],[0.5,0.7],[2.2,2.9],[1.9,2.2],[3.1,3],[2.3,2.7],[2.0,1.6],[1.0,1.1],[1.5,1.6],[1.1,0.9]])X图1导入数据#转置Samples=X.TSamples图2转置#看二维数据的分布情况x=Samples[0,:]y=Samples[1,:]r=np.corrcoef(x,y)fig=plt.figure()plt.scatter(x,y,color='k')print(r)plt.show()图3二维数据的分布情况#计算均值向量mean_x=np.mean(Samples[0,:])mean_y=np.mean(Samples[1,:])mean_vector=np.array([[mean_x],[mean_y]])#两行一列Samples_zero_mean=Samples-mean_vector#零均值化的矩阵#散点图plt.scatter(Samples_zero_mean[0],Samples_zero_mean[1],color='k')plt.show()图4散点图#计算样本协方差Cov_Samples_zero_mean=Samples_zero_mean.dot(Samples_zero_mean.T)/9Cov_Samples_zero_mean图5计算样本协方差eig_val,eig_vec=np.linalg.eig(Cov_Samples_zero_mean)print(eig_val)#特征值print(eig_vec)#特征向量图6特征向量plt.scatter(0,0,marker='.',color='r')plt.scatter(Samples_zero_mean[0],Samples_zero_mean[1],color='k')plt.arrow(0,0,eig_vec.T[0,0],eig_vec.T[0,1],head_width=0.02,head_length=0.1,fc='r',ec='r')plt.arrow(0,0,eig_vec.T[1,0],eig_vec.T[1,1],head_width=0.02,head_length=0.1,fc='r',ec='r')plt.show()图7样本协方差#建立新坐标系下的坐标eig_paris=[(eig_val[i],eig_vec.T[i])foriinrange(len(eig_val))]eig_paris.sort(key=lambdax:x[0],reverse=True)matrix_U=np.hstack((eig_paris[0][1].reshape(2,1),eig_paris[1][1].reshape(2,1)))matrix_U图8新坐标系下的坐标#将样本投影到新的坐标系上matrix_F=matrix_U.T.dot(Samples_zero_mean).Tmatrix_F图9投影到新的坐标系plt.ylim(ymin=-1.5,ymax=1.5)plt.scatter(matrix_F[:,0],matrix_F[:,1],color='k')plt.show()图10将样本投影到新的坐标系#计算原始数据各个维与主成分的相关性correlationXF=np.round(np.corrcoef(Samples_zero_mean,matrix_F.T),4)print(correlationXF[0:2,2:4])图11计算原始数据各个维与主成分的相关性七、注意事项1.第一主成分的占比不能过小2.注意先将数据表示成列向量的形式3.如果使用了PCA对训练集的数据进行了处理,那么对于验证集和测试集也需要进行相对应的处理。我们在处理训练集的过程中得到了特征的均值μ和方差σ,以及特征向量U,我们需要使用这些参数先对数据进行归一化处理,然后转换到新的特征空间。4:在使用PCA进行压缩之前,先使用原数据进行训练,这样我们才能对比压缩前后的效果。如果不是占用内存空间太大,或者算法运行速度过慢,其实没有必要进行压缩。5:不要使用PCA来避免过度拟合。因为通过这样的方式皮避免度拟合,不仅效果很差,并且会丢失部分数据。八、思考与练习1.主成分分析的基本步骤归纳总结2.主成分的百分占比如何求解3.主成分分析的优缺点PCA算法优点:使得数据集更易使用;(2)降低算法的计算开销;(3)去除噪声;(4)使得结果容易理解;(5)完全无参数限制。PCA算法缺点:(1)如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高;(2)特征值分解有一些局限性,比如变换的矩阵必须是方阵;(3)在非高斯分布情况下,PCA方法得出的主元可能并不是最优的。4.PCA算法流程:(1)去平均值,即每一位特征减去各自的平均值;(2)计算协方差矩阵;(3)计算协方差矩阵的特征值与特征向量;(4)对特征值从大到小排序;(5)保留最大的个特征向量;(6)将数据转换到个特征向量构建的新空间中。5.PCA算法实现一般流程:(1)对数据进行归一化处理;(2)计算归一化后的数据集的协方差矩阵;(3)计算协方差矩阵的特征值和特征向量;(4)保留最重要的k个特征(通常k要小于n);(5)找出k个特征值相应的特征向量(6)将m*n的数据集乘以k个n维的特征向量的特征向量(n*k),得到最后降维的数据。九、实验报告整理实验数据,分析实验数据,编制实验报告。实验五关联规则Apriori一、实验目的1.掌握频繁项集与关联规则的概念2.掌握Apriori算法3.够用python语言完成Apriori算法二、实验任务任务一:简述Apriori的基本原理任务二:完成Apriori算法,并概括相关内容三、实验原理(部分课程可以删除此项)关联规则的目的在于在一个数据集中找出项之间的关系,也称之为购物蓝分析(marketbasketanalysis)。例如,购买鞋的顾客,有10%的可能也会买袜子,60%的买面包的顾客,也会买牛奶。这其中最有名的例子就是"尿布和啤酒"的故事了。在计算机科学以及数据挖掘领域中,先验算法(AprioriAlgorithm)是关联规则学习的经典算法之一。先验算法的设计目的是为了处理包含交易信息内容的数据库(例如,顾客购买的商品清单,或者网页常访清单。)而其他的算法则是设计用来寻找无交易信息(如Winepi算法和Minepi算法)或无时间标记(如DNA测序)的数据之间的联系规则。先验算法采用广度优先搜索算法进行搜索并采用树结构来对候选项目集进行高效计数。它通过长度为k−1的候选项目集来产生长度为k的候选项目集,然后从中删除包含不常见子模式的候选项。根据向下封闭性引理,该候选项目集包含所有长度为k的频繁项目集。之后,就可以通过扫描交易数据库来决定候选项目集中的频繁项目集。数据挖掘十大算法Apriori算法是一种最有影响力的挖掘布尔关联规则的频繁项集算法,它是由RakeshAgrawal和RamakrishnanSkrikant提出的。它使用一种称作逐层搜索的迭代方法,k-项集用于探索(k+1)-项集。首先,找出频繁1-项集的集合。该集合记作L1。L1用于找频繁2-项集的集合L2,而L2用于找L3,如此下去,直到不能找到k-项集。每找一个Lk需要一次数据库扫描。为提高频繁项集逐层产生的效率,一种称作Apriori性质用于压缩搜索空间。其约束条件:一是频繁项集的所有非空子集都必须也是频繁的,二是非频繁项集的所有父集都是非频繁的。基本概念关联分析关联分析是一种在大规模数据集中寻找相互关系的任务。这些关系可以有两种形式:频繁项集(frequentitemsets):经常出现在一块的物品的集合。关联规则(associationalrules):暗示两种物品之间可能存在很强的关系。频繁项集:{葡萄酒,尿布,豆奶}就是一个频繁项集的例子。关联规则:尿布->葡萄酒就是一个关联规则。这意味着如果顾客买了尿布,那么他很可能会买葡萄酒。支持度:数据集中包含该项集的记录所占的比例。例如上图中,{豆奶}的支持度为4/5。{豆奶,尿布}的支持度为3/5。可信度:针对一条诸如{尿布}->{葡萄酒}这样具体的关联规则来定义的。这条规则的可信度被定义为支持度({尿布,葡萄酒})/支持度({尿布}),支持度({尿布,葡萄酒})=3/5,支持度({尿布})=4/5,所以{尿布}->{葡萄酒}的可信度=3/5/4/5=3/4=0.75。支持度和可信度是用来量化关联分析是否成功的一个方法。假设想找到支持度大于0.8的所有项集,应该如何去做呢?一个办法是生成一个物品所有可能组合的清单,然后对每一种组合统计它出现的频繁程度,但是当物品成千上万时,上述做法就非常非常慢了。我们需要详细分析下这种情况并讨论下Apriori原理,该原理会减少关联规则学习时所需的计算量。k项集如果事件A中包含k个元素,那么称这个事件A为k项集,并且事件A满足最小支持度阈值的事件称为频繁k项集。由频繁项集产生强关联规则K维数据项集LK是频繁项集的必要条件是它所有K-1维子项集也为频繁项集,记为LK-1如果K维数据项集LK的任意一个K-1维子集Lk-1,不是频繁项集,则K维数据项集LK本身也不是最大数据项集。Lk是K维频繁项集,如果所有K-1维频繁项集合Lk-1中包含LK的K-1维子项集的个数小于K,则Lk不可能是K维最大频繁数据项集。同时满足最小支持度阀值和最小置信度阀值的规则称为强规则。四、实验设备1.Windows电脑2.鼠标3.键盘五、实验准备1.导入必要的模块2.需要的数据集Python中嵌套列表是使用非常广泛的一种数据结构。Python中有一种内置的数据类型叫列表(list),它是一种容器,可以用来承载其他的对象(准确的说是其他对象的引用),列表中的对象可以称为列表的元素,很明显我们可以把列表作为列表中的元素,这就是所谓的嵌套列表。嵌套列表可以模拟出现实中的表格、矩阵、2D游戏的地图(如植物大战僵尸的花园)、棋盘(如国际象棋、黑白棋)等。熟悉Apriori的基本原理5.Apriori思想首先找出所有的频集,这些项集出现的频繁性至少和预定义的最小支持度一样。然后由频集产生强关联规则,这些规则必须满足最小支持度和最小可信度。然后使用第1步找到的频集产生期望的规则,产生只包含集合的项的所有规则,其中每一条规则的右部只有一项,这里采用的是中规则的定义。一旦这些规则被生成,那么只有那些大于用户给定的最小可信度的规则才被留下来。6、Apriori算法过程第一步通过迭代,检索出事务数据库中的所有频繁项集,即支持度不低于用户设定的阈值的项集;第二步利用频繁项集构造出满足用户最小信任度的规则。具体做法就是:首先找出频繁1-项集,记为L1;然后利用L1来产生候选项集C2,对C2中的项进行判定挖掘出L2,即频繁2-项集;不断如此循环下去直到无法发现更多的频繁k-项集为止。每挖掘一层Lk就需要扫描整个数据库一遍。算法利用了一个性质:任一频繁项集的所有非空子集也必须是频繁的。实验步骤importpandasaspdimportitertoolsasitlsdata=[['饮料','鸡腿','蜂蜜','面包','牛奶','奶酪'],['面包','牛奶','奶酪','鸡蛋','纸尿裤','蜂蜜'],['啤酒','纸尿裤','罐头','面包','奶酪','果酱'],['啤酒','纸尿裤','饮料','鸡腿','牛奶','奶酪'],['啤酒','纸尿裤','饮料','蜂蜜'],['饮料','纸尿裤','果酱','面包','牛奶','奶酪']]Data图1关联规则案例第一步-创建初始候选1-项集defcreatC1(data_set):#候选项1项集#构建初始候选项集的列表,即所有候选项集只包含一个元素C1=set(itls.chain(*data_set))#itertools.chain把所有的项集连接起来,返回可迭
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院健康沙龙活动方案
- 升龙周年庆活动方案
- 参观中班半日活动方案
- 合川部门团建活动方案
- 南阳大众促销活动方案
- 各项激励活动方案
- 员工关爱分享会活动方案
- 启蒙美术活动方案
- 华谊兄弟公司活动方案
- 反季清仓活动方案
- DB13-T2828-2018-马铃薯抗旱性鉴定技术规程-河北省
- 矿泉水配送合同协议
- 电脑维护合同协议模板
- 浙江省温州市2023-2024学年高一下学期期末考试语文试卷(含答案)
- 镁合金半固态注射成型技术的研究与发展
- 口袋妖怪白金金手指大全
- 2025年数控铣工(技师)职业技能鉴定精练考试题库300题(含答案)
- 腹股沟疝诊疗指南(2024版)
- 2022年至2023年江苏省苏州市公开招聘警务辅助人员辅警结构化面试复习训练题库二含答案
- 交通设计知到智慧树章节测试课后答案2024年秋同济大学
- 2025年吉林司法警官职业学院单招职业技能测试题库完整版
评论
0/150
提交评论