1,weka文件读取分3类,分别为:ARFF(weka自身文件读取),CSV(文本文件读取),数据库直接读取
1.1,ARFF(weka自身文件读取),比较容易直接使用Instances类即可
1.2,CSV文件读取需要使用dataSource类
import java.io.BufferedReader;
import java.io.FileReader;
import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSource;
public class readfile {
public static void main(String[] args) throws Exception {
/*
* arff文件读入
*/
Instances date=new Instances(new BufferedReader(new FileReader("data\\ionosphere.arff")));
date.setClassIndex(date.numAttributes()-1);
System.out.println(date);
/*
* CSV文件读入
*/
DataSource source =new DataSource("data\\testcsv.csv");
Instances data=source.getDataSet();
if(data.classIndex()==-1)
data.setClassIndex(data.numAttributes()-1);
System.out.println(data);
}
}
2,weka中文件导出,导出格式应该只有ARFF一种,即weka自身文件格式
import weka.core.Instances;
import weka.core.converters.ArffSaver;
import weka.core.converters.CSVLoader;
import java.io.File;
public class CSV2ARFF {
/**
* takes 2 arguments:
* - CSV input file
* - ARFF output file
*/
public static void main(String[] args) throws Exception {
// load CSV
CSVLoader loader = new CSVLoader();
loader.setSource(new File("data\\testcsv.csv"));
Instances data = loader.getDataSet();
data.setClassIndex(2);
// save ARFF
ArffSaver saver = new ArffSaver();
saver.setInstances(data);
saver.setFile(new File("data\\testcsv.arff"));
//saver.setDestination(new File(args[1]));
saver.writeBatch();
}
}