本人也是借鉴网上他人资料。主要介绍使用java调用Weka库。
首先介绍weka,Weka的全名是怀卡托智能分析环境,是基于开源环境的机器学习和数据挖掘软件。我们可以去weka官网下载最新的Weka软件,目前最新版本是3.7.9。默认安装会保存
在C:\Program Files\Weka-3-7目录下,目录下有一个data的文件夹,里面存放的是一些数据集,我们也可以把data文件拷到别的地方更方便调用,这里面的数据可以用于我们学习Weka的使用。我们以data文件夹中的一个.arff文件为例对文件格式进行说明,如下图:
(1)关系声明
格式为@relation <relation-name>在文件的第一行,关系名称不能有空格,如有空格需要用加上引号。
(2)属性说明
格式为@attribute <attribute-name> <data-type>
attribute-name是属性名称,区分大小写。data-type是数据类型,常用类型有numeric(数值型:整数,小数等)nominal(分类型:举个例子如@attribute outlook{sunny,overcast,rainy},取值集合就是后面sunny,overcast,rainy)
(3)数据说明
数据信息以@data作为标志。
在@data下面的行中,每一行作为一个例子,包含了所以已经声明的属性,如果属性值为空则要求用“ ?”来代替
下面我们便使用java简单调用Weka使用,软件的使用在这里不介绍,这里只说明如何对weka进行2次开发。
Instances:我们可以认为它是数据集的实例集合。
package InstanceTest;
import weka.core.Instances;
import java.io.*;
public class InstanceTest {
/**
* @param args
*/
public static Instances GetInstance(String FileName)throws Exception
{
FileReader reader=new FileReader(FileName);
Instances data=new Instances(reader);
return data;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try
{
Instances date=GetInstance("D://train.arff");
// System.out.print(date); 全部输出数据集或者也可以使用numInstances循环输出
for(int i=0;i<date.numInstances();i++)
{
System.out.println(date.instance(i));
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}