13 MATLAB判别分析

马氏距离详解(数学原理、适用场景、应用示例代码) 看了很多关于马氏距离(Mahalanobis Distance)的介绍,但是总感觉有一些地方不太清晰,所以结合数学公式、机器学习中的应用案例,从头梳理一下。马氏距离实际上是欧氏距离在多变量下的“加强版”,用于测量点(向量)与分布之间的距离。 阅读详情

更多MATLAB数据分析视频请点击,或者在网易云课堂上搜索《MATLAB数据分析与统计》 http://study.163.com/course/courseMain.htm?courseId=1003615016

更多MATLAB数据分析视频请点击,或者在网易云课堂上搜索《MATLAB数据分析与统计》 http://study.163.com/course/courseMain.htm?courseId=1003615016

判别分析是对未知类别的样本进行归类的一种方法。虽然也是对样品进行分类,但它与聚类分析还是不同的。聚类分析的研究对象还没有分类,就是要根据抽样的样本进行分类,而判别分析的研究对象已经有了分类,只是根据抽样的样本建立判别公式和判别准则,然后根据这些判别公式和判别准则,判别未知类别的样品所属的类别。

 判别分析有着非常广泛的应用,比如在考古学上,根据出土物品判别墓葬年代,墓主人身份,性别;在医学上,根据患者的临床症状和化验结果判断患者疾病的类型;在经济上,根据各项经济发展指标判断一个国家经济发展水平所属的类型;在模式识别领域,用来进行文字识别,语音识别,指纹识别等。

 我们这章的主要内容是距离判别和贝叶斯判别

1.距离判别

1.1 马氏距离(Mahalanobis距离)

  马氏距离(Mahalanobis distance)是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示数据的协方差距离。它是一种有效的计算两个未知样本集的相似度的方法。与欧氏距离不同的是它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的)并且是尺度无关的(scale-invariant),即独立于测量尺度。对于一个均值为μ,协方差矩阵为Σ的多变量向量,其马氏距离为sqrt( (x-μ)'Σ^(-1)(x-μ) )。

 定义x,y之间的平方马氏距离为

     d^2(x,y)=(x-y)'Σ^(-1)(x-y)

  定义x到总体G的平方马氏距离为

   d^2(x,G)=(x-μ)'Σ^(-1)(x-μ)

1.2 两总体距离判别

 设有两个p维总体G1和G2,分布的均值向量分布为u1,u2,协方差矩阵分别为Σ1>0,Σ2>0。现有一未知类别的样本x,试判断x的归属

 如果  d^2(x,G1)<d^2(x,G2),则x属于G1类

 如果 d^2(x,G1)>d^2(x,G2), 则x属于G2类

 d^2(x,G1) = d^2(x,G2),待判

1.3距离判别法的MATLAB实现

 MATLAB统计工具箱中提供了classify函数,用来对未知类别的样品进行判别,可以进行距离判别和先验分布为正态分布的贝叶斯判别。调用格式如下:

 <1> class=classify(sample,training,group)

  将sample中的每一个观测归入training中观测所在的某个组。输入参数sample是待判别的样本数据矩阵,training是用于构成判别函数的训练样本数据矩阵,他们的每一行对应一个观测,每一列对应一个变量,sample和training具有相同的列数。参数group是与training相应的分组变量,group和training具有相同的行数,group中的每一个元素指定了training中相应观测所在的组。group可以是一个分类变量、数值向量、字符串数组或字符串元胞数组。输出参数class是一个列向量,用来指定sample中个观测所在的组,class与group具有相同的数据类型。

 classify函数把group中的NaN或空字符串作为数据缺失数据,从而忽略training中相应的观测。

<2>class=classify(sample,training,group,type)

 可以通过type参数指定判别函数的类型,type的可能取值如下表:

type参数的可能取值

   说明

‘linear’

线性判别函数(默认情况)

‘diaglinear’

与‘linear’类似,此时用一个对角矩阵作为协方差矩阵的估计

‘quadratic’

二次判别函数

‘diagquadratic’

与‘quadratic’类似,此时用对角矩阵作为各个协方差矩阵的估计

‘mahalanobis’

各组的协方差矩阵不全相等并未知时的距离,此时分别得出各组的协方差矩阵的估计


<3>class=classify(sample,training,group,type,proir)

 可以通过prior参数指定各组的先验概率,默认情况下,各组先验概率相等。

<4>[class,err]=classify(........)

  返回基于training数据的误判概率的估计值

1.4 距离判别的例子

对21个破产的企业收集他们在破产前两年的年度财务数据,同时对25个财务良好的企业也收集同一时期的数据。数据涉及4个变量

x1=现金流量/总债务

x2=净收入/总资产

x3=流动资产/流动债务

x4=流动资产/净销售额


数据中,1组为破产企业,2组为非破产企业。现有4个未判企业,他们的相关数据位于表中的最后4行,根据距离判决法,对这4个未判企业进行判别。

%读取数据
%读取C2:F51范围的数据,即全部样本数据
sample = xlsread('企业.xls','C2:F51');

%读取C2:F47范围的数据,即已知组别的样本数据
training = xlsread('企业.xls','C2:F47');

%读取B2:B47范围的数据,即样本的分组信息
group = xlsread('企业.xls','B2:B47');
obs = [1 : 50]';


%距离判别
%判别函数类型为mahalanobis,返回判别结果向量C和误判概率err
[C,err] = classify(sample,training,group,'mahalanobis');
[obs, C]
err

ans =

     1     1
     2     1
     3     1
     4     1
     5     1
     6     1
     7     1
     8     1
     9     1
    10     1
    11     1
    12     1
    13     1
    14  &n

使用matlab绘制混淆矩阵 函数并传入实际标签和预测标签向量作为参数。函数的返回值是一个包含了混淆矩阵的矩阵。函数来计算和绘制混淆矩阵。下面是一个基本的示例代码,展示了如何使用。等函数来设置标题和坐标轴标签,使图表更加清晰易读。请确保在运行此代码之前,你已经将实际标签和预测标签保存在名为。的向量中,并将它们的值根据实际情况进行了相应的替换。然后,我们使用MATLAB的图形功能绘制混淆矩阵。函数添加颜色条,可以帮助解释混淆矩阵中的数据。在上述代码中,我们首先计算了混淆矩阵,使用。函数用于绘制矩阵,使用混淆矩阵。 阅读详情

相关推荐

深度学习:马氏距离

马氏距离()是一种用于计算不同维度数据点之间距离的度量方法。它考虑了数据的协方差结构,因此在处理具有相关性的多维数据时更加有效。与欧氏距离不同,马氏距离不仅考虑了各个变量的量纲,还考虑了它们之间的相关性。

m0_46135173的博客 3128

马氏距离 Mahalanobis Distance

马氏距离是一种距离的度量,可以看作是欧氏距离的一种修正,修正了欧氏距离中各维度尺度不一致且相关的问题。DMxx−μTΣ−1x−μDM​xx−μTΣ−1x−μ​数据点xxxyyyDMxx−yTΣ−1x−yDM​xx−yTΣ−1x−y​其中Σ\SigmaΣ为多维随机变量的协方差矩阵μ\muμ为样本均值,如果协方差矩阵是单位矩阵,也就是各维度独立同分布,马氏距离就变成了欧氏距离。

泠山的博客 8284

matlab距离判别分析的应用

matlab距离判别分析的应用 一、定义 距离判别法:距离判别分析方法是判别样品所属类别的一应用性很强的多因素决方法,其中包括两个样本总体距离判别法,多个样本距离判别法。 多个总体距离判别法:多个总体距离判别法是距离判别法的一种,是两个总体距离判别法的推广,具有多个总体,将待测样本归为多个样本中的一类。 1.1两个总体的距离判别法 设有两个总体(或称两类)G1、G2,从第一个总体中抽取n1个样品,...

Mr_jiang_ge_ge的博客 8923

马氏距离详解

马氏距离详解一、理性认知二、感性认知第一个例子第二个例子三、实例认知四、公式推导推导过程致谢 一、理性认知 马氏距离(Mahalanobis distance)是由印度统计学家马哈拉诺比斯(P. C. Mahalanobis)提出的,表示点与一个分布之间的距离。它是一种有效的计算两个未知样本集的相似度的方法。与欧氏距离不同的是,它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重...

xjb329859013的博客 5万+

Matlab判别分析(根据例子学原理)

1.介绍 判别分析是根据观测到的某些指标对所研究的对象进行分类的一种多元统计分析方法。 判别分析(Discriminant Analysis,简称DA)技术是由费舍(R.A.Fisher)于1936年提出的。 判别分析对判别变量有三个基本假设。 其一是变量之间没有显著的相关。否则将无法估计判别函数,或者虽然能够求解但参数估计的标准误很大,以致于参数估计统计性不显著。 其二是各组案例的协方差矩阵相等。在此条件下,可以使用很简单的公式来计算判别函数和进行显著性检验。 其三是各判别变量之间具有多元正态分布,即每个

qq_38865458的博客 7170

判别分析-基于matlab

原理介绍 在生产、科学研究和日常生活中,经常会遇到对某一研究对象属于哪种情况作出判断。 实际案例: (1)要根据这两天天气情况判断明天是否会下雨; (2)医生要根据病人的体温、白血球数目及其它症状判断此病人是否会患某种疾病; (3)根据之前关于破产企业与财务良好的企业的数据,来判断新的企业是否破产; 从概率论的角度看,可把判别问题归结为如下模型。设共有 n个总体: ×1×2,…×n\times 1 \times 2, \ldots \times n×1×2,…×n 其中 Xi 是m 维随机变量,其分布函数

weixin_44510920的博客 1951

MATLAB实现判别分析数学建模算法

判别分析是一种统计方法,用于确定两个或多个群体之间的差异。它可以用于预测或分类,以及识别影响群体之间差异的变量。判别分析通常用于解释和预测群体之间的差异,例如在市场研究中,用于确定不同消费者群体之间的差异,或者在医学研究中,用于识别不同疾病类型之间的差异。判别分析可以通过多元方差分析(MANOVA)或线性判别分析(LDA)等方法来实现。

weixin_58438203的博客 1007

matlab距离判别分析经典例题,第4章判别分析matlab实现.ppt

第4章判别分析matlab实现③ 重复步骤①,②,直到G1中的全部样品依次被删除,又进行判别,其误判的样品个数记为 ④ 对G2的样品重复步骤①,②,③直到G2中的全部样品依次被删除又进行判别,其误判的样品个数记为 于是交叉误判率估计为: 第32页/共57页 4.2 Bayes判别分析 贝叶斯公式是一个我们熟知的公式 距离判别只要求知道总体的数字特征,不涉及总体的分布函数,当参数...

weixin_39529914的博客 1669

Matlab】降维方法_线性判别分析LDA

鸢尾花(Iris)数据集是一个经典的数据集,用于机器学习和统计学习中的分类和聚类问题。该数据集包含了三种不同类型的鸢尾花(山鸢尾、变色鸢尾和维吉尼亚鸢尾)的测量数据,每种花各有50个样本。每个样本包含四个特征,即萼片长度、萼片宽度、花瓣长度和花瓣宽度,以及它所属的鸢尾花类型。该数据集最早由英国统计学家和生物学家Ronald Fisher在1936年的一篇论文中介绍,并一直被广泛用于分类和聚类问题的研究中。由于其简单性和广泛应用性,鸢尾花数据集已成为了机器学习和统计学习中的标准数据集之一。

敲代码两年半的练习生博客 4206

数学建模常用模型15 :判别分析

判别分析(discriminant analysis)是根据所研究的个体的观测指标来推断该个体所属类型的一种统计方法,在自然科学和社会科学的研究中经常会碰到这种统计问题。例如在地质找矿中我们要根据某异常点的地质结构、化探和物探的各项指标来判断该异常点属于哪一种矿化类型;医生要根据某人的各项化验指标的结果来判断该人属于什么病症;调查了某地区的土地生产率、劳动生产率、人均收入、费用水平、农村工业比重等...

HaLosec_Wei 9576

Fisher判别分析

原文地址 Fisher判别分析 首先我们得搞清楚什么是Fisher算法?选取任何一本模式识别与智能计算的书都有这方面的讲解。首先得知道Fisher线性判别函数,在处理数据的时候,我们经常遇到高维数据,这个时候往往就会遇到“维数灾难”的问题,即在低维空间可行,那么在高维空间往往却不可行,那么此时我们就可以降数据降维,将高维空间降到低维空间。 可以考虑把维空间的样本投影到一条直线上,形成一维

rayna00的专栏 4398

MATLAB判别分析例题,判别分析matlab实现案例.doc

判别分析matlab实现案例.doc 读取EXAMP10_01XLS中数据,进行距离判别读取数据读取文件EXAMP10_01XLS的第1个工作表中C2F51范围的数据,即全部样本数据,包括未判企业SAMPLEXLSREAD EXAMP10_01XLS , , C2F51 读取文件EXAMP10_01XLS的第1个工作表中C2F47范围的数据,即已知组别的样本数据,TRAININGXLSREAD ...

weixin_32746239的博客 923

Matlab随笔之判别分析

原文:Matlab随笔之判别分析从概率论角度,判别分析是根据所给样本数据,对所给的未分类数据进行分类。 如下表,已知有t个样本数据,每个数据关于n个量化特征有一个值,又已知该样本数据的分类,据此,求s个未分类数据的分类情况class。 Matlab 的统计工具箱提供了判别函数 [class,err] = classify(sample,training,group, type) 其中,...

weixin_34267123的博客 179

【数学建模 matlab 实验报告12】聚类分析和判别分析

本实验报告通过MATLAB实现了多元统计分析中的聚类分析和判别分析。实验分为三个部分:1) 对江苏省13个地市经济数据进行层次聚类分析,采用欧氏距离和Ward法进行聚类,可视化展示城市经济发展层次结构;2) 银行客户信用判别分析,运用马氏距离、线性判别和二次判别方法对新客户信用进行评估;3) 鸢尾花数据集分类实验,比较线性判别、朴素贝叶斯和K近邻算法的分类性能。实验结果表明,聚类分析能有效揭示数据内在结构,判别分析可建立准确的分类预测模型。通过本次实验,掌握了数据标准化、聚类算法、判别分析和分类模型评估等核

Victoria551的博客 537
上一篇: 12 聚类分析
下一篇: 14 MATLAB主成分分析
技术提高效率
博客等级 码龄10年 1664粉丝 119原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术提高效率

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值