为什么不制作一个包含两个原始数据的新 ARFF 文件?一个简单的
cat 1.arff > tmp.arff
tail -n+20 2.arff >> tmp.arff
where20
被您的 arff 标头的长度所取代。然后,这将生成一个包含所有所需实例的新 arff 文件,您可以使用现有代码读取这个新文件:
Instances iNew = new ConverterUtils.DataSource(name).getDataSet();
您还可以使用以下文档在命令行上调用 weka:http: //old.nabble.com/how-to-merge-two-data-file-a.arff-and-b.arff-into-one-data -list--td22890856.html
java weka.core.Instances append filename1 filename2 > output-file
但是,文档http://weka.sourceforge.net/doc.dev/weka/core/Instances.html#main%28java.lang.String中没有允许您在本地附加多个 arff 文件的功能爪哇代码。从 Weka 3.7.6 开始,附加两个 arff 文件的代码如下:
// read two files, append them and print result to stdout
else if ((args.length == 3) && (args[0].toLowerCase().equals("append"))) {
DataSource source1 = new DataSource(args[1]);
DataSource source2 = new DataSource(args[2]);
String msg = source1.getStructure().equalHeadersMsg(source2.getStructure());
if (msg != null)
throw new Exception("The two datasets have different headers:\n" + msg);
Instances structure = source1.getStructure();
System.out.println(source1.getStructure());
while (source1.hasMoreElements(structure))
System.out.println(source1.nextElement(structure));
structure = source2.getStructure();
while (source2.hasMoreElements(structure))
System.out.println(source2.nextElement(structure));
}
因此,看起来 Weka 本身只是简单地遍历数据集中的所有实例并打印它们,这与您的代码使用的过程相同。