樸素貝葉斯分類器_第1頁(yè)
樸素貝葉斯分類器_第2頁(yè)
樸素貝葉斯分類器_第3頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、樸素貝葉斯分類器Naive Bayesia n ClassifierC語言實(shí)現(xiàn)信息電氣工程學(xué)院 計(jì)算本1102班20112212465馬 振磊1.貝葉斯公式p(C|幾宇耳)譏0)列耳凡|C)通過貝葉斯公式,我們可以的知在屬性F1-Fn成立的情況下,該樣本屬于分類C的概率。而概率越大,說明樣本屬于分類C的可能性越大。若某樣本可以分為 2種分類A, B。要比較P(A | F1,F2)與P(B | F1,F2)的大小只需比較,P(A)P(F1,F2| A),與P(B)P(F1,F2| B)因?yàn)閮墒椒帜敢恢?。?P(A)P(F1,F2| A)可以采用縮放為 P(A)P(F1|A)P(F2|A)(Fn|

2、A)因此,在分類時(shí),只需比較每個(gè)屬性在分類下的概率累乘,再乘該分類的概率即可。分類屬性 outlook屬性 temperature屬性 humidity屬性windnosunnyhothighweaknosunnyhothighstro ngyesovercasthothighweakyesrainmildhighweakyesraincoolno rmalweaknoraincoolno rmalstro ngyesovercastcoolno rmalstro ngnosunnymildhighweakyessunnycoolno rmalweakyesrainmildno rmalwea

3、kyessunnymildno rmalstro ngyesovercastmildhighstro ngyesovercasthotno rmalweaknorainmildhighstro ng以上是根據(jù)天氣的 4種屬性,某人外出活動(dòng)的記錄。 若要根據(jù)以上信息判斷(Outlook = sunny ,Temprature = cool,Humidity = high,Wi nd = strong) 所屬分類。P(yes| sunny ,cool ,high ,str ong )=P(yes)P(s unny |yes)P(cool |yes)P(high|yes)P(stro ng|yes)

4、/KP(no| sunny ,cool ,high ,str ong )=P( no )P(s unny|no )P(coo I |no )P(high| no )P(str ong|no)/KK為縮放因子,我們只需要知道兩個(gè)概率哪個(gè)大,所以可以忽略K。P(yes)=9/14P(n o)=5/14P(su nn y|yes)=2/9 P(cool|yes)=1/3P(high|yes)=1/3 P(stro ng|yes)=1/3P(su nn y| no)=3/5P(cool| no)=1/5P(high |n o)=4/5P(stro ng|n o)=3/5P(yes| sunny ,co

5、ol ,high ,strong)=9/14*2/9*1/3*1/3*1/3=0.00529P(no| sunny ,cool ,high ,strong )=5/14*3/5*1/5*4/5*3/5=0.20571No的概率大,所以該樣本實(shí)例屬于no分類。2.數(shù)據(jù)結(jié)構(gòu)及代碼實(shí)現(xiàn)1屬性及分類我們限定分類器的屬性不大于 9個(gè),每個(gè)屬性擁有不大于 9個(gè)值。于是,我們考慮采用一個(gè)9X9的表格存儲(chǔ)屬性及其值。屬性1值1值2值3值4值5值6值7值8值9屬性2值1值2值3值4值5值6值7值8值9屬性3值1值2值3值4值5值6值7值8值9屬性4值1值2值3值4值5值6值7值8值9屬性5值1值2值3值4值5值

6、6值7值8值9屬性6值1值2值3值4值5值6值7值8值9屬性7值1值2值3值4值5值6值7值8值9屬性8值1值2值3值4值5值6值7值8值9屬性9值1值2值3值4值5值6值7值8值9為了調(diào)用數(shù)據(jù)方便,我們把數(shù)據(jù)從第一行開始儲(chǔ)存。為了充分利用存儲(chǔ)空間,我們把第零行儲(chǔ)存分類數(shù)據(jù)。分類1分類2分類3分類4分類5分類6分類7分類8分類9屬性1值1值2值3值4值5值6值7值8值9屬性2值1值2值3值4值5值6值7值8值9屬性3值1值2值3值4值5值6值7值8值9屬性4值1值2值3值4值5值6值7值8值9屬性5值1值2值3值4值5值6值7值8值9屬性6值1值2值3值4值5值6值7值8值9屬性7值1值2值3

7、值4值5值6值7值8值9屬性8值1值2值3值4值5值6值7值8值9屬性9值1值2值3值4值5值6值7值8值9現(xiàn)在,我們可以采用一個(gè)10 X 10的表格來儲(chǔ)存數(shù)據(jù)了。而每個(gè)單元格的內(nèi)容需要占用一定的儲(chǔ)存空間,我們可以用一個(gè)三維數(shù)組 char feature101010 來表示這種結(jié)構(gòu)的數(shù)據(jù)。用來容納 9個(gè)屬性的9個(gè)值。第0行, 我們用來儲(chǔ)存分類數(shù)據(jù)。而第一行的第一列沒有被使用,而其中含有10個(gè)char類型的數(shù)據(jù)我們可以用它來儲(chǔ)存 屬性值的多少。如圖:分類的個(gè)數(shù)屬性1值的個(gè)數(shù)屬性2值的個(gè)數(shù)屬性9值的個(gè)數(shù)前一段的數(shù)據(jù):分類:yesno屬性 outlook:sunnyovercastrain屬性 te

8、mperature :hotmildcool屬性 humidity :highno rmal屬性wind :stro ngweak如下圖yesnooutlooksunnyovercastrainTemperahotmildcoolhumidityhighnormalwindstrongweak第0行,第0列233T2T223322代碼如下:int x=1,y;printf(”請(qǐng)輸入屬性名稱(小于9個(gè)字符):");gets(featurex0);printf("該屬性有幾種值(不多于9個(gè)值):");/把屬性值儲(chǔ)存入feature00x;feature00x是由字符格

9、式輸入的-48根據(jù) feature00x循環(huán)輸入,將屬性的值存入scan f("%c",& feature00x);feature00x-=48;變?yōu)閿?shù)字getchar(); system("cls");for(y=1;y<=feature00x;y+) /數(shù)組printf("請(qǐng)輸入第%d個(gè)值:",y);gets(featurexy);x+;feature 數(shù)組。通過這段代碼的循環(huán),輸入屬性及其值進(jìn)入通過以下代碼將分類數(shù)據(jù)存入數(shù)組第0行。prin tf("該事物可以被分為幾種類別:”);scanf("

10、%c",&feature000);/ 分類數(shù)目存入 feature000feature000-=48;getchar();system("cls");for(y=1;y<=feature000;y+)/ 通過循環(huán)將分類存入第0 行printf("請(qǐng)輸入第%d種類別的名稱:",y);gets(feature0y);2. 訓(xùn)練樣本每個(gè)訓(xùn)練樣本的屬性最多有9個(gè)值,再加上分類一個(gè)值,所以,我們采用一個(gè)10列的表格儲(chǔ)存訓(xùn)練樣本數(shù)據(jù)。nosunnyhothighweaknosunnyhothighstro ngyesovercasthothi

11、ghweakyesrainmildhighweakyesraincoolno rmalweaknoraincoolno rmalstro ngyesovercastcoolno rmalstro ngnosunnymildhighweakyessunnycoolno rmalweakyesrainmildno rmalweakyessunnymildno rmalstro ngyesovercastmildhighstro ngyesovercasthotno rmalweaknorainmildhighstro ng同樣,每個(gè)單元格里限制最多有9個(gè)字符,加上一個(gè)0 '終止符,共十個(gè)。

12、而樣本數(shù)量,也就是行數(shù),可以適當(dāng)?shù)亩嘁稽c(diǎn),暫設(shè)為30。因此我們采用三維數(shù)組char sample301010來容納樣本數(shù)據(jù)。X的初始值為1for(y=1;y<=FeatureNum;y+)printf("特征 %s 的取值:",featurey0);gets(samplex-1y);printf(”該樣本歸于哪一種分類:");gets(samplex-10);x+;SampleNum+;/統(tǒng)計(jì)樣本的數(shù)量3. 計(jì)算概率class probabilitypublic:int id;/給每個(gè)概率值一個(gè)定位ID,方便查找double p;probability()p

13、=0;probability prob729;采用一 729個(gè)類來存放每個(gè)屬性值在不同分類下的概率。至多有 9種屬性,每個(gè)屬性至多擁有 9個(gè)值,而要計(jì) 算這9個(gè)屬性的9種值在9種不同分類下的概率,所以我們用了729個(gè)類。并且在構(gòu)造函數(shù)里面初始化概率p為0.接下來,統(tǒng)計(jì)各種分類出現(xiàn)的個(gè)數(shù)。9種分類出現(xiàn)的數(shù)目,分別儲(chǔ)存在SampleClassNum9的不同單元格里。int SampleClassNum9=0,0,0,0,0,0,0,0,0;for(c=1;c<=feature000;c+)for(x=0;x<SampleNum;x+)if(strcmp(featureOc,sample

14、xO)=O)SampleClassNumc-1+;然后,我們可以開始計(jì)算概率了。for(c=1;c<=feature000;c+)for(x=1;x<=FeatureNum;x+)for(y=1;y<=feature00x;y+)probcou nter.id=c*100+x*10+y;for(i=0;i<SampleNum;i+)if(strcmp(featurexy,sampleix)=O&&strcmp(featureOc,sampleiO)=O)probcounter.p+;/統(tǒng)計(jì)某一值在某一分類下的出現(xiàn)個(gè)數(shù)probco un ter.p=pro

15、bco un ter.p/SampleClassNumc-1; /出現(xiàn)個(gè)數(shù)除以分類出 算出概率coun ter+;/現(xiàn)總數(shù),計(jì)每個(gè)概率的ID為3位整數(shù),百位記錄了分類信息,個(gè)位十位分別是,其屬性值在表格中的X,Y坐標(biāo)。然后,進(jìn)行比較,統(tǒng)計(jì)出出現(xiàn)個(gè)數(shù),接著除以分類的出現(xiàn)總數(shù),計(jì)算出概率。4. 對(duì)新的實(shí)例進(jìn)行分類輸入該新的實(shí)例。char in sta nce910;double Pi nsta nce9=1,1,1,1,1,1,1,1,1;int PID9;printf(”貝葉斯分類器 Sept 5n");printf(”請(qǐng)輸入要分類的樣本屬性n");for(i=1;i<

16、=FeatureNum;i+)printf(" 特征 %s 的取值 ”,featureiO); gets(i nsta ncei-1);然后,計(jì)算出不含分類信息的值在表格中的X,Y坐標(biāo)。for(x=1;x<=FeatureNum;x+) for(y=1;y<=feature00x;y+)if(strcmp(featurexy,i nsta ncex-1)=0) PIDx-1=x*10+y;break;根據(jù)X,Y坐標(biāo)加上分類坐標(biāo),組成完整的3位數(shù)坐標(biāo)。在概率表prob中查找即可找到。通過累乘,然后乘上某一分類的概率,即可求出最終的概率。for(c=1;c<=feature000;c+) for(y=0;y<FeatureNum;y+)for(i=0;i<729;i+)/累乘求概率if(probi.id=PIDy+c*100) break;Pin sta ncec-1=P in sta ncec-1*probi.p; Pi nsta ncec-1=Pi nsta ncec-1*(SampleClassNumc-1/(double)SampleNum);/最后乘上這一分類的概率,即可求出最終概率system(&quo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論