FISHER线性判别MATLAB实现

Fisher线性判别上机实验报告

班级:

学号:

姓名:

算法描述

Fisher线性判别分析的基本思想:选择一个投影方向(线性变换,线性组合),将高维问题降低到一维问题来解决,同时变换后的一维数据满足每一类内部的样本尽可能聚集在一起,不同类的样本相隔尽可能地远。

Fisher线性判别分析,就是通过给定的训练数据,确定投影方向W和阈值w0, 即确定线性判别函数,然后根据这个线性判别函数,对测试数据进行测试,得到测试数据的类别。

线性判别函数的一般形式可表示成 其中

Fisher选择投影方向W的原则,即使原样本向量在该方向上的投影能兼顾类间分布尽可能分开,类内样本投影尽可能密集的要求。 如下为具体步骤:

(1)W的确定

各类样本均值向量mi

样本类内离散度矩阵和总类内离散度矩阵

样本类间离散度矩阵

在投影后的一维空间中,各类样本均值

样本类内离散度和总类内离散度

样本类间离散度

Fisher准则函数为 max

(2)阈值的确定

是个常数,称为阈值权,对于两类问题的线性分类器可以采用下属决策规则:

令则:

如果g(x)>0,则决策;如果g(x)<0,则决策;如果g(x)=0,则可将x任意分到某一类,或拒绝。

(3)Fisher线性判别的决策规则

Fisher准则函数满足两个性质:

1.投影后,各类样本内部尽可能密集,即总类内离散度越小越好。

2.投影后,各类样本尽可能离得远,即样本类间离散度越大越好。

根据这个性质确定准则函数,根据使准则函数取得最大值,可求出

W:。

这就是Fisher判别准则下的最优投影方向。

最后得到决策规则

若,则

对于某一个未知类别的样本向量x,如果y=WT·x>y0,则x∈w1;否则x∈w2。

数据描述

1.iris数据

IRIS数据集以鸢尾花的特征作为数据来源,数据集包含150个数据集,有4维,分为3 类,每类50个数据,每个数据包含4个属性,是在数据挖掘、数据分类中非常常用的测试集、训练集。

2.sonar数据

Sonar数据集包含208个数据集,有60维,分为2类,第一类为98个数据,第二类为110个数据,每个数据包含60个属性,是在数据挖掘、数据分类中非常常用的测试集、训练集。

实验结果以及源代码

1.Iris

(1)代码:

clc

clear

data=xlsread('Iris');

Iris1=data(1:50,1:4);

Iris2=data(51:100,1:4);

Iris3=data(101:150,1:4);

%类均值向量

m1 = mean(Iris1);

m2 = mean(Iris2);

m3 = mean(Iris3);

%各类内离散度矩阵

s1 = zeros(4);

s2 = zeros(4);

s3 = zeros(4);

for i=1:1:30

s1 = s1 + (Iris1(i,:) - m1)'*(Iris1(i,:) - m1);

end

for i=1:1:30

s2 = s2 + (Iris2(i,:) - m2)'*(Iris2(i,:) - m2);

end

for i=1:1:30

s3 = s3 + (Iris3(i,:) - m3)'*(Iris3(i,:) - m3);

end

%总类内离散矩阵

sw12 = s1 + s2;

sw13 = s1 + s3;

sw23 = s2 + s3;

%投影方向

w12 = ((sw12^-1)*(m1 - m2)')';

w13 = ((sw13^-1)*(m1 - m3)')';

w23 = ((sw23^-1)*(m2 - m3)')';

%判别函数以及阈值T(即w0)

T12 = -0.5 * (m1 + m2)*inv(sw12)*(m1 - m2)';

T13 = -0.5 * (m1 + m3)*inv(sw13)*(m1 - m3)';

T23 = -0.5 * (m2 + m3)*inv(sw23)*(m2 - m3)';

kind1 = 0;

kind2 = 0;

kind3 = 0;

newiris1=[];

newiris2=[];

newiris3=[];

for i=31:50

x = Iris1(i,:);

g12 = w12 * x' + T12;

g13 = w13 * x' + T13;

g23 = w23 * x' + T23;

if((g12 > 0)&(g13 > 0))

newiris1=[newiris1;x];

kind1

matlab fisher检验,FISHER线性判别MATLAB实现.doc相关推荐

  1. 【数学建模】Matlab实现判别分析(线性判别和二次判别分析)

    Matlab实现判别分析(线性判别和二次判别分析) 一.简介 二.判别分析的方法 2.1 费歇(FISHER)判别思想 2.1 贝叶斯(BAYES)判别思想 三.Matlab 实现判别分析 3.1 代 ...

  2. matlab怎么建立一元线性回归方程,MATLAB实现一元线性回归的多种方式

    1.引言回归分析,是对现有数据进行处理.从中发现有用信息的一种重要手段.而线性回归,特别是一元线性回归分析更是人们优先考虑采用的方式.基于此,本文就一元线性回归的MATLAB实现作了一番探讨,给出了多 ...

  3. matlab求零空间,有关线性代数的Matlab代码笔记(2)行空间、零空间

    今天继续,尝试加入一些范例 依然是简单的内容: %%%%%%%%%%%%%%%%%%%%% 说明 %%%%%%%%%%%%%%%%%%% 行空间的基 :按行的角度来看待矩阵,更多介绍在代码说明里,简单 ...

  4. 用matlab做判别分析法,判别分析的matlab实现

    FISHER 线性判别 MATLAB 实现 Fisher 线性判别上机实验报告 班级: 学号: 姓名: 一.算法描述 Fisher 线性判别分析的基本思想:选择一个投影方向(线性变换,线性组合),.. ...

  5. Fisher线性判别算法原理及实现 MATLAB

    Fisher线性判别算法原理及实现 MATLAB 一.Fisher判别器原理 二.代码实现 clc; close all; clear; %% 生成数据 rng(2020); %指定一个种子 mu1 ...

  6. fisher线性判别分析matlab,线性判别分析LDA

    首先搞清楚什么叫判别分析?Discriminant Analysis就是根据研究对象的 各种特征值判别其类型归属问题的一种多变量统计分析方法. 根据判别标准不同,可以分为距离判别.Fisher判别.B ...

  7. 基于fisher线性判别法的分类器设计

    0.引言说明 这篇文章实际上是楼主上的模式识别课程的课堂报告,楼主偷懒把东西直接贴出来了.选择fisher判别法的原因主要是想学习一下这个方法,这个方法属于线性判别法,操作起来和lda判别法近乎没啥区 ...

  8. Python 分类问题研究-Fisher线性判别

    [实验目的] 1.掌握常见机器学习分类模型思想.算法,包括Fisher线性判别.KNN.朴素贝叶斯.Logistic回归.决策树等: 2.掌握Python编程实现分类问题,模型评价指标.计时功能.保存 ...

  9. 朴素贝叶斯分类器与Fisher线性判别实践——水果识别为例

    开篇:本次博客主要分享二分类水果实现案例,样本构造显然不具备泛化.大数量特性以及背景均为纯白色是为了方便目标提取.大家若需要更好的水果样本,Github上有许多的优秀案例.本次代码计算效率较低,代码有 ...

最新文章

  1. python traceback安装_Python错误:Traceback (most recent call last):感觉是软件出了问题
  2. 学编程必看:逻辑思维测试
  3. linux 下安装node 环境
  4. 异构云:另一个烫手的山芋
  5. ES6--基础语法(一)
  6. linux touch权限不够,Linux下的Access、Modify、Change , touch的使用以及权限问题
  7. 注解@Async解决异步调用问题
  8. oracle查询耗资源的进程,常用Oracle进程资源查询语句(运维必看)
  9. 聚类(5)-- Spectral clustering
  10. PHP中时间戳和时区
  11. 真是绝了,做了这么多年程序员第一次搞懂微服务架构的数据一致性
  12. 跑语义分割程序时报错
  13. matlab一年第几天求日期,C语言 输入某月某日,判断这一天是这一年的第几天
  14. java 判断用户名_java如何判断用户名和密码
  15. JTAG,PLL ,ICE
  16. 计算机取证(Windows)FTK+X-Way取证复制
  17. 华硕笔记本学计算机,买平板电脑学习办公?也许平板、笔记本二合一的产品才更适合你...
  18. 快速获取容器VIPs,解决集群自动化测试难题
  19. C++中的unordered_map用法详解
  20. TechPowerUp GPU-Z(显卡检测神器) v2.23.0绿色便携版

热门文章

  1. 修复windows修复引导_如何使用安全模式修复Windows PC(以及何时应该修复)
  2. heapdump file must have .hprof extention
  3. mac获取ios应用包名
  4. JDK源码解析---Short
  5. sb 讲解 (!(~+[])+{})[--[~+][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]]
  6. 详细讲解vue2组件通信(一)——父传子props
  7. clamped b_spline
  8. java读写word模板_Java操作Word模板插入列表
  9. android仿最新版本微信相册--附源码
  10. java 时间计算差值