fisher线性判别 matlab,FISHER线性判别MATLAB实现

1eb48e223562581e9f567914d9741b0e.gifFISHER线性判别MATLAB实现

Fisher线性判别上机实验报告班级:学号:姓名: 1 算法描述Fisher线性判别分析的基本思想:选择一个投影方向(线性变换,线性组合),将高维问题降低到一维问题来解决,同时变换后的一维数据满足每一类内部的样本尽可能聚集在一起,不同类的样本相隔尽可能地远。Fisher线性判别分析,就是通过给定的训练数据,确定投影方向W和阈值w0, 即确定线性判别函数,然后根据这个线性判别函数,对测试数据进行测试,得到测试数据的类别。线性判别函数的一般形式可表示成 其中Fisher选择投影方向W的原则,即使原样本向量在该方向上的投影能兼顾类间分布尽可能分开,类内样本投影尽可能密集的要求。 如下为具体步骤:(1)W的确定各类样本均值向量mi样本类内离散度矩阵和总类内离散度矩阵样本类间离散度矩阵在投影后的一维空间中,各类样本均值样本类内离散度和总类内离散度 样本类间离散度Fisher准则函数为 max(2)阈值的确定是个常数,称为阈值权,对于两类问题的线性分类器可以采用下属决策规则:令则:如果g(x)0,则决策;如果g(x)y0,则xw1;否则xw2。2 数据描述 1.iris数据IRIS数据集以鸢尾花的特征作为数据来源,数据集包含150个数据集,有4维,分为3 类,每类50个数据,每个数据包含4个属性,是在数据挖掘、数据分类中非常常用的测试集、训练集。2.sonar数据Sonar数据集包含208个数据集,有60维,分为2类,第一类为98个数据,第二类为110个数据,每个数据包含60个属性,是在数据挖掘、数据分类中非常常用的测试集、训练集。3 实验结果以及源代码1.Iris(1)代码:clccleardata=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:30s1 = s1 + (Iris1(i,:) - m1)*(Iris1(i,:) - m1);endfor i=1:1:30s2 = s2 + (Iris2(i,:) - m2)*(Iris2(i,:) - m2);endfor i=1:1:30s3 = 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:50x = Iris1(i,:);g12 = w12 * x + T12;g13 = w13 * x + T13;g23 = w23 * x + T23;if(g12 0)&(g13 0)newiris1=newiris1;x;kind1=kind1+1;elseif(g12 0)newiris2=newiris2;x;elseif(g13 0)&(g13 0)newiris1=newiris1;x;elseif(g12 0)kind2=kind2+1;newiris2=newiris2;x;elseif(g13 0)&(g13 0)newiris1=newiris1;x;elseif(g12 0)newiris2=newiris2;x;elseif(g13 0newsonar1=newsonar1;x;kind1=kind1+1;elsenewsonar2=newsonar2;x;endendfor i=81:110x = Sonar2(i,:);g12 = w12 * x + T12;if g12 0newsonar1=newsonar1;x;elsenewsonar2=newsonar2;x;kind2=kind2+1;endendcorrect= (kind1+kind2)/58;fprintf(n综合正确率:%.2f%nn,correct*100);(2)实验结果:综合正确率=75.86

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值