数据挖掘与财务决策 课件全套 第1-8章概述 - 财务决策案例-财务舞弊识别_第1页
数据挖掘与财务决策 课件全套 第1-8章概述 - 财务决策案例-财务舞弊识别_第2页
数据挖掘与财务决策 课件全套 第1-8章概述 - 财务决策案例-财务舞弊识别_第3页
数据挖掘与财务决策 课件全套 第1-8章概述 - 财务决策案例-财务舞弊识别_第4页
数据挖掘与财务决策 课件全套 第1-8章概述 - 财务决策案例-财务舞弊识别_第5页
已阅读5页,还剩367页未读 继续免费阅读

下载本文档

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

文档简介

第1章概述《数据挖掘与财务决策》目录1.1数据挖掘概述1.2数据挖掘基本技术1.3数据挖掘在财务决策中的应用

1.1数据挖掘概述1.1.1数据挖掘概述

1.1.2广义的数据挖掘1.1.3挖掘的数据类型数据挖掘(DM)又称数据库中的知识发现,是指从海量、不完整且有噪声的数据中提取潜在有用信息的过程。融合了统计学、机器学习和模式识别等多学科知识,旨在为决策提供支持。数据挖掘的发展历程:20世纪60年代起,数据管理历经文件系统、关系数据库到高级数据库系统的演变,催生了面向对象及空间、时间等多样化数据库。80年代后期,为解决异构数据源的分析难题,数据仓库与联机分析处理(OLAP)应运而生。21世纪以来,随着万维网、物联网和智能终端的普及,人类迈入具备海量、高速、多样和低价值密度特征的大数据时代。在我国数字化转型背景下,数据挖掘已成为高效分析大数据、推动产业发展的核心关键技术。1.1.1数据挖掘概述数据挖掘是一个迭代的过程:1.首先研究数据,采用某种分析工具对数据进行检测2.然后变换角度审视这些数据,并根据需要进行修改3.接着重新开始,应用另一种分析工具,以获得更优或不同的分析结果。1.1.2广义的数据挖掘挖掘的数据类型:数据库数据数据仓库数据事务数据其他类型的数据1.1.3挖掘的数据类型挖掘的数据类型->数据库数据最常用的数据库管理系统是关系数据库系统,其所定义的关系数据库是表的集合,每个表被赋予一个唯一的名字。每个表都包含一组属性(列,字段或变量),表中存放大量元组(记录或行)。关系表中的每个元组代表一个对象,被唯一的关键字标识,并被一组属性值描述。关系数据可以通过数据库查询访问,查询可以提取数据的一个指定的子集,也可以包含聚集函数,如求和sum、平均avg、计数count等。1.1.3挖掘的数据类型挖掘的数据类型->数据仓库数据数据仓库是一个从多个数据源收集的信息存储库,将数据存放在一致的模式下,并且通常存放在单个站点上,通过数据清理、数据变换、数据集成、数据装入和定期数据刷新来构造通常围绕一些主题组织,通常提供汇总数据。数据仓库提供了多维数据视图和汇总数据的预计算,其非常适合联机分析处理OLAP。OLAP通过提供上卷(roll-up)和下钻(drill-down)操作允许用户在不同汇总级别观察数据。1.1.3挖掘的数据类型挖掘的数据类型->事务数据每条记录代表一条事务,这种事务通常指顾客的一次购物,一个航班机票,或一次用户的网页点击。一个事务至少包含一个唯一的事务标识号(trans_ID)以及一个组成事务的项(如:顾客购买的商品ID)的列表。事务数据库可能需要一些附加表,此表主要用于详细地描述事务的项,如商品的详细信息。最常见的事务数据库是购物篮数据库,基于此数据库进行数据挖掘,可以精确地制定促销策略,将商品捆绑销售。1.1.3挖掘的数据类型挖掘的数据类型->其他类型的数据时间相关或序列数据空间数据超文本多媒体数据。。。1.1.3挖掘的数据类型1.2数据挖掘基本技术1.2.1分类技术1.2.2聚类技术1.2.3关联规则1.2.4离群点检测分类技术是数据挖掘中最常用的算法,又被称为监督学习(supervisedlearning)。分类算法对已知类别标签的数据进行训练和分析,从中发现分类的规则并对新的数据进行预测。常见的分类算法包括决策树、贝叶斯、K-最近邻、支持向量机、神经网络等。分类是一个两阶段过程,包括学习阶段(构建分类模型)和分类阶段(使用模型预测给定数据的类标签)。1.2.1分类技术分类技术->决策树:决策树(decisiontree)是最常用的分类技术之一,它是一种类似于流程图的树结构.常用的决策树包括ID3(IterativeDichotomiser,迭代二分类器),C4.5(ID3的后继),CART(ClassificationandRegressionTrees,CART)等。1.2.1分类技术图1-2决策树示例分类技术->贝叶斯:贝叶斯分类是统计学分类方法,它预测类的隶属关系的概率,对于一个给定的元组,它计算其属于每一个特定类的概率。贝叶斯分类的算法原理基于概率论中的贝叶斯定理。贝叶斯分类算法中最经典的算法是朴素贝叶斯,该方法假定一个属性值在给定类上的影响独立于其他属性的值。1.2.1分类技术分类技术->K-最近邻:K-最近邻分类是一种惰性学习法。在没有给定一个训练元组时,惰性学习法并不急于训练模型,而是一种等待,直到给定一个检验元组才开始进行泛化学习,将新给定的检验元组与存储的训练元组相比较对该元组分类。K-最近邻分类搜索所有训练元组,找出离未知元组最近的K个训练元组,将未知元组指派到K个最近邻中的多数类。1.2.1分类技术分类技术->支持向量机:主要用于分类和回归分析,它可以对线性和非线性数据进行分类。SVM决策边界是对学习样本求解的最大边距超平面(maximum-marginhyperplane),这个超平面使得不同类别的数据点之间的间隔最大化,且对新样本的预测具有较好的泛化能力。SVM算法尽力找到距离分类超平面最近的那些训练样本点,这些点决定了超平面的位置,这些训练样本点也被称为支持向量。支持向量到分类超平面的距离被称为间隔,间隔的大小对于SVM模型来说至关重要,较大的间隔意味着分类器对于新样本具有更好的鲁棒性。1.2.1分类技术聚类分析简称聚类(clustering),是一个把给定的数据集划分为若干子集的过程,每一个子集是一个簇(cluster)。聚类后的同一簇中的数据对象彼此相似,但与其他簇中的数据不相似。聚类分析在数据挖掘中,可以作为一种独立的工具,用来洞察数据的类别,观察每个簇的特征,然后将分析进一步集中在特定的簇集合上。已有的聚类算法:划分方法、层次方法、基于密度的方法、基于网格的方法等。1.2.2聚类技术1.2.3关联规则关联规则挖掘最初的动机是针对购物篮分析问题提出的,目的是为了发现交易数据库(TransactionDatabase)中不同商品之间的联系规则。通过对交易数据库分析,可以获得顾客购买商品的一般性规则,这些规则可以对商家进货、管理库存、布置货架等提供指导意见。关联规则在频繁模式的基础上进行挖掘。

从电子商品数据库中挖掘出的一个关联规则的例子如下:Buys(X,“笔记本”)=>buys(X,“软件”)[support=1%,confidence=50%]。其中,X是变量,代表顾客。support=1%,既支持度为1%,表示所分析的数据库中有1%的购物篮中将笔记本与软件一起购买。confidence=50%,既置信度为50%,表示如果一位顾客购买笔记本,则其购买软件的可能是50%。1.2.4离群点检测数据集中可能包含一些对象,它们与大多数数据的行为或模式不一致,这些数据对象被称为离群点(Outlier)。在一些应用场景中,如各种入侵、欺诈检测等场景,离群点数据可能比正常的数据更有挖掘价值。离群点不同于噪声数据,噪声数据是被观测的随机误差或方差,这类数据在数据分析中不是令人感兴趣的。1.2.4离群点检测离群点分为三类:全局离群点、情境离群点和集体离群点。在给定的数据集中,如果一个数据点显著地偏离数据集中的其余对象,则是全局离群点。在给定的数据集中,如果一个数据对象对于特定的情境,它显著地偏离其他对象,这是情境离群点。给定一个数据集,如果数据对象的一个子集整体显著地偏离整个数据集,则这个子集形成集体离群点。1.3数据挖掘在财务决策中的应用

1.3.1财务指标分析1.3.2财务预算决策1.3.3财务舞弊识别1.3.4财务风险识别1.3.5企业价值分析1.3.1财务指标分析财务分析是以会计核算和报表资料及其他相关资料为依据,采用一系列专门的分析技术和方法,对企业等经济组织过去和现在的有关筹资活动、投资活动、经营活动的盈利能力、营运能力、偿债能力和增长能力状况等进行分析与评价的经济管理活动‌。财务分析在企业管理过程中发挥着重要作用:企业财务管理提供了决策依据;提高企业风险预防和控制能力方面发挥着关键作用;财务风险的有效预防和控制;掌握企业生产经营的规律方面也具有关键作用。

1.3.1财务指标分析财务分析时,一般选用财务指标进行分析。

财务能力财务指标盈利能力净资产收益率、总资产净利率、总资产报酬率、销售净利率、营业利润率、销售毛利率、营业利润/利润总额、经营活动产生的现金流量净额/营业收入、销售费用/营业总收入、管理费用/营业总收入、财务费用/营业总收入、营业利润/营业总收入、净利润/营业总收入、所得税/营业总额等偿债能力流动比率、速动比率、现金比率、经营活动现金流量与流动负债比率、长期债务与营运资金比率、营业利润/流动负债、有形资产/负债合计、有形资产/净债务、息税折旧摊销前利润/负债等营运能力存货周转率、应收账款周转率、流动资产周转率、固定资产周转率、总资产周转率、存货周转天数、应收账款周转天数等成长能力每股净资产增长率、资产总额增长率、营业利润增长率、营业总额增长率、每股经营活动产生的现金流量净额增长率、利润总额增长率、每股净资产增长率等现金能力营业收入现金含量、现金回收率、资本支出与折旧摊销比率等表1-1财务分析常用的财务指标1.3.2财务预算决策

财务预算是反映企业未来一定期间(预算年度)的现金收支、经营成果和财务状况的预算,它是企业经营预算的重要组成部分。财务预算的内容一般包括“现金预算”、“预计损益表”和“预计资金平衡表”。财务预算作为财务管理的核心环节,不仅是对企业未来财务状况的预测和规划,更是企业决策的重要依据,对提升企业竞争力、实现经营目标具有深远影响。传统企业财务工作中,财务预算往往靠经验决定资金的分配,存在着很多问题。数据挖掘技术为预算编制提供了前所未有的可能性。利用这些技术,可以进行更为精准的企业运行趋势预测,模拟不同的预算方案,甚至自动优化预算方案,确保每一次的预算都是基于最准确、最全面的数据和分析。1.3.3财务舞弊识别我国《独立审计具体准则第8号——错误与舞弊》对会计舞弊做了以下解释:一种故意的行为,其主要通过变造、伪造会计凭证、删除或掩盖交易的内容、侵占资产、将不实的事务记录下来、故意采用错误的会计政策等方式使得会计报告不能真实地反映上市公司信息。财务舞弊本质上是一种信息披露违规行为,即在信息披露过程中违反相关法律法规、对外提供虚假信息或隐瞒重大事项的行为可分为虚假陈述和延迟披露两种类型。虚假陈述可进一步细分为虚假记载、误导性陈述和重大遗漏三种手段类型。财务舞弊不但给资本市场健康发展带来重大威胁,还可能导致系统性的金融风险,甚至引发金融危机和社会变革。1.3.3财务舞弊识别财务舞弊识别模型相关研究主要经历了两个阶段:传统统计模型阶段和人工智能阶段。传统统计模型大多采用Logistic回归、Probit回归、判别和聚类分析等传统方法建立舞弊异常检测模型。人工智能模型大多采用经典的数据挖掘方法如神经网络、支持向量机、决策树等建立财务舞弊智能识别模型。1.3.4财务风险识别企业财务风险是指企业在各项财务活动过程中,由于各种难以预料或控制的内外部因素影响使得财务状况具有不确定性,从而使企业有蒙受损失的可能性‌。‌财务活动的主要环节,财务风险分为流动性风险、信用风险、筹资风险、投资风险。按可控程度分类,分为可控风险和不可控风险。1.3.4财务风险识别二十世纪三十年代起,国外的研究学者开始尝试对财务数据的研究进行财务风险分析,主要是通过分析财务资料来进行。现代财务风险识别方法主要从是定性和定量两个维度展开。近些年来,数据挖掘技术不断地发展和完善,企业建立财务共享中心设计企业财务风险智能识别模型,通过数据挖掘方法分析企业财务指标之间暗含的关联,预先识别企业的财务风险。1.3.5企业价值分析企业价值评估是指对一家企业的价值进行评估和确定的过程。它是通过对企业的财务状况、运营情况、市场地位和未来发展潜力等方面进行综合分析,以确定企业的实际价值。企业价值评估的目的是为了帮助投资者、企业管理者和其他利益相关方做出明智的决策。有关企业估值方法的研究大多使用传统计量模型进行实证分析,既研究哪些因素会影响企业价值的估值。传统计量方法在实现预测的同时十分重视解释现实背后的规律,它希望模型函数能尽可能简单化;计量经济学模型对于数据有较高的要求,前提假定较多,数据要求较为严格。数据挖掘对于数据的要求相对较低,没有过多的前提假设,能够较好地处理高维度、非正态、非平稳、高噪声的数据。感谢观看第2章数据挖掘工具《数据挖掘与财务决策》目录2.1数据挖掘工具介绍

2.2

Python程序基础2.3

scikit-learn2.1数据挖掘工具介绍2.1.1PYTHON2.1.2R语言2.1.3WekePython是目前最为流行的编程语言之一,它有丰富的数据挖掘库和工具包,提供了强大的数据处理和分析能力。Python是由GuidovanRossum于1989年在荷兰国家数学和计算机研究所设计出来的,第一个公开发行版发行于1991年。Python源代码遵循GPL(GNUGeneralPublicLicense)协议,它最新的版本是3.13,该版本于2024年10月7日正式发布。Python是一门面向对象的、解释性的脚本语言,同时也是一门简约、通俗易懂的编程语言。Python标准库很庞大,它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库等。除了标准库之前,Python还可以下载安装第三方库。2.1.1PYTHON

R是统计领域广泛使用的一个工具,也是S语言的一个分支与实现,它的开发参考了S语言的设计理念,特别是在处理数据框、向量化运算和函数式编程方面‌。R语言的发展历史可以追溯到1990年代初,由新西兰奥克兰大学的罗斯·伊哈卡和罗伯特·杰特曼开发‌。至今,R语言仍然是数据分析和统计计算的领先语言之一,广泛应用于数据科学、机器学习和数据挖掘等领域‌。2.1.2R语言R是一套完整的数据处理、计算和制图软件系统。R语言的功能非常丰富,主要包括以下几个方面‌:1.数据分析2.数据可视化‌3.机器学习4.生物统计和生物信息学5.金融量化分析6.交互式Web应用2.1.2R语言2.1.3WekeWeka(WaikatoEnvironmentforKnowledgeAnalysis,Weka)是一款免费的、非商业化、基于JAVA环境下开源的机器学习(machinelearning)以及数据挖掘(datamining)软件。作为一个公开的数据挖掘工作平台,Weka集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理、分类、回归、聚类、关联规则以及在新的交互式界面上的可视化。Weka主要功能如下:集成多种算法2.数据预处理和特征选择3.友好的界面及交互式操作4.可扩展性2.2PYTHON程序基础2.2.1基本语法结构2.2.2数据类型2.2.3条件语句2.2.4循环语句2.2.5Numpy数值计算基础2.2.6Panda统计分析基础2.2.1基本语法结构1).输出函数print()函数print()的语法如下:print(value,···,sep=’’,,end=’\n’,flush=false)其中,参数sep前面的一个或多个参数是要输出的值,参数sep用于指定分隔符,参数end用于指定结束符,参数flush=True时表示直接输出而不缓存。以下是几个print函数的例子。[例]输出函数的使用。print(3,5,8,sep=’:’);此代码输出:3:5:8print(3,5,8,sep=’,’);此代码输出:3,5,8print(’这是一个python程序。’)输出:这是一个python程序2.2.1基本语法结构2).输入函数input()Python的输入函数input()用于接收用户的键盘收入,语法格式:X=input(‘此处输入想输入的数据’)[例]输入函数的使用。X=input(‘请输入X:’)此代码输出:请输入X:从键盘输入:5print(type(X))#返回X的数据类型此代码输出:<class’str’>2.2.1基本语法结构3).Python标识符标示符就是一个名字,它的主要作用就是作为变量、函数、类、模块以及其他对象的名称。Python的标识符由字母、数字、下划线组成,也可以是汉字。标识符中的第一个字符不能是数字,并且严格区分大小写字母,标识符也不能和关键字相同。Python的常用关键字如2-1所示。andexecnotassertfinallyorbreakforpassclassfromprintcontinueglobalraisedefifreturndelimporttryelifinwhileelseiswithexceptlambdayield表2-1Python的常用关键字2.2.1基本语法结构4).行和缩进Python语言与其他语言最大的差别,是它不使用大括号{}来定义函数、类及其他逻辑判断,而是使用缩进来编写模块。缩进的空白长度是可变的,但是所有代码块语句必须包含相同的缩进空白数量。例如,以下代码在执行时会出现错误:ifTrueprint(‘Itistrue’)else:print(‘Itisfalse’)#以上代码将会执行错误,因为没有缩进。

2.2.1基本语法结构5).运算符运算符含义+加-减*乘/除//整除%取余数**幂运算表2-2Python中常用的算术预算符运算符含义==比较两个对象是否相等!=比较两个对象是否不相等>

大于比较符<

小于比较符>=大于等于<=小于等于表2-3Python中常用的比较预算符2.2.1基本语法结构5).运算符运算符含义实例=基本的赋值运算符z=x+y:将x+y的运算结果赋值给z+=加法赋值运算符z+=x:等效于z=z+x-=减法赋值运算符z-=x:等效于z=z-x*=乘法赋值运算符z*=x:等效于z=z*x/=除法赋值运算符z/=x:等效于z=z/x%=取值赋值运算符z%=x:等效于z=z%x**=幂负值运算符z**=x:等效于z=z**x//=取整除赋值运算符z//=x:等效于z=z//x表2-4Python中常用的赋值预算符2.2.1基本语法结构6)Python注释在Python程序代码时,为了方便编程者或者他人更快的理解程序,提高工作效率,通常会在某些代码后面加上解释语句,这些解释语句称为注释。注释在执行代码时会被忽略,不会做任何处理。在Python中,注释以#开头。#这是我的第一个Python程序>>>Print(“Hello,World!”)此代码输出:Hello,World!当需要写多行注释时,可以使用三个单引号(''')或三个双引号(""")。2.2.2数据类型常用的五种标准数据类型包括:Number(数值)、String(字符串)、List(列表)、Tuple(元组)和Dictionary(字典)。1).Number(数值)数值数据类型主要用于存储数值,当定义一个数值时,一个Number类型的对象就自动被创建。Python包含4种数值类型:int(有符号整型)、long(长整型)、float(浮点型)和complex(复数)。长整型类型的数据建议在数据后面加上大写字母L,以便于和int类型区分。长整型类型也只存在于Python2.X的版本中,在2.2以后的版本中,int类型数据溢出后自动转为long类型。2.2.2数据类型2).字符串字符串是由数字、字母、下划线组成的一串字符,在Python中主要用于表示文本类型的数据,也是最常用的数据类型。字符串属于不可变序列,可以用单引号、双引号或三引号进行界定。转义字符含义转义字符含义\n换行符\”双引号\t制表符\\一个\\r回车\ooo1~3位八进制数对应的字符\’单引号\xhh2位十六进数对应的字符\uhhhh4位十六进制数对应的字符\Uxxxxxxxx8位十六进制数对应的字符表2-6Python中常用的转义字符2.2.2数据类型3).列表列表是Python内置的可变有序序列,也是最常用的Python数据类型。在形式上,列表的所有元素放在一对方括号中,相邻的元素使用逗号分隔开来。列表中的元素不需要具有相同的数据类型,可以同时包含整数、字符串、浮点数等基本数据类型的数据,也可以是列表、字典或其他自定义类型的对象。下面是几个列表的实例:List1=[’ab’,123,2002,’china’]List2=[1,3,5,7,9]List3=[’A’,’B’,’C’,’D’,]List4=[[’A’,7],[’b’,7,9]]2.2.2数据类型3).列表列表元素的动态增加和删除是经常遇到的操作。增加列表元素,可以使用+运算符或append()方法、insert()方法。[例2-4]列表中append()的使用。List1=[3,4,5]List1=List1+[7]List2=list1.append(9)print(List1)print(List2)

以上实例输出结果为:[3,4,5,7][3,4,5,9][例2-5]列表中pop()的使用。List1=[3,5,7,9,11]List2=[1,2,3,4,5]delList1[1]print(List1)list2.pop(2)print(List2)

以上实例输出结果为:[3,7,9,11][1,2,4,5]2.2.2数据类型4)元组元组(tuple)是一种不可变的数据结构,主要用于存储固定长度的元素序列。元组使用圆括号“()”界定,元素之间用逗号分隔。运算符或函数实例结果及描述lenlen((1,3,5,7))结果为4:计算元素个数+(1,3,5)+(6,7)结果为(1,3,5,6,7):将两个元组连接*(’a’,)*3结果为(’a’,’a’,’a’):将元组内的元素复制in5in(1,3,5,7)结果为True:判断元素是否存在于元组中tuple(seq)Tuple([’a’,’b’,’c’])结果为(’a’,’b’,’c’):将列表转换为元组表2-7元组常用的运算符及函数2.2.2数据类型5)字典字典是一种数据类型,用于存储键值对。字典由多个键和其对应的值构成的键-值对组成,键和值中间以冒号:隔开。每一对键值对之间以逗号隔开,整个字典由大括号{}括起来。字典中的键必须是唯一的,但值不必要唯一,可以是任何数据类型。字典是无序的,这意味着它们不记住元素添加的顺序。[例2-6]字典使用实例。dict1={’费用1’:600,’费用2’:300,’费用3’:500}dict2={’费用1’:600,’费用2’:300,’费用2’:500}print(dict1)print(dict2)以上实例的输出结果为:{’费用1’:600,’费用2’:300,’费用3’:500}{’费用1’:600,’费用2’:500}2.2.2数据类型5)字典操作符含义实例计算结果dict[key]访问字典的值D[’费用1’]600dict[key]=修改字典的值D[’费用2’]=500{’费用1’:600,’费用2’:500,’费用3’:500}dict[key]=添加键值对D[’费用4’]=200{’费用1’:600,’费用2’:300,’费用3’:500,’费用4’:200}deldict[key]删除键值对delD[’费用3’]{’费用1’:600,’费用2’:300}deldict删除字典delD字典D不再存在,也无法引用dict.keys()返回所有键D.keys()[’费用1’,’费用2’,’费用3’]dict.values()返回所有值D.values()[600,300,500]表2-8常用的字典操作2.2.3条件语句1).单分支条件结构单分支结构是最简单的一种条件选择语句,其语法格式如下。条件后面的冒号是不可缺少的,它表示语句块的开始。if条件:

语句块1

该语法表示当条件为真时,则执行语句块1。[例2-7]

单分支条件结构的使用。income=float(input(‘请输入您的收入:’))ifincome>=5000:print(‘您的收入为中高收入!’)

当输入6000时,运行结果为:请输入您的收入:6000您的收入为中高收入!当输入4000时,运行结果为:请输入您的收入:4000#此时不执行print(‘您的收入为中高收入!’)2.2.3条件语句2).双分支条件结构双分支条件结构的语法格式如下:if条件:

语句块1else:

语句块2该语法表示当条件成立或为真时,执行语句块1,否则就执行语句块2。[例2-8]

双分支条件结构的使用。income=float(input(‘请输入您的收入:’))ifincome>=5000:print(‘您的收入为中高收入!’)else:print(‘您的收入为低收入!’)当输入4000时,运行结果为:请输入您的收入:4000您的收入为低收入!2.2.4循环语句Python提供了两种基本的循环结构:while循环和for循环。1).while循环语句While循环语句的语法格式如下:while判断条件

循环体循环体可以是单个语句或语句块。判断条件可以是任何表达式,任何非零或非空的值均为true。当判断条件为真时,执行循环体;当判断条件为假时,循环结束。[例2-10]

while循环。i=0#初始化一个变量,该变量用作循环的判断条件whilei<=4:#判断条件,用来控制循序执行的条件print(i)i+=1;#更新变量的值上述代码的作用是:初始化一个变量i=0,用while语句进行条件判断i是否小于等于5,如果条件满足,执行一次循环,既:执行缩进的语句块,然后利用表达式i+=1更新i的值,继续返回while条件判断。如此循环,直到变量i增加到5时,不再满足while条件,退出循环。以上代码输出:0,1,2,3,4。2.2.4循环语句Python提供了两种基本的循环结构:while循环和for循环。2).for循环For循环是通过遍历可迭代对象的每一个元素来实现循环的。所谓遍历就是沿着某一路线进行搜索,对路线中的每一个节点都进行一次访问。For循环遍历就是一次把一个可迭代对象中的每个元素遍历出来,分别进行操作。语法格式如下:for循环变量in可迭代对象

循环体[例2-11]

for循环,计算1-50之间的整数之和。sum=0#初始化一个变量sum,该变量用于求和foriinrange(1,51):sum=sum+iprint(sum)#输出1-50之间的整数之和2.2.4循环语句Python提供了两种基本的循环结构:while循环和for循环。3).嵌套循环

嵌套循环指的是在一个循环内部嵌套另一个或多个循序,用于处理复杂的迭代逻辑。外层循环用于控制整体的迭代流程,内层循环负责处于更细致的迭代任务。

在for循环体内可以嵌入for循环体也可以嵌入while循环体。同理,在while循环体内可以嵌入while循环体也可以嵌入for循环体。[例2-13]使用嵌套循环打印乘法表。foriinrange(1,10):forjinrange(1,10):print(f’{i*j:2}’,end=’’)print()2.2.4循环语句4).break和continue语句Python使用break语句和continue语句终止循环。break语句用来结束整个循环,无论break所在的循环序列是否完全被递归或遍历完,循环语句都被停止执行,它可以用在while和for循环中。但如果使用嵌套循环,break语句将停止最深层的循环,外层循环还会继续执行。Continue语句用于跳出本次循环,既本次循环剩余的语句不再执行,但下一轮循环会继续执行。2.2.5Numpy数值计算基础NumPy提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库,它专为进行严格的数字处理而产生。目前很多大型金融公司以及一些核心的科学计算组织都使用NumPy进行数值计算。1)Numpy创建数组使用NumPy创建数组时,需要先引入numpy库,再使用array()生成数组。[例2-17]NumPy创建数组示例。importnumpyasnp#引入numpy库,将该库的别名设置为np,也可以设置为其他的别名a=np.array([[1,2,3,4],[5,6,7,8]])b=np.array([1,2,3,4,5])print(a)print(b)运行结果为:[[1,2,3,4][5,6,7,8]][1,2,3,4,5]2.2.5Numpy数值计算基础2)Numpy数组运算Numpy提供很多运算符号与函数,提供了丰富的计算功能。以a=np.array([1,2,3]),b=np.array([2,4,6]),c=np.array([[1,2,3],[4,5,6],[7,8,9]])为例,表2-9演示了Numpy常用的运算符与函数:运算符或函数含义实例*乘法运算符a*2:结果为([2,4,6]);a*b:结果为([2,8,18]);T数组转置c.T:结果为[[1,2,3][4,5,6][7,8,9]]dot()点积dot(a,b):结果为28average()求均值np.average(c,axis=0):按列求均值,结果为array([4,5,6]);np.average(c,axis=1):按行求均值,结果为array([2,5,8]);std()标准差

var()方差

max()求最大值np.max(c):默认求所有元素的最大值,np.max(c)结果为9;np.max(c,axis=1):求每行的最大值,np.max(c,axis=1)结果为array([3,6,9]);sort()排序np.sort(c,axix=0):结果为array([[1,2,3],[4,5,6],[7,8,9]])shape改变数组形状a.shape=3,1:将数组a改成3行1列,结果为array([[1][2][3]])表2-9Numpy常用的运算符与函数2.2.5Numpy数值计算基础3)Numpy矩阵运算Numpy也提供了矩阵运算的函数,可以进行大量的矩阵计算。这里以a_mat=np.matrix([[3,5,7]]),b_mat=np.matrix([[1,2,3]]),d_mat=np.matrix([[1,2,3],[4,5,6],[7,8,9]])为例,在表2-10里列出了常用的矩阵计算函数。函数含义实例diagonal()求矩阵的对角线元素d_mat.diagonal():计算结果为matrix([[1,5,9]])flatten()矩阵平铺d_mat.flatten():计算结果为matrix([[1,2,3,4,5,6,7,8,9]])linalg.eig()求矩阵的特征值与特征向量np.linalg.eig(d_mat):特征值为[1.61168440e+01,-1.11684397e+00,-1.30367773e-15]),特征向量为:matrix([[-0.23197069,-0.78583024,0.40824829],[-0.52532209,-0.08675134,-0.81649658],[-0.8186735,0.61232756,0.40824829]])linalg.inv()计算逆矩阵np.linalg.inv(d_mat):matrix([[-4.50359963e+159.00719925e+15-4.50359963e+15][9.00719925e+15-1.80143985e+169.00719925e+15][-4.50359963e+159.00719925e+15-4.50359963e+15]]linalg.qr()矩阵的QR分解np.linalg.qr(d_mat):matrix([[-0.12309149,0.90453403,0.40824829],[-0.49236596,0.30151134,-0.81649658],[-0.86164044,-0.30151134,0.40824829]]),matrix([[-8.12403840e+00,-9.60113630e+00,-1.10782342e+01],[0.00000000e+00,9.04534034e-01,1.80906807e+00],[0.00000000e+00,0.00000000e+00,-1.77635684e-15]])linalg.det()计算矩阵的行列式np.linalg.det(d_mat):6.66133814775094e-16表2-10Numpy常用的矩阵运算函数2.2.6Pandas统计分析基础Pandas是基于Numpy的一种工具,也是一个数据工具箱,最初是作为金融数据分析而开发出来的。Pandas纳入了大量数据库和数据模型,提供了操作大型数据集所需要的高效工具,处理数据也更加简单、便捷,目前也已被广泛应用于大数据分析的各个领域。Pandas与Numpy都可以用于处理数据,两者最大的区别在于:Numpy更适合处理统一的数值数组数据,而Pandas可以处理表格数据和混杂数据。2.2.6Pandas统计分析基础1)DataFrame数据结构Pandas最常用的数据类型是DataFrame。DataFrame是一种二维数据结构,相当于Excel表格,存储在DataFrame中的每列数据类型可以不同。DataFrame的创建语法如下:pd.DataFrame(data,colums=[序列],colums=[序列],index=[序列])

常用的DataFrame的属性有index、colums、values、dtype和shape等。其中,index返回DataFrame的行索引,colums返回列索引,values返回DataFrame的数据值,dtype返回每一列的数据类型,shape返回DataFrame的维度,即行数和列数。2.2.6Pandas统计分析基础函数描述rename()对行索引或列名进行修改insert(loc,column,value)将value值插入到第loc列,列名为column指定的列名。drop(labels,axis,index,columns)删除指定的行或列。labels为指定的行或列;axis=0为删除行,axis=1为删除列;index指定的一行或多行;columns用列名指定要删除的行或列。head(n)返回前n行,默认n=5tail(n)返回后n行,默认n=5isnull()检测缺失值,返回布尔型的DataFrame,缺失值会被标记为True,非缺失值被标记为Falsefillna()缺失值填充函数,fillna(0):填充缺失值为0;fillna(method='mean')填充为某个轴上其他值的平均值;使用fillna(method='median')填充为某个轴上其他值的中位数dropna(axis,how)删除缺失数据的函数。axis=0,删除含有缺失值的行;axis=1,删除含有缺失值的列。How=’any’,行或列中只要存在一个缺失值就删除整行或整列,How=’all’,只有当整行或整列都是缺失值时才删除。drop_duplicates(subset,keep)去掉重复的值。Subset表示要去重的列名,默认为None。Keep有三个可选参数,分别是first、last、False,默认为first,表示只保留第一次出现的重复项,删除其余重复项,last表示只保留最后一次出现的重复项,False则表示删除所有重复项。表2-11DataFrame常用的函数2.2.6Pandas统计分析基础2)pandas文件操作Pandas读取Excel文件使用read_excel()函数,该函数的参数很多。参数参数说明实例io读取的Excel文件路径r’E:\Python\data1.xlsx’(r防止字符转义)Sheet_name导入的sheet页sheet_name=0:导入第一页sheet中的数据;sheet_name=’表名’,导入指定表名sheet中的数据;sheet_name=’SheetN’:导入第N个sheet中的数据,S要大写header指定哪一行做列名header=0:默认为0,即默认表格第一行作为列名;header=[0,1],表示将前两行作为列名names最定义最终的列名适用于Excel表格中的数据缺少列名,或者需要重新定义列名的情况,names的长度必须和Excel列的长度一致,否则会报错index_col用作索引的列index_col=None:默认数据不带行索引号,自动分配从0开始的索引号;index_col=0:以第一列作为行索引;index=[0,1]:将前两列作为多重索引。usecols需要读取哪些列usecols=None:默认读取所有列的数据;usecols=[0,2,3]:读取指定列的数据;usecols=[’age’,’sex’]:读取列名所指定的列的数据;表2-12read_excel()函数的参数2.2.6Pandas统计分析基础2)pandas文件操作对Excel数据处理之后,可以通过pandas中的写入函数to_excel()将数据写入到excel表格中,to_excel()函数的常用参数如下表格所示。参数参数说明实例excel_writer()写入的文件路径r’E:\liu\data1.xlsx’(r防止字符转义)Sheet_name写入的excel表名sheet_name=’sheet1’:默认表名为sheet1;sheet_name=’表名’:自定义表名index是否输出行索引index=True:默认输出;index=None:不输出航索引。

na_rep缺失值的填充可以等于0,或者空值表2-13to_excel()函数的参数2.2.6Pandas统计分析基础3)Pandas数据索引Pandas可以通过索引来筛选需要的数据。DataFrame索引分为行索引和列索引,具体筛选方法包括:直接筛选、条件筛选和索引器筛选。

直接筛选的语法格式为:df[]。当选择单列数据的时候,直接用df[’列名’]。选择多列数据的时候,用df[’列名1’,’列名2’..]选择多列。选择多行数据,使用df[a:b]选取连续的行,a表示从第a行开始选取,选取至第(b-1)行的数据。2.2.6Pandas统计分析基础3)Pandas数据索引

条件筛选也叫布尔筛选,根据布尔条件选择对应的行。条件的数量可以是单个也可以是多个。

单个布尔条件选择格式为:df[(df[’列’]==条件)],例如df[(df[‘资产’]>20000)]表示筛选出资产大于20000的行。

多个布尔条件选择格式为:df[(df[’列1’]==条件1&df[’列2’]==条件2)],表示选取列1符合条件1并且列2符合条件2的行;例如df[(df[’年份’]==’2024’&df[’资产’]>20000)],表示筛选出2024年资产大于20000的行。2.3Scikit-learn2.3.1Scikit-learn简介2.3.2Scikit-learn数据挖掘模块2.3.1Scikit-learn简介Scikit-learn‌(简称sklearn)是一个开源的Python机器学习库,旨在为数据挖掘和数据分析提供丰富而强大的工具。Scikit-learn建立在SciPy的基础上,依赖于NumPy、SciPy和Matplotlib等库,提供了大量的数据挖掘法实现,涵盖了监督学习、无监督学习、半监督学习等领域,还包含了诸多模型评估及选择的方法。Scikit-learn的API设计简洁一致,既适合初学者入门,也能满足专业人士在实际问题解决中的需求‌。2.3.1Scikit-learn简介Scikit-learn的主要特点:简单易用‌:提供简洁一致的API设计,用户可以轻松使用各种机器学习算法和工具‌。‌广泛的机器学习算法‌:包含分类、回归、聚类等多种算法,如线性回归、决策树、随机森林、支持向量机等‌。‌丰富的数据预处理功能‌:提供特征缩放、特征选择、数据清洗等功能,帮助用户准备好用于训练的数据集‌。‌模型评估与选择‌:提供多种模型评估和选择的指标和工具,帮助用户评估模型性能、选择合适的模型‌。‌高性能运算‌:底层使用NumPy和SciPy等高性能计算库,能够快速处理大规模数据‌。2.3.2

Scikit-learn数据挖掘模块sklearn将所有的函数和方法分为六大类,分别是:分类模型(Classification);回归模型(Regression);聚类模型(Clustering);降维方法(Dimensionalityreduction);模型选择(Modelselection);数据预处理数据预处理:Scikit-Learn提供了数据预处理包sklearn.preprocessing,这个包主要提供了几个常见的Utility函数和transformer类,用于对原始数据进行变换使得其更加适合数据挖掘。标准化(Standardization)和归一化(Normalization)是调整数据特征尺度的重要步骤,也是常见的数据预处理技术,有助于提高数据挖掘某些算法的性能。处理缺失值是也是数据预处理中的常见任务。Scikit-learn本身不直接处理缺失值,但可以使用SimpleImputer或IterativeImputer等工具来在预处理阶段填充缺失值。2.3.2

Scikit-learn数据挖掘模块分类模型(Classification):Scikit-learn提供了多种分类算法,包括支持向量机SVM、决策树、神经网络、集成学习方法等。一个使用SVM进行分类的例子如[例2-24]所示。[例2-24]SVM分类fromsklearnimportsvm#导入svm包X=[[0,0],[1,1]]y=[0,1]clf=svm.SVC()clf.fit(X,y)#训练模型clf.predict([[2.,2.]])#对新向量[2.,2.]预测最终生成的SVM模型取决于训练集中的部分数据,这部分数据也叫做支持向量。有关支持向量的信息可以通过SVM的属性获取,常用的几个属性为support_vectors_,support_andn_support_,分别表示支持向量、支持向量的索引、以及每个类别的支持向量的数目。2.3.2

Scikit-learn数据挖掘模块聚类模型Scikit-learn提供了若干种聚类算法的实现,包括K-means聚类、DBSCAN聚类、层次聚类、谱聚类和近邻传播聚类等。Scikit-learn官网上提供了几种聚类算法对不同形状的数据集进行聚类的效果对比,如图所示:2.3.2

Scikit-learn数据挖掘模块回归模型:

Scikit-learn提供了线性回归、多项式回归、逻辑回归、岭回归、决策树回归、随机森林回归等回归模型及实现方法。[例2-26]线性回归示例。#导入所需要的包importpandasaspdfromsklearn.model_selectionimporttrain_test_splitfromsklearn.linear_modelimportLinearRegressionfromsklearn.metricsimportmean_squared_error,r2_score

#假设我们有一个包含多元数据的DataFramedata=pd.DataFrame({'X1':[1,2,3],#自变量x1'X2':[2,5,8],#自变量x2'X3':[1,6,11],#自变量x3'Y':[11,20,30]#因变量y})#将数据分为训练集和测试集X_train,X_test,y_train,y_test=train_test_split(data[['X1','X2','X3']],data['Y'],test_size=0.2,random_state=42)

#创建线性回归模型model=LinearRegression()#训练模型model.fit(X_train,y_train)#基于测试数据得到预测值y_pred=model.predict(X_test)

#输出结果print(f"Coefficients:{model.coef_}")print(f"Intercept:{ercept_}")print(f"Meansquarederror:{mean_squared_error(y_test,y_pred)}")print(f"R^2score:{r2_score(y_test,y_pred)}")

2.3.2

Scikit-learn数据挖掘模块降维方法降维是数据挖掘中常用的一种技术,用于减少数据集中的特征数量,同时尽量保留原始数据的重要信息。降维对于提高计算效率、避免维度灾难以及更好地理解数据特征具有重要意义。Scikit-learn主要提供了主成分分析(PCA)、核主成分分析(KPCA)、截断奇异值分解、字典学习、因子分析(FactorAnalysis)、独立成分分析(ICA)等方法实现数据集的降维。PCA是一种常用的线性降维方法,它通过线性变换将原始数据投影到一个新的坐标系统中,使得投影后的数据方差最大(即信息损失最小)。2.3.2

Scikit-learn数据挖掘模块降维方法降维是数据挖掘中常用的一种技术,用于减少数据集中的特征数量,同时尽量保留原始数据的重要信息。降维对于提高计算效率、避免维度灾难以及更好地理解数据特征具有重要意义。Scikit-learn主要提供了主成分分析(PCA)、核主成分分析(KPCA)、截断奇异值分解、字典学习、因子分析(FactorAnalysis)、独立成分分析(ICA)等方法实现数据集的降维。PCA是一种常用的线性降维方法,它通过线性变换将原始数据投影到一个新的坐标系统中,使得投影后的数据方差最大(即信息损失最小)。2.3.2

Scikit-learn数据挖掘模块模型选择模型选择model_selection也是scikit-learn的核心模块之一,用于数据集划分、交叉验证、超参数搜索以及验证评估。数据集划分工具将数据集划分为训练集和测试集,sklearn.model_selection模块提供了sklearn.model_selection函数完成此功能。交叉验证支持多种交叉验证方法,评估模型的泛化能力,常用的函数包括cross_val_score,cross_validate。超参数搜索实现网格搜索、随机搜索等自动化超参数优化方法,常用的函数包括GridSearchCV、RandomizedSearchCV等。据划分策略了多种数据划分策略,包括随机划分、分层划分和时间序列划分等,常用的函数包括KFold,StratifiedKFold、TimeSeriesSplit等。2.3.2

Scikit-learn数据挖掘模块感谢观看第3章认识数据与数据预处理《数据挖掘与财务决策》目录3.1认识数据数据对象、属性类型与统计描述3.2数据预处理数据清洗、集成、规约与变换3.3本章小结核心知识点回顾与总结3.1认识数据3.1.1数据对象及属性类型3.1.2数据的基本统计描述3.1.3数据可视化3.1.4度量数据的相似度和相异度3.1.1数据对象及属性类型数据对象、属性类型数据对象与属性数据对象(DataObject)代表一个实体(如教室、写作风格),也被称为样本或实例。在数据库中,对应表中的一行(元组)。属性(Attribute)描述数据对象的特征或性质,也被称为特征或维度。在数据库中,对应表中的一列。学生数据表示例学号姓名性别电话出生日期家庭住址104210301王明男138138886622002-1-3江苏南京秦淮区104210302李岩男137289074432002-10-5北京南大街28号104210303洪艳女139762982212002-8-20上海虹口路99号104210304张欣女139209873212002-6-3天津和东区核心概念映射:数据对象(行/Row)是我们分析的个体单位,属性(列/Column)是描述这些个体的具体维度。属性类型(一):标称、二值与序数属性标称属性Nominal定义:值是符号或名称,代表类别,无顺序。示例:性别(男/女)、职业(医生/教师)。特点:数学运算无意义,中心趋势用众数表示。二值属性Binary定义:特殊的标称属性,只有两种状态(0/1,是/否)。示例:医学化验结果(阳性/阴性)。特点:分为对称(同等重要)和非对称(其一重要)。序数属性Ordinal定义:值有意义的顺序或排名,但相邻差值未知。示例:考试成绩(A+/A-)、满意度等级。特点:可比较大小,不能加减,中心趋势可用中位数。属性类型(二):数值与离散/连续属性数值属性(Numeric)定义:定量的,用整数或实数值表示,是可度量的量。子类型:区间标度:有相等单位,但无真正零点(如温度、日期)。比率标度:有固有零点,可以比较倍数(如重量、长度)。离散与连续属性离散属性:具有有限或无限可数个值(如性别、血型)。连续属性:取值是连续范围内的任意实数(如身高、体重)。核心区别:数值属性强调“量”的大小(可运算),而离散/连续属性强调“取值范围”的特征。3.1.2数据的基本统计描述中心趋势与数据散布(一)中心趋势度量示例数据(薪水):[28,42,50,51,52,53,53,56,61,90]均值(Mean)所有值的总和除以个数,易受极端值影响。计算结果:53.6中位数(Median)有序数据的中间值,稳健性强,不受极端值干扰。计算结果:(52+53)/2=52.5众数(Mode)数据集中出现频率最高的值,适用于所有属性类型。计算结果:53中列数(Midrange)最大值与最小值的平均值,计算简单但对极值敏感。计算结果:(28+90)/2=59数据分布形态对称分布均值=中位数=众数数据左右两侧对称,无偏斜正倾斜分布(右偏)众数<中位数<均值右侧长尾拉高均值负倾斜分布(左偏)均值<中位数<众数左侧长尾拉低均值核心规律:均值受极端值影响最大,众数位置由峰值决定,中位数居中稳健。(二)度量数据散布(1):极差与四分位数极差(Range)定义:数据集中最大值与最小值的差。公式:Range=Max-Min示例:薪水数据的极差为90-28=62。特点:计算简单,但只考虑极值,忽略中间分布。四分位数(Quartiles)定义:将有序数据划分为四个相等部分的数值。•Q1(第25百分位)/Q2(中位数)/Q3(第75百分位)四分位极差(IQR):Q3-Q1意义:反映中间50%数据的散布情况,比极差更稳健。“极差是最基础的散布指标,而四分位数能更稳健地反映数据核心的离散程度。”度量数据散布(2):方差与标准差方差(Variance)定义:各数据值与均值之差的平方的平均数。公式:σ²=(1/N)∑(xi-x̄)²示例:薪水数据的方差约为250.44。标准差(StandardDeviation)定义:方差的平方根,与原始数据单位一致。公式:σ=√σ²示例:薪水数据的标准差约为15.83。特点:值越小越集中,越大越分散。核心区别与意义:方差通过平方消除了偏差的正负影响,适合数学推导;而标准差还原了量纲,更直观地反映了数据偏离均值的实际距离,是实际应用中描述数据离散程度的首选指标。3.1.3数据可视化直观呈现数据特征与规律数据可视化类型(1):基础图表柱状图(BarChart)用于比较不同类别间的数值大小,直观展示差异。饼图(PieChart)用于展示各部分占总体的比例,体现构成关系。折线图(LineChart)用于展示数据随时间或有序类别变化的趋势。数据可视化基础系列·第一部分数据可视化类型(2):高级图表散点图(ScatterPlot)用于展示两个数值变量之间的关系和分布,识别数据聚类或趋势。热力图(Heatmap)通过颜色深浅展示数据的密度或强度,常用于矩阵数据或空间分布分析。箱线图(BoxPlot)用于展示数据的分布特征,包括中位数、四分位数和异常值,适合多组对比。3.1.4度量数据的相似度和相异度概念、邻近度度量、余弦相似度相似度和相异度的概念

通常,使用相异度(而不是相似度)作为度量标准。相异度用

d(x,y)来表示。通常称相异度为距离。当x和y相似时,距离d(x,y)很小;如果x和y不相似,d(x,y)就很大。不失一般性,假定:

距离也具有对称性:98

通过一个单调递减函数,将相异度(距离)转换成相似度度量。

如,可以采用以下变换:a).采用负指数函数,将距离转换为相似度度量,即99其中,s(x,y)表示相似度。

相似性度量的取值一般在区间[0,1]之间,值越大,说明两个对象越相似。b)采用距离的倒数作为相似度度量,为了避免分母为0的情况,在分母上加1,即c)若距离在0~1之间,可采用与1的差作为相似系数,即d)若距离的取值在一个有限的范围内,可将距离映射(归一化)到区间[0,1]内,此时的相似度为100

其中,P是刻画对象的属性总数,m是匹配的数目。例:对象x为(A,红色),对象y为(C,红色),则:d(x,y)=(2-1)/2=0.5相似度可以用下式计算:

(3)二元属性的相似性度量

二值(Binary)属性只有两种状态:0表示属性不存在,1表示属性存在。假设x和y是两个包含n个二值属性的对象。对此二值属性有四种组合方式:

f00为在对象x和y中均取0的二值属性个数,f01为在对象x中取0而在对象y中取1的二值属性个数,f10为在对象x中取1而在对象y中取0的二值属性个数,f11为在对象x和y中均取1的二值属性个数。

二值属性存在对称的和不对称的两种。若二值属性的两个状态值所表示的内容同等重要,则它是对称的,否则为不对称的。

对称二值属性:常用的二值属性相似度计算方法有简单匹配相关系数(SimpleMatchingCoefficient,

SMC),其定义如下:

f11+

f00为取值相同的属性个数,f01+

f10为取值不同的属性个数。计算属性在两个对象中都存在和都不存在的情况。如,查找某次考试中学生答案相似的题,即都答对的题和都答错的题。

对称二值属性:给定属性变量disease,它描述检测结果是positive(阳性)或negative(阴性),显然这两个检测结果的重要性是不一样的。通常,将少见(重要)的情况用1表示(如乙肝阳性),而将其他(不重要)的情况用0表示(如乙肝阴性)。

取值1比取值0更重要、更有意义的二值属性具有不对称性。常用Jaccard系数来定义其对象间的相似度:104

示例:计算下面两个二值向量之间的SMC系数和Jaccard系数。

x=(1,0,0,0,0,0,0,0,0,1),

y=(0,0,0,0,0,0,1,0,0,1)

在x中取0、在y中取1,f01=1;在x中取1、在y中取0,f10=1;

在x中取0、在y中取0,f00=7;,在x中取1、在y中取1,f11=1105(4)数值属性的相异性

①欧式距离(EuclideanDistance)是最为人熟知的距离度量标准,也就是通常所想象的“距离”。在n维欧式空间中,每个点是一个n维实数向量。该空间中的传统距离度量,即常说的L2范式,定义如下:广泛应用于数值属性相异性的距离度量:欧式距离、曼哈顿距离和闵可夫斯基(Minkowski)距离。

②曼哈顿距离

另一种常用的数值属性距离度量标准是曼哈顿距离(ManhattanDistance)或叫城区距离(CityBlock),其定义如下:

两个点的距离是每维距离的绝对值之和。107

闵可夫斯基距离:Minkowski距离(Lr范式)把欧式距离和曼哈顿距离包含为特例:r为变量。注意不要将参数r与空间维数(属性个数)n混淆。108③闵可夫斯基距离

L∞范式,当r趋向于无穷

温馨提示

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

最新文档

评论

0/150

提交评论