资源简介
实验描述:
对指定数据集进行分类问题的分析,选择适当的分类算法,编写程序实现,提交程序和结果报告
数据集: balance-scale.data(见附件一) ,已有数据集构建贝叶斯分类器。
数据包括四个属性:五个属性值 第一个属性值表示样本的类别号,其他四个属性为四个不同的特征值。
代码片段和文件信息
package com.company;
/********************************************************************************
*
* 李勇志 2014301500370
* 数据挖掘实验,分类实验
* 朴素贝叶斯分类
*
*训练样本示例格式:(R1554)
*/
import java.io.File;
import java.util.Scanner;
import java.util.Vector;
public class Bayes {
static Vector indata = new Vector<>();//读入数据
static Vector catagory_R = new Vector<>();//存储类别R的所有数据
static Vector catagory_L = new Vector<>();//存储类别L的所有数据
static Vector catagory_B = new Vector<>();//存储类别B的所有数据
public static boolean loadData(String url) {//加载测试的数据文件
try {
Scanner in = new Scanner(new File(url));//读入文件
while (in.hasNextLine()) {
String str = in.nextLine();//将文件的每一行存到str的临时变量中
indata.add(str);//将每一个样本点的数据追加到Vector 中
}
return true;
} catch (Exception e) { //如果出错返回false
return false;
}
}
public static void pretreatment(Vector indata) { //数据预处理,将原始数据中的每一个属性值提取出来存放到Vector data中
int i = 0;
String t;
while (i < indata.size()) {//取出indata中的每一行值
int[] tem = new int[4];
t = indata.get(i);
String[] sourceStrArray = t.split(““ 5);//使用字符串分割函数提取出各属性值
switch (sourceStrArray[0]) {
case “R“: {
for (int j = 1; j < 5; j++) {
tem[j - 1] = Integer.parseInt(sourceStrArray[j]);
}
catagory_R.add(tem);
break;
}
case “L“: {
for (int j = 1; j < 5; j++) {
tem[j - 1] = Integer.parseInt(sourceStrArray[j]);
}
catagory_L.add(tem);
break;
}
case “B“: {
for (int j = 1; j < 5; j++) {
tem[j - 1] = Integer.parseInt(sourceStrArray[j]);
}
catagory_B.add(tem);
break;
}
}
i++;
}
}
public static double bayes(int[] x Vector catagory) {
double[] ai_y = new double[4];
int[] sum_ai = new int[4];
for (int i = 0; i < 4; i++) {
for (int j = 0; j < catagory.size(); j++) {
if (x[i] == catagory.get(j)[i])
sum_ai[i]++;
}
}
for (int i = 0; i < 4; i++) {
ai_y[i] = (double) sum_ai[i] / (double) catagory.size();
}
return ai_y[0] * ai_y[1] * ai_y[2] * ai_y[3];
}
public static void main(String[] args) {
loadData(“balance-scale.data“);
pretreatment(indata);
double p_yR = (double) catagory_R.size() / (double) (indata.size());//表示概率p(R)
double p_y
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-11-25 19:51 贝叶斯分类\
目录 0 2016-12-10 12:10 贝叶斯分类\.idea\
文件 686 2016-11-22 14:52 贝叶斯分类\.idea\compiler.xm
目录 0 2016-11-25 19:51 贝叶斯分类\.idea\copyright\
文件 76 2016-11-22 14:52 贝叶斯分类\.idea\copyright\profiles_settings.xm
文件 97 2016-11-22 14:52 贝叶斯分类\.idea\desc
文件 529 2016-11-22 14:52 贝叶斯分类\.idea\misc.xm
文件 277 2016-11-22 14:53 贝叶斯分类\.idea\modules.xm
文件 91 2016-11-22 14:52 贝叶斯分类\.idea\project-template.xm
文件 39217 2016-12-07 13:52 贝叶斯分类\.idea\workspace.xm
文件 6249 2016-11-22 15:05 贝叶斯分类\balance-scale.data
目录 0 2016-11-22 20:01 贝叶斯分类\out\
目录 0 2016-11-22 20:01 贝叶斯分类\out\production\
目录 0 2016-11-22 20:01 贝叶斯分类\out\production\贝叶斯分类\
目录 0 2016-11-22 20:01 贝叶斯分类\out\production\贝叶斯分类\com\
目录 0 2016-11-25 19:51 贝叶斯分类\out\production\贝叶斯分类\com\company\
文件 6249 2016-11-22 20:19 贝叶斯分类\out\production\贝叶斯分类\com\company\balance-scale.data
文件 4739 2016-11-23 16:23 贝叶斯分类\out\production\贝叶斯分类\com\company\Bayes.class
文件 451 2016-11-23 16:23 贝叶斯分类\out\production\贝叶斯分类\com\company\Jmy.class
目录 0 2016-11-22 20:01 贝叶斯分类\src\
目录 0 2016-11-22 20:01 贝叶斯分类\src\com\
目录 0 2016-12-07 13:49 贝叶斯分类\src\com\company\
文件 6249 2016-11-22 15:05 贝叶斯分类\src\com\company\balance-scale.data
文件 5530 2016-11-23 16:23 贝叶斯分类\src\com\company\Bayes.java
文件 437 2016-11-22 14:52 贝叶斯分类\贝叶斯分类.iml
- 上一篇:3D俄罗斯方块
- 下一篇:Java实现BP神经网络,实现对空气质量的分析和评级
评论
共有 条评论