贝叶斯分类算法实现

匿名 (未验证) 提交于 2019-12-03 00:22:01

















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


――分类算法实现

一、实验题目

分类算法实现

二、实验内容

现有西瓜挑选数据文件: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");


isgreet_count_yes++;

isgreet_count_no++;

qinglv_yes++;

qinglv_no++;

shaojuan_yes++;

shaojuan_no++;

zhuoxiang_yes++;

zhuoxiang_no++;

qingxi_yes++;

qingxi_no++;

aoxian_yes++;

aoxian_no++;

yinghua_yes++;

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++){


}

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!