Fisher判别分析

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

Fisher判别分析

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

可以考虑把维空间的样本投影到一条直线上,形成一维空间,即把数据压缩到一维,这在数学中总是容易办到的。然而,即使样本在维空间里形成若干紧凑的互相分的开的集群,若把它们投影到一条任意的直线上,也可能使几类样本混在一起而变得无法识别。但在一般的情况下,总可以找到某个方向,使在这个方向的直线上,样本的投影能分开最好。

mi=1NiXωiXi=1,2



(2)计算样本类内离散度矩阵 Si 和总类内离散度矩阵 Sw

Si=Xωi(Xmi)(Xmi)T,i=1,2


Sw=S1+S2


(3)计算样本类间离散度矩阵 Sb Sb=(m1m2)(m1m2)T
(4) 求向量 w 。为此定义Fisher准则函数

JF(W)=wTSbwwTSww


使得 JF(W) 取的最大值的 w 为: w=S1w(m1m2)
(5)将训练集内所有样本进行投影。 y=(w)TX
(6)计算在投影空间上的分割阈值 y0 。阈值的选取可以有不同的方案,比较常用的一种为

y0=N1m1~+N2m2~N1+N2


另一种为

y0=m1~+m2~2+lnp(w1)p(w2)N1N22


其中, mi~ 为在一维空间各样本的均值: mi~=1N1yωiy
样本的内类离散度 s2i~ 和总类离散度 sw~ s2i~=yωi(ymi~),i=1,2

sw~=s21~+s22~


(7)对于给定的 X ,计算它在

w
上的投影点 y

y=(w)TX

(8)根据决策规则分类,有

{
y>y0Xω1y<y0Xω2




































版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208867.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午10:35
下一篇 2026年3月19日 上午10:35


相关推荐

  • 奇特的js语法

    奇特的js语法我想 大多数的学习后台语言后再学习 js 的语法时 都会像我一样 对某些语法有所困惑 因为 js 的语法相对 c 和 java 来说 不太严谨了 为了灵活却缺失了严谨 我觉得这样做不太好 造成各人写的代码风格都不一样 让人理解的难度加大了 好了 下面就来盘点那些奇特的 js 语法 1 它每一条语句可以不用分号分隔 不写也不会报错 2 单引号和双引号都代表字符类型 2 js 对数据类型的判断方法繁多且有缺陷

    2026年3月26日
    1
  • GRC系统_S7snap与PLC通信

    GRC系统_S7snap与PLC通信本系列文档介绍4G/5G开源项目srsRAN(srsLTE升级版)的基本使用方法。本文给出该开源项目的基本介绍、安装方法及NB-IoT基本测试。

    2022年10月7日
    4
  • springboot源码调试

    springboot源码调试学习springboot,第一步官网下载源码然后编译地址:https://github.com/spring-projects/spring-boot/1.选择tag2.进入后选择的版本是2.2.2的版本3.下载完成后解压到相应的文件夹下,进行编译,运行:mvncleaninstall-DskipTests-Pfast4.上述命令大概执行40分钟左右,下面给出已经编译好的链接地址:链接:https://pan.baidu.com/s/1YxZeD…

    2022年5月2日
    84
  • 什么是回调函数?为什么要使用回调函数?如何使用回调函数?

    什么是回调函数?为什么要使用回调函数?如何使用回调函数?1 回调函数 函数指针的调用 即是一个通过函数指针调用的函数 如果你把函数的指针 地址 作为参数传递给另一个函数 当这个指针被用来调用其所指向的函数时 就说这是回调函数 Incomputerpr acallbackisa whic

    2026年3月19日
    3
  • centos7中安装VMware虚拟机_安装wget

    centos7中安装VMware虚拟机_安装wget1.安装相应的编译工具在root用户下(不要用普通用户,麻烦),全部复制粘贴过去,一次性安装即可.yum-ygroupinstall”Developmenttools”yum-yinstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-develyuminstall-ylib

    2025年12月4日
    10
  • Gradle安装和配置

    Gradle安装和配置1 下载安装包官网地址 https gradle org releases 直接解压 2 配置环境变量需要有 jdk8 以上的版本添加 GRADLE HOMEpath 下添加 GRADLE HOME bin3 验证是否配置成功 gradle v4 配置阿里云仓库在 gradle 6 8 3 init d 目录下创建 init gradle 文件 touchinit gradlebuilds repositories mave

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号