Fisher线性判别与感知器算法Matlab实现

2024-05-31 11:38

本文主要是介绍Fisher线性判别与感知器算法Matlab实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考用书:


本文是在学习此书Chapter4时,跑的实验。

4.1.4 Fisher‘s Linear Discriminate


[plain]  view plain copy
  1. function [w y1 y2 Jw] = FisherLinearDiscriminat(data, label)  
  2. % FLD Fisher Linear Discriminant.  
  3. % data : D*N data  
  4. % label : {+1,-1}  
  5. % Reference:M.Bishop Pattern Recognition and Machine Learning p186-p189  
  6.   
  7. % compute means and scatter matrix  
  8. %-------------------------------  
  9. inx1 = find( label == 1);  
  10. inx2 = find( label == -1);  
  11. n1 = length(inx1);  
  12. n2 = length(inx2);  
  13.   
  14. m1 = mean(data(:,inx1),2);  
  15. m2 = mean(data(:,inx2),2);  
  16.   
  17. S1 = (data(:,inx1)-m1*ones(1,n1))*(data(:,inx1)-m1*ones(1,n1))';  
  18. S2 = (data(:,inx2)-m2*ones(1,n2))*(data(:,inx2)-m2*ones(1,n2))';  
  19. Sw = S1 + S2;  
  20.   
  21. % compute FLD   
  22. %-------------------------------  
  23. W = inv(Sw)*(m1-m2);  
  24.   
  25. y1 = W'*m1;  %label=+1  
  26. y2 = W'*m2;  %label=-1  
  27. w = W;  
  28. Jw = (y1-y2)^2/(W'*Sw*W);  


4.1.7 The perceptron algorithm 

[plain]  view plain copy
  1. function [w, mis_class] = perceptron(X,t)  
  2. % The perceptron algorithm   
  3. %by LiFeiteng   email:lifeiteng0422@gmail.com  
  4. %   X : D*N维输入数据  
  5. %   t : {+1,-1}标签  
  6. %     
  7. %   w : [w0 w1 w2]     
  8. %   mis_class : 错误分类数据点数  
  9.   
  10. %  对t做简单的检查  
  11. if size(unique(t),2)~=2  
  12.     return  
  13. elseif max(t)~=1  
  14.     return  
  15. elseif min(t)~=-1  
  16.     return  
  17. end  
  18.   
  19. [dim num_data] = size(X);  
  20. w = ones(dim+1,1);%%w = [w0 w1 w2]'  
  21. X = [ones(1,num_data); X];  
  22. maxiter = 100000;  
  23. mis_class = 0;  
  24. iter = 0;  
  25.   
  26. while iter<maxiter  
  27.     iter = iter+1;  
  28.     y = w'*X;  
  29.     label = ones(1, num_data);%{+1,-1}  
  30.     label(y<=0) = -1;    
  31.     index = find(label~=t); %错误分类的点  
  32.     mis_class = numel(index); %错误分类点的数目     
  33.     if mis_class==0  
  34.         break  
  35.     end  
  36.     for i = 1:mis_class  
  37.         w = w + X(:,index(i))*t(index(i));  
  38.     end  
  39. end  
  40. if iter==maxiter  
  41.     disp(['达到最大迭代次数' num2str(maxiter)])  
  42. end  


这篇关于Fisher线性判别与感知器算法Matlab实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1017817

相关文章

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到