資源簡介
首先說一句抱歉,因為這個資源是考試結(jié)束后上傳的,所以報告弄丟了,但是代碼還在,而且經(jīng)過TA驗收,可以正常運行,這個實驗是關(guān)于貝葉斯網(wǎng)絡(luò)的問題。
實驗內(nèi)容:
參照課程第五部分講授的貝葉斯網(wǎng)絡(luò)完成,給定事件和事件之間的關(guān)系,并且給出每個事件的CPT圖,根據(jù)貝葉斯公式根據(jù)上述條件求出目標概率,編寫程序?qū)崿F(xiàn)基于貝葉斯網(wǎng)絡(luò)的推理。在這里用到的貝葉斯算法是建立在有向無環(huán)圖和CPT表的技術(shù)上實現(xiàn)的。

代碼片段和文件信息
package?bayes;
import?java.io.BufferedReader;
import?java.io.File;
import?java.io.FileNotFoundException;
import?java.io.FileReader;
import?java.io.IOException;
import?java.util.*;
public?class?Lab3class?{
public?static?void?main(String[]?args)??{
ArrayList?arrayList?=?new?ArrayList<>();//人名列表
ArrayList?arrayList2?=?new?ArrayList<>();//問題列表
double?[]?P;
File?f1f2;
System.out.println(“請輸入文件名稱\n“);
f1?=?new?File(“carnetwork.txt“);
????????f2?=?new?File(“carqueries.txt“);
????????Note?cpt?=?geteverycpt(f1arrayList);
????????arrayList2?=?getquestion(f2);
????????double[]?pro;//存全概率
????????pro?=?allpro(cpt);
//????????for(int?i?=?0;i?//???????? System.out.println(pro[i]);
//????????}
????????for(int?i=0;i????????? P=getPT(arrayList2.get(i)?cptarrayListpro);
???????? System.out.println(“P(“+arrayList2.get(i)+“)?=?\n?:?“+P[0]+“?:?“+P[1]);
????????}
}
/*
?*查詢概率并輸出
?*/
public?static?double[]?getPT(String?questionNote?cptArrayList?arrayListdouble[]?pro){
String[]?strings=question.split(“?\\|?“);
double[]?answer=new?double[2];
int?count=arrayList.indexOf(strings[0]);//前面的Note序號
if(cpt.q[count]==0){
answer[0]=cpt.t[0][0][count];
answer[1]=cpt.t[0][1][count];
}
else{
String[]?strings2=strings[1].split(“?“);
String[]?strings3;
int?sum=0;
int[]?count2=new?int[strings2.length];//條件Note序號
int?[]?TF=new?int[strings2.length];//存儲是t還是f
for(int?i=0;i strings3=strings2[i].split(“=“);
count2[i]=arrayList.indexOf(strings3[0]);
if(strings3[1].contains(“true“)){
TF[i]=1;
}
else{
TF[0]=0;
}
}
double[]?p1=compute(pro?count2?TF?countcpt);
double[]?p2=compute(pro?count2?TF?-1cpt);
answer[0]=p1[0]/p2[0];
answer[1]=p1[1]/p2[0];
//System.out.println(answer[0]+“?“+answer[1]);
}
return?answer;
}
????/*
?????*?處理問題文本并返回問題
?????*/
public?static?ArrayList?getquestion(File?file){
ArrayList?arrayList=new?ArrayList<>();
?BufferedReader?bfr1;
?try?{
bfr1=new?BufferedReader(new?FileReader(file));
String?string;
while((string=bfr1.readLine())!=null){
String[]?strings=string.split(“P\\(“);
if?(strings.length?==?0)?{
continue;
}
????for(int?i=1;i ???? arrayList.add(strings[i].substring(0(strings[i].length()-1)));??
????}
}
}?catch?(FileNotFoundException?e)?{
//?TODO?Auto-generated?catch?block
System.out.println(“未找到文件!\n“);
}?catch?(IOException?e)?{
//?TODO?Auto-generated?catch?block
System.out.println(“read不了\n“);
}
?
???? ?return?arrayList;
?????}
?????/*
??????*?處理貝葉斯網(wǎng)絡(luò)文本并返回概率表
??????*/
public?static?Note??geteverycpt(File?fileArrayList?arrayList){
???? ?int?count;//變量個數(shù)
???? ?Note?xinxi=new?Note();
???? ?BufferedReader?bfr1;
???? ??try?{
???? //讀取
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-11-04?10:18??lab3\
?????文件?????????232??2018-11-04?09:24??lab3\.classpath
?????文件?????????380??2018-11-04?09:24??lab3\.project
?????目錄???????????0??2018-11-04?09:25??lab3\bin\
?????目錄???????????0??2018-11-04?09:32??lab3\bin\bayes\
?????文件????????8569??2018-11-04?11:30??lab3\bin\bayes\Lab3class.class
?????文件?????????530??2018-11-04?09:33??lab3\bin\bayes\Note.class
?????文件?????????216??2013-07-15?12:44??lab3\burglarnetwork.txt
?????文件?????????180??2013-07-15?12:44??lab3\burglarqueries.txt
?????文件?????????962??2018-11-04?10:20??lab3\carnetwork.txt
?????文件?????????172??2018-11-04?11:10??lab3\carqueries.txt
?????目錄???????????0??2018-11-04?09:25??lab3\src\
?????目錄???????????0??2018-11-04?10:18??lab3\src\bayes\
?????文件?????????216??2013-07-15?12:44??lab3\src\bayes\burglarnetwork.txt
?????文件?????????180??2013-07-15?12:44??lab3\src\bayes\burglarqueries.txt
?????文件????????8734??2018-11-04?11:30??lab3\src\bayes\Lab3class.java
?????文件?????????281??2018-11-04?09:33??lab3\src\bayes\Note.java
?????文件?????????162??2018-10-28?08:40??lab3\~$智能——實驗大綱3.docx
?????文件???????66430??2018-10-16?11:38??lab3\人工智能——實驗大綱3.docx
評論
共有 條評論