zz weka 例子

 

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();可以试试 不过注意数据的离散化。

 

你可能感兴趣的:(java,eclipse,String,测试,library,classification)