資源描述:
《主觀貝葉斯實驗報告》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、主觀貝葉斯實驗報告學(xué)生姓名程戰(zhàn)戰(zhàn)專業(yè)/班級計算機91學(xué)號09055006所在學(xué)院電信學(xué)院指導(dǎo)教師鮑軍鵬提交日期2012/4/261實驗?zāi)康母鶕?jù)初始證據(jù)E的概率P(E)及LS、LN的值,把H的先驗概率P(H)更新為后驗概率P(H/E)或者P(H/!E)。在證據(jù)不確定的情況下,用戶觀察到的證據(jù)具有不確定性,即0
2、刻的,在現(xiàn)實中往往不能保證這個條件被嚴(yán)格滿足。而且在貝葉斯公式中還要求事先知道已知結(jié)論時前件的條件概率和結(jié)論的先驗概率。要獲得這些概率,就必須做一些統(tǒng)計工作。然而,在實踐中未必能進(jìn)行足夠的重復(fù)實驗來獲得充分的觀察數(shù)據(jù)。再者,用貝葉斯公式得到的后驗概率實際上是對先驗概率的修正。假如先驗概率偏差比較大,那么必然會對后驗概率造成不良影響。所以在人工智能實踐中,為了應(yīng)用簡便和省事,往往用主觀決定代替客觀觀察,用主觀指定的數(shù)值來代替統(tǒng)計概率。主觀貝葉斯方法就是這種思想的一種體現(xiàn)。主觀貝葉斯方法是由杜達(dá)等人于
3、1976年在貝葉斯公式基礎(chǔ)上進(jìn)行改進(jìn)而提出的一種不確定性推理模型。通過下述插值函數(shù)(稱EH公式或UED公式)求P(H/S)的值:當(dāng)證據(jù)為初始證據(jù)時,用下述CP公式計算:3實驗結(jié)果在用EH公式時執(zhí)行結(jié)果在用CP公式時執(zhí)行結(jié)果4實驗源代碼importjava.util.Scanner;publicclassBayes{publicfloatph;publicfloatpe;publicfloatpes;publicfloatls;publicfloatln;publicfloatces;//該六項為領(lǐng)
4、域?qū)<医o出的值publicfloatpeh;publicfloatp_eh;publicfloatphe;publicfloatph_e;//該四項為中間變量publicfloatphs;//最終結(jié)果publicBayes(){//構(gòu)造函數(shù)進(jìn)行變量初始化ph=0;pe=0;pes=0;ls=0;ln=0;ces=0;peh=0;p_eh=0;phe=0;ph_e=0;phs=0;}publicvoidset(){peh=ls*(1-ln)/(ls-ln);p_eh=1-peh;ph_e=p_eh*
5、ph/(1-pe);if(ph_e>1){ph_e=1;}peh=ls*(1-ln)/(ls-ln);phe=peh*ph/pe;if(phe>1){phe=1;}}publicinteh(){//采用eh方法計算bayes不確定性if(0<=pes&&pes<=pe){phs=ph_e+(ph-ph_e)*pes/pe;return1;}elseif(pe<=pes&&pes<=1){phs=ph+(phe-ph)*(pes-pe)/(1-pe);return1;}else{return-1;}
6、}publicintcp(){//采用cp方法計算bayes不確定性if(ces<=0){phs=ph_e+(ph-ph_e)*(ces/5+1);return1;}elseif(ces>0){phs=ph+(phe-ph)*ces/5;return1;}else{return-1;}}publicstaticvoidmain(String[]args){System.out.println("要使用bayes計算不確定性嗎?輸入1選擇eh公式計算,輸入2選擇ces公式計算");System.ou
7、t.println("注意:0<=P(H),P(E),P(E/S)<=1LS,LN>=0并且不能同時大于1或者小于1C(E/S)是取[-5,5]之間的整數(shù)");Scannersc=newScanner(System.in);intflag=sc.nextInt();Bayesbaye=newBayes();System.out.println("請輸入ph");baye.ph=sc.nextFloat();System.out.println("請輸入pe");baye.pe=sc.nextFlo
8、at();System.out.println("請輸入ls");baye.ls=sc.nextFloat();System.out.println("請輸入ln");baye.ln=sc.nextFloat();if(flag==1){System.out.println("請輸入pes");baye.pes=sc.nextFloat();baye.set();baye.eh();}else{System.out.println("請輸入ces");baye.ces=sc.nex