贝叶斯分类算法实现

编号,色泽,根蒂,敲声,纹理,脐部,触感,好瓜  

1,青绿,蜷缩,浊响,清晰,凹陷,硬滑,是  
2,乌黑,蜷缩,沉闷,清晰,凹陷,硬滑,是  
3,乌黑,蜷缩,浊响,清晰,凹陷,硬滑,是  
4,青绿,蜷缩,沉闷,清晰,凹陷,硬滑,是  
5,浅白,蜷缩,浊响,清晰,凹陷,硬滑,是  
6,青绿,稍蜷,浊响,清晰,稍凹,软粘,是  
7,乌黑,稍蜷,浊响,稍糊,稍凹,软粘,是  
8,乌黑,稍蜷,浊响,清晰,稍凹,硬滑,是  
9,乌黑,稍蜷,沉闷,稍糊,稍凹,硬滑,否  
10,青绿,硬挺,清脆,清晰,平坦,软粘,否  
11,浅白,硬挺,清脆,模糊,平坦,硬滑,否  
12,浅白,蜷缩,浊响,模糊,平坦,软粘,否  
13,青绿,稍蜷,浊响,稍糊,凹陷,硬滑,否  
14,浅白,稍蜷,沉闷,稍糊,凹陷,硬滑,否  
15,乌黑,稍蜷,浊响,清晰,稍凹,软粘,否  
16,浅白,蜷缩,浊响,模糊,平坦,硬滑,否  

17,青绿,蜷缩,沉闷,稍糊,稍凹,硬滑,否  

以上是本次使用的贝叶斯数据表,本次实验我不会介绍算法,只提供实验要求及代码

——分类算法实现

一、实验题目

分类算法实现

二、实验内容

现有西瓜挑选数据文件:dataset.txt,编程实现朴素贝叶斯算法,并判断有如下特征的瓜是否好瓜:

青绿,稍蜷,浊响,清晰,凹陷,硬滑。

三、实验目的

1、理解分类算法基本过程

2、熟悉贝叶斯分类算法

2、锻炼分析问题、解决问题并动手实践的能力

四、实验指导

1、自行采用一种语言编程实现算法(注意:计算条件概率、判别分类等核心算法需自己编程实现)

2、用课堂例子进行正确性检验

3、用户界面友好,要考虑到输入输出

4、分析结果,说明理论分析到数值计算的注意问题

代码实验(代码查询数据我是写死了的,只适合初学者阅读,有兴趣也可以尝试修改一下)

package homework;


import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;


public class bys {
static ArrayList<String> list = new ArrayList<String>();
static int count = 0;


public static void main(String[] args){
File file = new File("dataset.txt");
readFile(file);
}
public static void readFile(File file){
float isgreet_count_yes = 0;
float isgreet_count_no = 0;
float qinglv_yes = 0;
float qinglv_no = 0;
int shaojuan_yes = 0;
int shaojuan_no = 0;
int zhuoxiang_yes = 0;
int zhuoxiang_no = 0;
int qingxi_yes = 0;
int qingxi_no = 0;
int aoxian_yes = 0;
int aoxian_no = 0;
int yinghua_yes = 0;
int yinghua_no = 0;

BufferedReader burd = null;
try {

burd = new BufferedReader(new FileReader(file));
String s = null;
ArrayList<String> list1 = new ArrayList<String>();
while((s=burd.readLine())!=null){
count++;
String[] a = s.split(",");
list1.add(a[0]);
list1.add(a[1]);
list1.add(a[2]);
list1.add(a[3]);
list1.add(a[4]);
list1.add(a[5]);
list1.add(a[6]);
list1.add(a[7]+"\n");

if(a[7].equals("是  ")){
isgreet_count_yes++;
}if(a[7].equals("否  ")){
isgreet_count_no++;
}if(a[1].equals("青绿")&&a[7].equals("是  ")){
qinglv_yes++;
}if(a[1].equals("青绿")&&a[7].equals("否  ")){
qinglv_no++;
}if(a[2].equals("稍蜷")&&a[7].equals("是  ")){
shaojuan_yes++;
}if(a[2].equals("稍蜷")&&a[7].equals("否  ")){
shaojuan_no++;
}if(a[3].equals("浊响")&&a[7].equals("是  ")){
zhuoxiang_yes++;
}if(a[3].equals("浊响")&&a[7].equals("否  ")){
zhuoxiang_no++;
}if(a[4].equals("清晰")&&a[7].equals("是  ")){
qingxi_yes++;
}if(a[4].equals("清晰")&&a[7].equals("否  ")){
qingxi_no++;
}if(a[5].equals("凹陷")&&a[7].equals("是  ")){
aoxian_yes++;
}if(a[5].equals("凹陷")&&a[7].equals("否  ")){
aoxian_no++;
}if(a[6].equals("硬滑")&&a[7].equals("是  ")){
yinghua_yes++;
}if(a[6].equals("硬滑")&&a[7].equals("否  ")){
yinghua_no++;
}

}
list.addAll(list1);

} catch (FileNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}

for(int i=0; i<list.size(); i++){

System.out.print(list.get(i) + "  ");
}

float count_yes_chance = (float) (isgreet_count_yes/17.0);
float qinglv_yes_chance = (float)(qinglv_yes/isgreet_count_yes);
float shaojuan_yes_chance = (float)(shaojuan_yes/isgreet_count_yes);
float zhuoxiang_yes_chance = (float)(zhuoxiang_yes/isgreet_count_yes);
float qingxi_yes_chance = (float)(qingxi_yes/isgreet_count_yes);
float aoxian_yes_chance = (float)(aoxian_yes/isgreet_count_yes);
float yinghua_yes_chence = (float)(yinghua_yes/isgreet_count_yes);

float count_no_chance = (float) (isgreet_count_no/17.0);
float qinglv_no_chance = (float)(qinglv_no/isgreet_count_no);
float shaojuan_no_chance = (float)(shaojuan_no/isgreet_count_no);
float zhuoxiang_no_chance = (float)(zhuoxiang_no/isgreet_count_no);
float qingxi_no_chance = (float)(qingxi_no/isgreet_count_no);
float aoxian_no_chance = (float)(aoxian_no/isgreet_count_no);
float yinghua_no_chence = (float)(yinghua_no/isgreet_count_no);

float p1 = count_yes_chance*qinglv_yes_chance*shaojuan_yes_chance*zhuoxiang_yes_chance
*qingxi_yes_chance*aoxian_yes_chance*yinghua_yes_chence;

float p2 = count_no_chance*qinglv_no_chance*shaojuan_no_chance*zhuoxiang_no_chance
*qingxi_no_chance*aoxian_no_chance*yinghua_no_chence;
System.out.println("\n特征为:青绿,稍蜷,浊响,清晰,凹陷,硬滑,贝叶斯分布后好瓜概率为:" + p1 + ",不是好瓜概率为:" + p2);
if(p1 > p2){
System.out.println("所以该特征的瓜是好瓜!");
}else{
System.out.println("所以该特征的瓜是不是好瓜");
}
}
 

}

附带实验数据文件:链接:https://pan.baidu.com/s/1MP5PbYbHMtA8kSffF9womQ?pwd=xvmo 提取码:xvmo 复制这段内容后打开百度网盘手机App,操作更方便哦

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值