weka 是很好用的机器学习库,这里就不 详细介绍 了。
言归正传,要使用程序方式使用weka ,步骤如下:
一、 在eclipse 里新建一个java project :
1. 建立工程:单击菜单中file->new->java project ,在弹出对话框的project name 中起任意一个名字,此处假设是wekaTest 。单击Finish 按钮(在对话框底部)。
2. 建立package :在package Explorer 中找到刚才新建的工程,在其上右键->New->package 。在Name 文本框里面输入名称,此处假设为Test 。单击Finish 按钮。
3. 建立程序文件:在刚才新建的package 上面右键->New->class ,选中public static void main(String[] args) 多选框,单击Finish 。
二、 在该工程中添加weka 的引用:
1. package Explorer 中工程名上右键,选择弹出菜单最后一项properties-> 在左面选中java Build Path-> 在右面的Library 页面-> 单击Add External JARs…-> 浏览weka 所在目录,将weka.jar 添加进来,然后单击ok 。
2. 在package Explorer 中在双击Test 文件,然后在package wekaTest; 一句下面添加四句代码:
import java.io.File;
import weka.classifiers.Classifier;
import weka.classifiers.trees.J48;
import weka.core.Instances;
import weka.core.converters.ArffLoader;
三、 在程序中添加weka 调用代码:
将以下代码添加到Main 函数中(在// TODO Auto-generated method stub 下面):
Classifier m_classifier = new J48();
File inputFile = new File( "D://Program Files//Weka-3-6//data//cpu.with.vendor.arff" ); // 训练语料文件
ArffLoader atf = new ArffLoader();
atf.setFile(inputFile);
Instances instancesTrain = atf.getDataSet(); // 读入训练文件
inputFile = new File( "D://Program Files//Weka-3-6//data//cpu.with.vendor.arff" ); // 测试语料文件
atf.setFile(inputFile);
Instances instancesTest = atf.getDataSet(); // 读入测试文件
instancesTest.setClassIndex(0); // 设置分类属性所在行号(第一行为 0 号), instancesTest.numAttributes() 可以取得属性总数
double sum = instancesTest.numInstances(), // 测试语料实例数
right = 0.0f;
instancesTrain.setClassIndex(0);
m_classifier.buildClassifier(instancesTrain); // 训练
for ( int i = 0;i<sum;i++) // 测试分类结果
{
if (m_classifier.classifyInstance(instancesTest.instance(i))==instancesTest.instance(i).classValue()) // 如果预测值和答案值相等(测试语料中的分类列提供的须为正确答案,结果才有意义)
{
right++; // 正确值加 1
}
}
System. out .println( "J48 classification precision:" +(right/sum));
四、 运行一下试试。
加上BayesNet b_classifier = new BayesNet();可以试试 不过注意数据的离散化。