


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Fisher 线性判别准则设计分类器1) 编程实现算法#include "stdio.h"#include "math.h"#include "stdlib.h"#define trainingnum 100#define testingnum 100#define feadim 2#define N1 50#define N2 50矚慫润厲钐瘗睞枥庑赖賃軔朧。double s1feadimfeadim,s2feadimfeadim;/ 两类样本类内离散度double m1feadim1,m2feadim1; / 两类样本的均值dou
2、ble inswfeadimfeadim;/ 存放 sw 的逆矩阵double wfeadim1;/ 存放解结果double _m1,_m2,yo; / 存放 m1,m2double ytestingnum;/ 一维空间样本int right,wrong;/ 存放识别的结果struct samplechar serial4; / 序号float featurefeadim1;/ 存储身高与体重 int trueclass; / 真实类别 int classifiedclass; / 被识别的分类 ;/打印矩阵void PrintOut(double Mfeadimfeadim) int i,j
3、;for(i = 0; i<feadim; i+) / 行for(j=0; j<feadim; j+) printf("%8.2f",Mij); printf("n");/采用部分主元法的高斯消去法求方阵A 的逆矩阵 B/A 方阵 (IN)/n 方阵的阶数 (IN)/B 方阵 (OUT)/返回 true 说明正确计算出逆矩阵聞創沟燴鐺險爱氇谴净祸測樅。/返回 false 说明矩阵 A 不存在逆矩阵bool gaussj(double Afeadimfeadim, double Bfeadimfeadim) int i,j,k;double l
4、Max,temp;/临时矩阵存放 Adouble ttfeadimfeadim; for(i=0;i<feadim;i+)for(j=0;j<feadim;j+)ttij = Aij;/初始化 B 为单位阵 for(i=0;i<feadim;i+)for(j=0;j<feadim;j+)if(i!=j)Bij = 0;else Bij = 1; for(i=0;i<feadim;i+)/寻找主元lMax = ttii;k = i;for(j=i+1;j<feadim;j+) / 扫描从 i+1 到 n 的各行if( fabs(ttji) > fabs(
5、lMax)lMax = ttji;k = j;/如果主元所在行不是第 i 行,进行行交换if(k!=i)for(j=0;j<feadim;j+)temp = ttij ;ttij = ttkj;ttkj = temp;/B 伴随计算temp = Bij;Bij = Bkj;Bkj = temp;/判断主元是否是 0,如果是,则矩阵 A 不是满秩矩阵,不存在逆矩阵 if(ttii = 0) return false;/消去 A 的第 i 列除去 i 行以外的各行元素temp = ttii;for(j=0;j<feadim;j+)ttij = ttij / temp; / 主对角线上元
6、素变成 1Bij = Bij / temp; / 伴随计算for(j=0;j<feadim;j+) / 行 0 -> nif(j!=i) / 不是第 i 行temp = ttji;for(k=0;k<feadim;k+) / j 行元素 - i 行元素 * j 行 i 列元素ttjk = ttjk - ttik * temp;Bjk = Bjk - Bik * temp;return true;/计算两个矩阵的乘积/ AB -> Cvoid Multi(double Afeadimfeadim, double Bfeadim1, double Cfeadim1)残骛楼諍
7、锩瀨濟溆塹籟婭骒東。int i,j,k;for(i=0;i<feadim;i+)for(j=0;j<1;j+)Cij = 0;for(k=0;k<feadim;k+)Cij += Aik * Bkj;/主程序void main() sample xtrainingnum;sample Xtestingnum;int i,j,k;int sflag;double inswfeadimfeadim,swfeadimfeadim;/ 存放 sw 的逆矩阵及 sw 酽锕极額閉镇桧猪訣锥顧 荭钯。double pmfeadim1;/ 存放 m1-m2double inw1feadim;
8、/ 存放 w 的转置char snum4;float sheight,sweight;double temp1feadim1,temp2feadim1,temp111feadim,temp221feadim;/在求 s1,s2 时存放临时数据 彈贸摄尔霁毙攬砖卤庑诒尔肤。/读入训练样本FILE *fp; if(fp=fopen("StudentsData1.txt","r")=NULL)printf("Can't open file");exit(0);for(j=0; j<trainingnum; j+) fscanf
9、(fp,"%s%d%f%f",&snum,&sflag,&sheight,&sweight); 謀荞抟箧飆鐸怼类蒋薔點鉍杂。xj.feature00=sheight; xj.feature10=sweight;xj.trueclass=sflag; for(k=0;k<4;k+) xj.serialk=snumk;fclose(fp);/*for(i=0;i<10;i+) / 测试输出printf("%s%3d%8.2f%8.2fn",xi.serial,xi.trueclass,xi.feature00,xi
10、.feature10); 厦礴恳蹒 骈時盡继價骚卺癩龔。*/for(i=0;i<N1;i+) / 计算 m1,m2 for(j=0;j<feadim;j+) m1j0+=xi.featurej0/N1;for(i=N1;i<2*N1;i+)for(j=0;j<feadim;j+) m2j0+=xi.featurej0/N2;printf("m1,m2 的结果如下: n");printf(" n");for(j=0;j<feadim;j+)printf("%5.2f%8.2fn",m1j0,m2j0); /
11、输出 m1,m2 计算结果 茕桢广鳓鯡选块网羈泪镀齐鈞。for(i=0;i<N1;i+) / 计算 s1,s2 for(j=0;j<feadim;j+) temp1j0=xi.featurej0-m1j0;for(j=0;j<feadim;j+) / 转置 temp1 temp110j=temp1j0;for(k=0;k<feadim;k+)/ 求 s1for(j=0;j<feadim;j+) s1kj+=temp1k0*temp110j; for(i=N1;i<2*N1;i+)for(j=0;j<feadim;j+)temp2j0=xi.featur
12、ej0-m2j0; for(j=0;j<feadim;j+) / 转置 temp2 temp220j=temp2j0; for(k=0;k<feadim;k+)/ 求 s2 for(j=0;j<feadim;j+)s2kj+=temp2k0*temp220j;/* for(j=0;j<2;j+)temp110j=temp1j0; temp220j=temp2j0;*/printf("n");printf("s1 的结果如下: n"); printf(" n");PrintOut(s1);printf("
13、;n");printf("s2 的结果如下: n"); printf(" n");PrintOut(s2);/求 swfor(i=0;i<feadim;i+)for(j=0;j<feadim;j+) swij=s1ij+s2ij;printf("n");printf("sw : n");printf(" n");PrintOut(sw); if(!gaussj(sw,insw)/ 求 sw 的逆矩阵 printf(" 没有逆矩阵! n");elsepri
14、ntf("n 的逆矩阵是 :n"); for(i=0;i<feadim;i+)for(j=0;j<feadim;j+) printf("%11.7f",inswij);printf("n"); for(i=0;i<feadim;i+)/ 计算 m1-m2 pmi0=m1i0-m2i0;Multi(insw,pm,w);/ 计算 w= 逆 sw*(m1-m2) printf("n 解 w 的结果是 :n");for(i=0;i<feadim;i+) printf("%11.7fn&q
15、uot;,wi0);for(i=0;i<feadim;i+) / 转置 winw0i=wi0;for(i=0;i<feadim;i+) / 计算一维空间的样本均值 m1,m2 _m1+=inw0i*m1i0;_m2+=inw0i*m2i0;yo=(_m1+_m2)/2;/ 计算阈值 yo/读入测试样本FILE *fr;if(fr=fopen("StudentsData2.txt","r")=NULL)printf("Can't open file");exit(0);for(j=0; j<testingnum
16、; j+) / 读入数据fscanf(fr,"%s%d%f%f",&snum,&sflag,&sheight,&sweight); 鹅娅尽損鹌惨歷茏鴛賴縈诘聾。 Xj.feature00=sheight;Xj.feature10=sweight;Xj.trueclass=sflag;for(k=0;k<4;k+)Xj.serialk=snumk;Xj.classifiedclass=-1;/ 初始化被识别的类别fclose(fr);/进行判别 for(i=0;i<testingnum;i+)for(j=0;j<feadim;j+) yi+=inw0j*Xi.featurej0;if(yi<yo)Xi.classifiedclass=-1;elseXi.classifiedclass=1;for(i=0;i<test ingnu m;i+)if(Xi.trueclass=Xi.classifiedclass) right+;elsewron g+;printf("n测试结果如下:n");printf(”n");printf(”正确分类的个数为:3dn",right); printf(”错误分类的个数为:3dn",wrong); 2)输出运算结果n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年江苏省盐城市东台市物理高一第二学期期末统考模拟试题含解析
- 冬春季传染病防治
- 2025年山西省风陵渡中学物理高二第二学期期末经典模拟试题含解析
- 2025届甘肃省白银市二中物理高一第二学期期末综合测试模拟试题含解析
- 2025版:文化娱乐产业合作补充协议文化娱乐权益拓展
- 2025年度高端不锈钢厨具加工定制服务合同范本
- 二零二五版太阳能光伏发电项目施工安装合同样本
- 二零二五年藏式建筑装修合作协议
- 二零二五年度森林资源调查与测绘服务合同
- 二零二五年体育设施PPP项目特许经营合同
- 疫苗管理规范课件
- 民丰县瑞安矿业投资有限公司民丰县卧龙岗年处理30万吨锑矿选厂及尾矿库建设项目报告书
- 山东济宁历年中考作文题(2004-2024)
- 心脏骤停后高质量目标温度管理专家共识2024
- 合同债权转让及违约金协议
- 售后服务电话回访管理办法
- 《中国糖尿病防治指南(2024版)》更新解读
- 2025年休克治疗指南:课件解读与实践
- 浙江省台州市温岭市2023-2024学年五年级上学期英语期末试卷
- 水稳质量保证措施
- 医疗器械自研软件研究报告
评论
0/150
提交评论