




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、HUNAN UNIVERSITY人工智能實驗報告題 目 實驗三:分類算法實驗學(xué)生姓名 蒙壽偉 學(xué)生學(xué)號 201408070120 專業(yè)班級 智能科學(xué)與技術(shù)1401班 指導(dǎo)老師 袁進 日 期 2017年5月15日 一實驗?zāi)康?.了解樸素貝葉斯算法和決策樹算法的基本原理;2.能夠使用樸素貝葉斯算法或者決策樹算法對數(shù)據(jù)進行分類3.學(xué)會對于分類器的性能評估方法二、實驗的硬件、軟件平臺硬件:計算機軟件:操作系統(tǒng):WINDOWS 2000 應(yīng)用軟件:C,Java或者Matlab3、 實驗相關(guān)知識貝葉斯定理:P(A)是 A 的先驗概率,之所以稱為“先驗”是因為它不考慮任何 B 方面的因素
2、。P(A|B)是已知 B 發(fā)生后 A 的條件概率,也由于得自 B 的取值而被稱作 A 的后驗概率。P(B|A)是已知 A 發(fā)生后 B 的條件概率,也由于得自 A 的取值而被稱作 B 的后驗概率。P(B)是 B 的先驗概率,也作標淮化常量(normalizing constant)。以第一條數(shù)據(jù)為例:vhigh,vhigh,2,2,small,low,unaccClassValues: unacc, acc, good, vgood 對應(yīng)P(Bi)。(i=0,1,2,3)P(Ai)六個屬性相互獨立:P(A0|B0)*P(A1|B0)*.P(A5|B0) =P(A|B0)。分別算出 取其中的最大值
3、,其中,P(A)的值相同,可以不算出來。If(P(B|A)最大 = 測試樣例.ClassValues) return true;Else return false;4、 實驗內(nèi)容及步驟實驗內(nèi)容:利用貝葉斯算法或者決策樹算法進行數(shù)據(jù)分類操作數(shù)據(jù)集:汽車評估數(shù)據(jù)集(見附錄)實驗步驟:1仔細閱讀并了解實驗數(shù)據(jù)集;2使用任何一種熟悉的計算機語言(比如C,Java或者matlab)實現(xiàn)樸素貝葉斯算法或者決策樹算法;3利用樸素貝葉斯算法或者決策樹算法在訓(xùn)練數(shù)據(jù)上學(xué)習(xí)分類器,訓(xùn)練數(shù)據(jù)的大小分別設(shè)置為:前100個數(shù)據(jù),前200個數(shù)據(jù),前500個數(shù)據(jù),前700個數(shù)據(jù),前1000個數(shù)據(jù),前1350個數(shù)據(jù);4利用測
4、試數(shù)據(jù)對學(xué)習(xí)的分類器進行性能評估;5統(tǒng)計分析實驗結(jié)果并上交實驗報告;<1>定義和初始化變量<2>統(tǒng)計并計算條件概率P(Ai|Bi),(i=0,1,2,3),當訓(xùn)練數(shù)據(jù)比較小時會出現(xiàn)Bi等于0的情況,這時P(Ai|Bi)=nan,所以可以加一個判斷,當P(Ai|Bi)<0或P(Ai|Bi)>1時,讓P(Ai|Bi)=0.<3>計算(四個里面取最大)<4>實驗結(jié)果四、思考題:1. 兩種算法在訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集上的性能一致嗎?哪個比較好? 決策樹(decision tree)是一個樹結(jié)構(gòu)(可以是二叉樹或非二叉樹)。其每個非葉節(jié)
5、點表示一個特征屬性上的測試,每個分支代表這個特征屬性在某個值域上的輸出,而每個葉節(jié)點存放一個類別。使用決策樹進行決策的過程就是從根節(jié)點開始,測試待分類項中相應(yīng)的特征屬性,并按照其值選擇輸出分支,直到到達葉子節(jié)點,將葉子節(jié)點存放的類別作為決策結(jié)果。 不同于貝葉斯算法,決策樹的構(gòu)造過程不依賴領(lǐng)域知識,它使用屬性選擇度量來選擇將元組最好地劃分成不同的類的屬性。所謂決策樹的構(gòu)造就是進行屬性選擇度量確定各個特征屬性之間的拓撲結(jié)構(gòu)。決策樹的成功率為: 61.80372% ,貝葉斯成功率為:68.7831% (貝葉斯更好一點)相比貝葉斯算法,決策樹
6、的優(yōu)勢在于構(gòu)造過程不需要任何領(lǐng)域知識或參數(shù)設(shè)置,因此在實際應(yīng)用中,對于探測式的知識發(fā)現(xiàn),決策樹更加適用。2. 提出一種提高分類器性能的方法并通過實驗驗證。5、 實驗心得通過這次實驗加深了我對樸素貝葉斯的認識,學(xué)會了用樸素貝葉斯算法解決具體的問題。樸素貝葉斯分類是一種十分簡單的分類算法,對于給出的待分類項,求解在此項出現(xiàn)的條件下各個類別出現(xiàn)的概率,哪個最大,就覺得此待分類項屬于哪個類別。樸素貝葉斯的原理決定了其成功率不可能太高,但是樸素貝葉斯的簡單易用性使得其在一些日常生活中應(yīng)用廣泛。附件(代碼)#include<iostream>#include<cstdlib>#in
7、clude<cstring>#include<vector>#include<fstream>#include<stdio.h>using namespace std;int countTrain = 0;/訓(xùn)練樣本數(shù)目int countTest = 0;/測試樣本數(shù)目int countTestSuc = 0;/測試樣本正確的數(shù)目int countF=100; /訓(xùn)練和測試的分界 string CVname4="unacc","acc","good","vgood"i
8、nt ClassValues4; /unacc, acc, good, vgood int buying44; /vhigh, high, med, maint44; / vhigh, high, med, low. int doors44; /2, 3, 4, 5more. int persons44; /2, 4, more. int lug_boot44; /small, med, safety44; /low, med, high. float ClassValuesL4; /unacc, acc, good, vgood float buyingL44
9、; /vhigh, high, med, low.float maintL44; / vhigh, high, med, low. float doorsL44; /2, 3, 4, 5more. float personsL44; /2, 4, more. float lug_bootL44; /small, med, big.float safetyL44; /low, med, high. */統(tǒng)計個數(shù) void Tonji(string a,string b,string c,string d,string e,string f,string g)/cout<<a<&
10、lt;" "<<b<<" "<<c<<" "<<d<<" "<<e<<" "<<f<<" "<<g<<endl;for(int i=0;i<4;i+)if(g=CVnamei)ClassValuesi+;/buying: vhigh, high, med, low.if(a="vhigh") buying0i
11、+;else if(a="high") buying1i+;else if(a="med") buying2i+;else if(a="low") buying3i+;/maint: vhigh, high, med, low. if(b="vhigh") maint0i+;else if(b="high") maint1i+;else if(b="med") maint2i+;else if(b="low") maint3i+;/doors: 2, 3,
12、 4, 5more.if(c="2") doors0i+;else if(c="3") doors1i+;else if(c="4") doors2i+;else doors3i+;/persons: 2, 4, more. if(d="2") persons0i+;else if(d="4") persons1i+;else persons2i+;/lug_boot: small, med, big.if(e="small") lug_boot0i+;else if(e=&
13、quot;med") lug_boot1i+;else if(e="big") lug_boot2i+;/safety: low, med, high. if(f="low") safety0i+;else if(f="med") safety1i+;else if(f="high") safety2i+;break;/讀取文件 void ReadFileTrain()ifstream fin("CarDatas.txt");string a,b,c,d,e,f,g;int i = c
14、ountF;while(i-)>0 && fin>>a && fin>>b&& fin>>c && fin>>d && fin>>e && fin>>f && fin>>g)countTrain+;Tonji(a,b,c,d,e,f,g); fin.close();cout<<"訓(xùn)練樣本countTrain="<<countTrain<<e
15、ndl;/統(tǒng)計得到在各類別下各個特征屬性的條件概率估計void CalAP() /概率P(yi)for(int i=0;i<4;i+)ClassValuesLi = (float) ClassValuesi/countTrain;/特別注意的是P(ai|yi)=ai/0的情況!,會使 P(ai|yi)等于nan; for(int i=0;i<4;i+) /概率P(ai|yi)for(int j=0;j<4;j+)buyingLij = (float) buyingij/ClassValuesj; if(buyingLij<0 | buyingLij>1) buyi
16、ngLij=0;maintLij = (float) maintij/ClassValuesj; if(maintLij<0 | maintLij>1) maintLij=0;doorsLij = (float) doorsij/ClassValuesj; if(doorsLij<0 | doorsLij>1) doorsLij=0;for(int i=0;i<3;i+) /概率P(ai|yi)for(int j=0;j<4;j+)personsLij = (float) personsij/ClassValuesj; if(personsLij<0
17、| personsLij>1) personsLij=0;lug_bootLij = (float) lug_bootij/ClassValuesj; if(lug_bootLij<0 | lug_bootLij>1) lug_bootLij=0;safetyLij = (float) safetyij/ClassValuesj; if(safetyLij<0 | safetyLij>1) safetyLij=0;/一行數(shù)據(jù)的準確與否,P(Bi|A)=P(A|Bi)P(Bi)/P(A),其中P(A)相同,只需比較分子的大小即可 bool TestLine(stri
18、ng ai,string bi,string ci,string di,string ei,string fi,string gi)int b, m, d, p, l, s;/buying:if(ai="vhigh") b=0;else if(ai="high") b=1;else if(ai="med") b=2;else if(ai="low") b=3;/maint:if(bi="vhigh") m=0;else if(bi="high") m=1;else if(bi
19、="med") m=2;else if(bi="low") m=3;/doors:if(ci="2") d=0;else if(ci="3") d=1;else if(ci="4") d=2;else d=3;/persons:if(di="2") p=0;else if(di="4") p=1;else p=2;/lug_boot:if(ei="small") l=0;else if(ei="med") l=1;e
20、lse if(ei="big") l=2;/safety: if(fi="low") s=0;else if(fi="med") s=1;else if(fi="high") s=2;float Bi; float MaxB=0;int t=0;/計算四個P(Bi|A)的概率取最大的 for(int i=0;i<4;i+)Bi=buyingLbi * maintLmi * doorsLdi * personsLpi * lug_bootLli * safetyLsi * ClassValuesLi;if(Ma
21、xB < Bi && Bi<=1)MaxB = Bi;t = i;/判斷預(yù)測和事實是否相等 if(CVnamet=gi) return true;else return false; /讀取并測試文件 void ReadFileTest()ifstream fin("CarDatas.txt");string a,b,c,d,e,f,g;bool t=false;int i=0;while(+i && fin>>a && fin>>b&& fin>>c &
22、& fin>>d && fin>>e && fin>>f && fin>>g)if(i>countF) countTest+;t=TestLine(a,b,c,d,e,f,g); if(t) countTestSuc+; fin.close();void setZero();int main()int a5=100,200,500,700,1350;for(int i=0;i<5;i+)setZero();countF=ai; /訓(xùn)練和測試的分界 ReadFileTrain(); /讀取文件并且統(tǒng)計個數(shù)CalAP(); /計算條件概率 ReadFileTest(); /測試樣本 cout<<"預(yù)測正確countTestSuc="<<countTestSuc<<endl;cout<<"測試樣本countTest="<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京舞蹈學(xué)院《女裝紙樣設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 山東商務(wù)職業(yè)學(xué)院《跨文化交流與管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 音樂腦科學(xué)探索-洞察及研究
- 云南理工職業(yè)學(xué)院《拉丁美洲文學(xué)史》2023-2024學(xué)年第一學(xué)期期末試卷
- 安吉cs團建活動方案
- 宣傳板凳活動策劃方案
- 小學(xué)牛奶促銷活動方案
- 尋寶樂園活動方案
- 家裝活動特惠活動方案
- 尋找影子活動方案
- 內(nèi)蒙古錦山蒙古族中學(xué)2024年數(shù)學(xué)高一下期末綜合測試模擬試題含解析
- 醫(yī)院檢驗科實驗室生物安全程序文件SOP
- 醫(yī)療設(shè)備儀器的清潔消毒
- 基于Matlab的巴特沃斯濾波器設(shè)計
- 兒童發(fā)展心理學(xué)全套課件
- 侵占公司資金還款協(xié)議
- 實驗室搬遷方案
- 2013年10月自考英語二試題及答案和評分標準完整版
- 電大國開專科(附答案)《辦公室管理》形考在線(形考任務(wù)五)試題
- 聞診問診切診
- 2023年安徽省合肥市廬陽區(qū)小升初數(shù)學(xué)真題及答案
評論
0/150
提交評論