MATLAB分类与判别模型算法:基于Fisher算法的分类程序【含Matlab源码 MX_002期】

算法思路介绍:

费舍尔线性判别分析(Fisher's Linear Discriminant Analysis,简称 LDA),用于将两个类别的数据点进行二分类。以下是代码的整体思路:

  1. 生成数据

    • 使用 randn 函数生成随机数,构建两个类别的合成数据点。
    • 第一个类别的数据点分布在以 (2,2) 为中心的正态分布中。
    • 第二个类别的数据点分布在以 (-2,-2) 为中心的正态分布中。
  2. 计算类别均值和散布矩阵

    • 计算每个类别的数据点的均值(类别中心)。
    • 计算每个类别的散布矩阵(类别内离散度矩阵)。
  3. 计算费舍尔线性判别

    • 计算费舍尔判别向量 W,它是使类间散布与类内散布的比值最大化的向量。
    • 计算类内散布矩阵的总和 Sw
    • 利用线性代数中的求逆和乘法,计算出判别向量 W。
  4. 生成测试样本 (x)

         使用 randn 函数生成一个随机测试样本。
  5. 对测试样本进行分类

          将测试样本投影到判别向量 W 上,并与预先设定的阈值比较以进行分类。
  6. 绘图

    • 绘制两个类别的数据点,以红色和蓝色表示。
    • 标记测试样本点,并根据分类结果用不同的颜色表示。
    • 绘制费舍尔判别线,表示分类的决策边界。
    • 绘制判别线上的阈值点。
    • 绘制测试样本在判别线上的投影点,并画出测试样本与其投影点之间的连线。

通过这些步骤,代码能够实现费舍尔线性判别分析,并对新的测试样本进行分类和可视化。

部分代码:

m1=mean(X(1:N,:));
m2=mean(X(N+1:2*N,:));
S1=0;S2=0;
for i=1:N
    S1=S1+(X(i,:)-m1)*(X(i,:)-m1)';
end
for i=N+1:2*N
    S1=S1+(X(i,:)-m1)*(X(i,:)-m1)';
end
Sw=S1+S2;
W=inv(Sw)*(m1-m2);
W=W./norm(W)
% ====================================================================
x=randn(1,2);%待判样本
y0=W*(m1+m2)'/2;
if W*x'>y0
    disp('待判样本属于第一类')
    hold on,plot(x(1),x(2),'r+','MarkerSize',10,'LineWidth',2)
else
    disp('待判样本属于第二类')
    hold on,plot(x(1),x(2),'b+','MarkerSize',10,'LineWidth',2)
end
legend('Cluster 1','Cluster 2','x','Location','NW')
% =================画投影直线=====================
X1=-8:0.05:8;
X2=(W(2)/W(1))*X1-6;
hold on,plot(X1,X2,'k','LineWidth',2);
% ================求投影直线上的阈值点============
x0=W(1)*(y0)/W(2);
y0=W(2)^2*y0-6*W(1)^2+W(1)*W(2)*x0;
x0=(y0+6)*W(1)/W(2);
hold on,plot(x0,y0,'ro','MarkerSize',10);
% =============求待判样本在投影直线上的投影点==============
y1=W(1)^2*x(1)+6*W(1)*W(2)+W(1)*W(2)*x(2);
y2=W(2)/W(1)*y1-6;
hold on,plot(y1,y2,'r.','MarkerSize',30);
hold on,plot([x(1) y1],[x(2) y2],'g','LineWidth',2);

结果展示:

获取代码:MATLAB分类与判别模型算法:基于Fisher算法的分类程序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/660026.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

11. Django 常用的Web应用程序

11. 常用的Web应用程序 Django为开发者提供了常见的Web应用程序, 如会话控制, 缓存机制, CSRF防护, 消息框架, 分页功能, 国际化和本地化, 单元测试和自定义中间件. 内置的Web应用程序大大优化了网站性能, 并且完善了安全防护机制, 同时也提高了开发者的开发效率.11.1 会话控制…

IO系列(九) -什么是零拷贝

一、摘要 相信不少的网友,在很多的博客文章里面,已经见到过零拷贝这个词,会不禁的发出一些疑问,什么是零拷贝? 从字面上我们很容易理解出,零拷贝包含两个意思: 拷贝:就是指数据从…

宠物空气净化器:猫毛过敏者的终极解决方案,养猫不再是梦!

我有一位朋友,猫猫的深度爱好者。但是每当与猫咪接触的时候就会出现过敏反应,例如浑身发痒、打喷嚏、呼吸困难、起红疹等。对此,有专家给出权威的解释:引发铲屎官过敏的“罪魁祸首”是一种叫做Feld1的蛋白质成分,而这种…

性能击败99%PC用户,旗舰性能CPU 13700KF +技嘉Z790 + 德静界 机散装机配置思路分享

性能击败99%PC用户,旗舰性能CPU 13700KF 技嘉Z790 德静界 机散装机配置思路分享 又到了一年一度的618年中促销,今年的618比往年要来的更早。 很多人已经感受到,5月各大电脑相关配件都开始了今年的促销让利。 凑此机会,我又装了…

IT学习笔记--Kubernetes

kubernetes组件: 一个Kubernetes集群主要是由控制节点(master)、工作节点(node)构成,每个节点都会安装不同的组件。 master:集群的控制平面,负责集群的决策 ApiServer&#xff1a…

蓝桥杯物联网竞赛_STM32L071KBU6_对于EEPROM的新理解

EEPROM写函数: void Function_GetEepromData(){Function_EepromRead(4, BUFF);OLED_ShowChar(0, 0, BUFF[0] 0);OLED_ShowChar(0, 2, BUFF[1] 0); BUFF[0] ;BUFF[1] ;HAL_FLASHEx_DATAEEPROM_Unlock();HAL_FLASHEx_DATAEEPROM_Program(FLASH_TYPEPROGRAMDATA_WOR…

项目经理催开发进度的5大技巧

项目经理在催促开发进度时,采用的技巧对于项目成功至关重要。这不仅影响到项目的按时完成,还关系到团队的士气、效率和最终产品的质量。项目经理如果不去主动催促开发进度,可能导致项目延期,团队偏离原定路线,工作重点…

用于脑肿瘤分割的跨模态深度特征学习| 文献速递-深度学习肿瘤自动分割

Title 题目 Cross-modality deep feature learning for brain tumor segmentation 用于脑肿瘤分割的跨模态深度特征学习 01 文献速递介绍 作为最致命的流行病,脑肿瘤的研究越来越受到关注。本文研究了一种基于深度学习的自动分割胶质瘤的方法,称为脑…

java版CRM客户关系管理系统源码-CRM客户关系管理系统的技术架构与功能实现

CRM客户关系管理系统的技术架构与功能实现 一、引言 随着市场竞争的日益激烈,客户关系管理(CRM)已成为企业赢得市场、提升客户满意度、促 进业务增长的关键手段。本文旨在介绍一款先进的CRM客户关系管理系统的技术架构与功能实现&#xff0…

认识NoSql

SQL是结构化的,NoSql是非结构化的 SQL是关联的: Nosql是无关联的: SQL采用的是SQL查询: 语法固定,好处是:只要是关系型数据库(Mysql,Oracle),都能够使用相同的语句进行查…

2024年PMP考试备考需要多长时间,每天学习多长时间?

这取决于您在PMP上投入的时间和效率,通常情况下,2-3个月就够了。如果您平时工作很忙,每天可以挤出一个小时来学习;如果时间比较充裕,可以花两个小时看书、做题和参加直播课。在备考之前,要先了解PMP每年的考…

PostgreSQL数据库提权

前面讲述了mysql、SqlServer、Redis数据库相关的提权方式,有兴趣的也可以去看看。 这里讲的postgreSQL数据库提权就是任意命令执行漏洞(CVE-2019-9193)。 目录 数据库简介 漏洞原理 影响版本 漏洞利用 利用前提 漏洞复现 复现准备 复现过程 漏洞修复 数据…

JVM学习-字节码指令集(二)

对象的创建与访问指令 创建指令 虽然类实例和数组都是对象,但Java虚拟机对类实例和数组的创建和操作使用了不同的字节码指令创建类实例指令:new 它接收一个操作数,指向常量池的索引,表示要创建的类型,执行完成后&am…

基于匹配追踪和最大重叠离散小波变换的ECG心电信号R波检测(MATLAB 2018a)

准确识别心电信号的R波是进行HRV分析的前提。因此,开发出准确的心电信号R波检测方法十分重要。近几十年来,提出的R峰检测方法主要分为两个阶段。第1阶段是预处理阶段,目的是对受不同噪声影响的原始心电信号进行降噪处理,从而实现增…

1794 jsp蛋糕店管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp 蛋糕店管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助采用了java设计,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&…

Pycharm打开django支持

在 PyCharm 中打开 “Settings/Preferences” -> “Languages & Frameworks” -> “Django”。 勾上Enable Django support 然后配置好文件根目录就好了

STM32FLASH闪存

文章目录 前言首先来回顾一下存储器映像FLASH简介闪存模块组织Flash基本结构(关系)图Flash解锁使用指针访问存储器FLASH操作Flash全擦除Flash页擦除Flash写入 选项字节选项字节操作选项字节擦除选项字节写入 器件电子签名注意闪存控制寄存器一览 前言 本…

Spring Boot 2 入门基础

学习要求 ● 熟悉Spring基础 ● 熟悉Maven使用 环境要求 ● Java8及以上 ● Maven 3.3及以上:https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started-system-requirements 学习资料 ● 文档地址: htt…

松下MINAS A6B系列旋转电机规格书--A系列

一、松下电机型号的识别方法 二、松下标准型电机型号大全 三、松下电机的规格 四、电机外观 五、XA,XB连接器 六、USB连接器 七、EtherCAT用连接器X2A、X2B 八、IO连接器X4 输入输出信号接口 九、编码器连接器 十、模拟监视器用连接器X7 十一、电源连接器以及端子台…

python-web框架应用程序-Django环境搭建

python-web应用程序-Django环境搭建 一、Django入门 使用Django(http://djangoproject.com/)来开发一个名为“学习笔记”(Learning Log)的项目,这是一个在线日志系统,让你能够记录所学习的有关特定主题的知…