模式识别-----贝叶斯算法(java实现)
来源:互联网 发布:个人网站域名注册 编辑:程序博客网 时间:2024/06/07 11:12
import java.io.*;import java.text.DecimalFormat;import java.util.HashMap;public class TestBys { public static void main(String[] args) throws IOException { Classifier classifier = new Classifier(); File file = new File("/home/zy/IdeaProjects/Test/a.txt"); classifier.study(file); Car car1 = new Car("vhigh","vhigh","2","2","small","low"); Car car2 = new Car("med","low","4","more","big","med"); Car car3=new Car("med","low","4","more","big","high"); System.out.println(classifier.classify(car1)); System.out.println(classifier.classify(car2)); System.out.println(classifier.classify(car3)); }}class Car{ String buy; String maint; String door; String persons; String safety; String lug_boot; public Car(String vhigh, String vhigh1, String s, String s1, String small, String low) { buy=vhigh; maint=vhigh1; door=s; persons=s1; safety=low; lug_boot=small; }}class Classifier{ DecimalFormat df=new DecimalFormat("0.0000"); DecimalFormat dff=new DecimalFormat("0.0000"); float[] unacc = new float[21]; float[] acc = new float[21]; float[] good = new float[21]; float[] vgood = new float[21]; int pu,pa,pg,pv; float p1,p2,p3,p4; HashMap buy = new HashMap<String,Integer>(); HashMap maint = new HashMap<String,Integer>(); HashMap door = new HashMap<String,Integer>(); HashMap persons = new HashMap<String,Integer>(); HashMap Lug_boot = new HashMap<String,Integer>(); HashMap safety = new HashMap<String,Integer>(); Classifier(){ buy.put("vhigh",0);buy.put("high",1);buy.put("med",2);buy.put("low",3); maint.put("vhigh",4);maint.put("high",5);maint.put("med",6);maint.put("low",7); door.put("2",8);door.put("3",9);door.put("4",10);door.put("5more",11); persons.put("2",12);persons.put("4",13);persons.put("more",14); Lug_boot.put("small",15);Lug_boot.put("med",16);Lug_boot.put("big",17); safety.put("low",18);safety.put("med",19);safety.put("high",20); } public void Fadd(int[] f,int b,int m,int d,int p,int l,int s){ f[b]++;f[m]++;f[d]++;f[p]++;f[l]++;f[s]++; } public void study(File file) throws IOException { int[] usum = new int[21]; int[] asum= new int[21]; int[] gsum = new int[21]; int[] vsum = new int[21]; FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); String str; while((str=br.readLine())!=null){ String[] strings=str.split(","); int b= (int) buy.get(strings[0]); int m= (int) maint.get(strings[1]); int d= (int) door.get(strings[2]); int p= (int) persons.get(strings[3]); int l= (int) Lug_boot.get(strings[4]); int s= (int) safety.get(strings[5]); String type = strings[6]; switch (type){ case "": break; case "unacc": Fadd(usum,b,m,d,p,l,s);pu++; break; case "acc": Fadd(asum,b,m,d,p,l,s);pa++; break; case "good": Fadd(gsum,b,m,d,p,l,s);pg++; break; case "vgood": Fadd(vsum,b,m,d,p,l,s);pv++; break; } } for(int i=0;i<21;i++){ unacc[i]= Float.parseFloat(df.format((float)usum[i]/pu)); acc[i]= Float.parseFloat(df.format((float)asum[i]/pa)); good[i]= Float.parseFloat(df.format((float)gsum[i]/pg)); vgood[i]= Float.parseFloat(df.format((float)vsum[i]/pv)); } p1= Float.parseFloat(df.format((float)pu/(pa+pu+pg+pv))); p2= Float.parseFloat(df.format((float)pa/(pa+pu+pg+pv))); p3= Float.parseFloat(df.format((float)pg/(pa+pu+pg+pv))); p4= Float.parseFloat(df.format((float)pv/(pa+pu+pg+pv))); } public String classify(Car car){ String result=null; int b= (int) buy.get(car.buy); int m=(int) maint.get(car.maint); int d=(int)door.get(car.door); int p= (int) persons.get(car.persons); int l= (int) Lug_boot.get(car.lug_boot); int s= (int) safety.get(car.safety); float pun = unacc[b]*unacc[m]*unacc[d]*unacc[p]*unacc[l]*unacc[s]*p1; float pac = acc[b]*acc[m]*acc[d]*acc[p]*acc[l]*acc[s]*p2; float pgo = good[b]*good[m]*good[d]*good[p]*good[l]*good[s]*p3; float pvg = vgood[b]*vgood[m]*vgood[d]*vgood[p]*vgood[l]*vgood[s]*p4; float[] index = new float[]{ pun,pac,pgo,pvg }; float max=0; int num=0; for(int i=0;i<4;i++){ if(index[i]>max){ max=index[i]; num=i; } } switch (num){ case 0: result="unacc"; break; case 1: result= "acc"; break; case 2: result= "good"; break; case 3: result="vgood"; break; } return result; }}
阅读全文
0 0
- 模式识别-----贝叶斯算法(java实现)
- 模式识别-----knn算法(java实现)
- 模式识别----kmean算法(java实现)
- 模式识别几何分类算法实现(一)
- 模式识别几何分类算法实现(二)
- 模式识别ID3算法实现
- 模式识别(聚类分析算法))
- 模式识别中K-means算法实现
- 势函数算法实现模式识别算法实现C++
- 模式识别(七):MATLAB 实现朴素贝叶斯分类器
- 模式识别经典算法——FCM图像聚类分割(最简matlab实现)
- c++实现K-means聚类算法(模式识别课设)
- 算法研究(四) 一维模式识别
- 算法研究(四) 一维模式识别
- 模式识别(3)-SVM分类算法
- 模式识别中感知器算法(Perceptron Approach)的实现
- 模式识别:模拟退火算法的设计与实现
- 模式识别:k-均值聚类算法的研究与实现
- ios 倒计时在tableview或者collectionview中的重用问题
- guava RateLimiter限流实战
- Matlab的证书失效解决办法
- python的多线程
- 手把手教你写一个基于RxJava的扩展框架
- 模式识别-----贝叶斯算法(java实现)
- asdasd
- js返回上一个页面
- VMware下 KALI Linux 的连网调试
- 《Java编程技巧1001条》第370条 把串换为日期
- leetcode 322. Coin Change
- 排序
- (二)数据结构树之二叉树基本概念
- 长安大学第四届ACM-ICPC“迎新杯”程序设计竞赛-重现赛