Fisher線性判別準(zhǔn)則設(shè)計(jì)分類器_第1頁
Fisher線性判別準(zhǔn)則設(shè)計(jì)分類器_第2頁
Fisher線性判別準(zhǔn)則設(shè)計(jì)分類器_第3頁
Fisher線性判別準(zhǔn)則設(shè)計(jì)分類器_第4頁
Fisher線性判別準(zhǔn)則設(shè)計(jì)分類器_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Fisher 線性判別準(zhǔn)則設(shè)計(jì)分類器1) 編程實(shí)現(xiàn)算法#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;/ 兩類樣本類內(nèi)離散度double m1feadim1,m2feadim1; / 兩類樣本的均值double inswfeadimfeadim;/ 存放 sw 的逆矩陣dou

2、ble wfeadim1;/ 存放解結(jié)果double _m1,_m2,yo; / 存放 m1,m2double ytestingnum;/ 一維空間樣本int right,wrong;/ 存放識(shí)別的結(jié)果struct samplechar serial4; / 序號(hào)float featurefeadim1;/ 存儲(chǔ)身高與體重 int trueclass; / 真實(shí)類別 int classifiedclass; / 被識(shí)別的分類 ;/打印矩陣void PrintOut(double Mfeadimfeadim) int i,j;for(i = 0; ifeadim; i+) / 行for(j=0;

3、 jfeadim; j+) printf(%8.2f,Mij); printf(n);/采用部分主元法的高斯消去法求方陣A 的逆矩陣 B/A 方陣 (IN)/n 方陣的階數(shù) (IN)/B 方陣 (OUT)/返回 true 說明正確計(jì)算出逆矩陣聞創(chuàng)溝燴鐺險(xiǎn)愛氌譴凈禍測(cè)樅。/返回 false 說明矩陣 A 不存在逆矩陣bool gaussj(double Afeadimfeadim, double Bfeadimfeadim) int i,j,k;double lMax,temp;/臨時(shí)矩陣存放 Adouble ttfeadimfeadim; for(i=0;ifeadim;i+)for(j=0;

4、jfeadim;j+)ttij = Aij;/初始化 B 為單位陣 for(i=0;ifeadim;i+)for(j=0;jfeadim;j+)if(i!=j)Bij = 0;else Bij = 1; for(i=0;ifeadim;i+)/尋找主元lMax = ttii;k = i;for(j=i+1;j fabs(lMax)lMax = ttji;k = j;/如果主元所在行不是第 i 行,進(jìn)行行交換7 / 9if(k!=i)for(j=0;jfeadim;j+)temp = ttij ;ttij = ttkj;ttkj = temp;/B 伴隨計(jì)算temp = Bij;Bij = Bk

5、j;Bkj = temp;/判斷主元是否是 0,如果是,則矩陣 A 不是滿秩矩陣,不存在逆矩陣 if(ttii = 0) return false;/消去 A 的第 i 列除去 i 行以外的各行元素temp = ttii;for(j=0;jfeadim;j+)ttij = ttij / temp; / 主對(duì)角線上元素變成 1Bij = Bij / temp; / 伴隨計(jì)算for(j=0;j nif(j!=i) / 不是第 i 行temp = ttji;for(k=0;k Cvoid Multi(double Afeadimfeadim, double Bfeadim1, double Cfea

6、dim1)殘騖樓諍錈瀨濟(jì)溆塹籟婭騍東。int i,j,k;for(i=0;ifeadim;i+)for(j=0;j1;j+)Cij = 0;for(k=0;kfeadim;k+)Cij += Aik * Bkj;/主程序void main() sample xtrainingnum;sample Xtestingnum;int i,j,k;int sflag;double inswfeadimfeadim,swfeadimfeadim;/ 存放 sw 的逆矩陣及 sw 釅錒極額閉鎮(zhèn)檜豬訣錐顧 葒鈀。double pmfeadim1;/ 存放 m1-m2double inw1feadim;/ 存

7、放 w 的轉(zhuǎn)置char snum4;float sheight,sweight;double temp1feadim1,temp2feadim1,temp111feadim,temp221feadim;/在求 s1,s2 時(shí)存放臨時(shí)數(shù)據(jù) 彈貿(mào)攝爾霽斃攬磚鹵廡詒爾膚。/讀入訓(xùn)練樣本FILE *fp; if(fp=fopen(StudentsData1.txt,r)=NULL)printf(Cant open file);exit(0);for(j=0; jtrainingnum; j+) fscanf(fp,%s%d%f%f,&snum,&sflag,&sheight,&sweight); 謀蕎

8、摶篋飆鐸懟類蔣薔點(diǎn)鉍雜。xj.feature00=sheight; xj.feature10=sweight;xj.trueclass=sflag; for(k=0;k4;k+) xj.serialk=snumk;fclose(fp);/*for(i=0;i10;i+) / 測(cè)試輸出printf(%s%3d%8.2f%8.2fn,xi.serial,xi.trueclass,xi.feature00,xi.feature10); 廈礴懇蹣 駢時(shí)盡繼價(jià)騷巹癩龔。*/for(i=0;iN1;i+) / 計(jì)算 m1,m2 for(j=0;jfeadim;j+) m1j0+=xi.featurej0/

9、N1;for(i=N1;i2*N1;i+)for(j=0;jfeadim;j+) m2j0+=xi.featurej0/N2;printf(m1,m2 的結(jié)果如下: n);printf( n);for(j=0;jfeadim;j+)printf(%5.2f%8.2fn,m1j0,m2j0); /輸出 m1,m2 計(jì)算結(jié)果 煢楨廣鰳鯡選塊網(wǎng)羈淚鍍齊鈞。for(i=0;iN1;i+) / 計(jì)算 s1,s2 for(j=0;jfeadim;j+) temp1j0=xi.featurej0-m1j0;for(j=0;jfeadim;j+) / 轉(zhuǎn)置 temp1 temp110j=temp1j0;for

10、(k=0;kfeadim;k+)/ 求 s1for(j=0;jfeadim;j+) s1kj+=temp1k0*temp110j; for(i=N1;i2*N1;i+)for(j=0;jfeadim;j+)temp2j0=xi.featurej0-m2j0; for(j=0;jfeadim;j+) / 轉(zhuǎn)置 temp2 temp220j=temp2j0; for(k=0;kfeadim;k+)/ 求 s2 for(j=0;jfeadim;j+)s2kj+=temp2k0*temp220j;/* for(j=0;j2;j+)temp110j=temp1j0; temp220j=temp2j0;*

11、/printf(n);printf(s1 的結(jié)果如下: n); printf( n);PrintOut(s1);printf(n);printf(s2 的結(jié)果如下: n); printf( n);PrintOut(s2);/求 swfor(i=0;ifeadim;i+)for(j=0;jfeadim;j+) swij=s1ij+s2ij;printf(n);printf(sw : n);printf( n);PrintOut(sw); if(!gaussj(sw,insw)/ 求 sw 的逆矩陣 printf( 沒有逆矩陣! n);elseprintf(n 的逆矩陣是 :n); for(i=0

12、;ifeadim;i+)for(j=0;jfeadim;j+) printf(%11.7f,inswij);printf(n); for(i=0;ifeadim;i+)/ 計(jì)算 m1-m2 pmi0=m1i0-m2i0;Multi(insw,pm,w);/ 計(jì)算 w= 逆 sw*(m1-m2) printf(n 解 w 的結(jié)果是 :n);for(i=0;ifeadim;i+) printf(%11.7fn,wi0);for(i=0;ifeadim;i+) / 轉(zhuǎn)置 winw0i=wi0;for(i=0;ifeadim;i+) / 計(jì)算一維空間的樣本均值 m1,m2 _m1+=inw0i*m1i

13、0;_m2+=inw0i*m2i0;yo=(_m1+_m2)/2;/ 計(jì)算閾值 yo/讀入測(cè)試樣本FILE *fr;if(fr=fopen(StudentsData2.txt,r)=NULL)printf(Cant open file);exit(0);for(j=0; jtestingnum; j+) / 讀入數(shù)據(jù)fscanf(fr,%s%d%f%f,&snum,&sflag,&sheight,&sweight); 鵝婭盡損鵪慘歷蘢鴛賴縈詰聾。 Xj.feature00=sheight;Xj.feature10=sweight;Xj.trueclass=sflag;for(k=0;k4;k+

14、)Xj.serialk=snumk;Xj.classifiedclass=-1;/ 初始化被識(shí)別的類別fclose(fr);/進(jìn)行判別 for(i=0;itestingnum;i+)for(j=0;jfeadim;j+) yi+=inw0j*Xi.featurej0;if(yiyo)Xi.classifiedclass=-1;elseXi.classifiedclass=1;for(i=0;itest ingnu m;i+)if(Xi.trueclass=Xi.classifiedclass) right+;elsewron g+;printf(n測(cè)試結(jié)果如下:n);printf(”n);printf(”正確分類的個(gè)數(shù)為:3dn,right); printf(”錯(cuò)誤分類的個(gè)數(shù)為:3dn,wrong); 2)輸出運(yùn)算結(jié)果nd , m2的三口果如49.6652.8046.8849.00就的結(jié)果如下,4537

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論