我正在使用Weka Java库来读取CSV文件并将其转换为ARFF文件。
问题是 CSV文件没有标题行,只有数据。我带入CSV文件后如何分配属性名称? (所有列都是字符串数据类型)
这是我到目前为止的代码:
CSVLoader loader = new CSVLoader();
loader.setSource(new File(CSVFilePath));
Instances data = loader.getDataSet();
ArffSaver saver = new ArffSaver();
saver.setInstances(data);
saver.setFile(new File(outputFilePath));
saver.writeBatch();
我尝试通过Weka源代码来解决这个问题,但我无法做出正面或反面: - (
答案 0 :(得分:5)
简短的回答是,在中读取文件之后,您无法指定的属性名称。
CSVLoader假定CSV的第一行是标题。如果这是一个实例,它将使用该实例数据作为标题行而不是实例数据,这绝对不是您想要的。
在上面的代码之前,你需要读入文件,写一个标题行,然后再次保存文件。
答案 1 :(得分:2)
如果数据中没有标题行,则可以使用-H选项。
CSVLoader loader = new CSVLoader();
loader.setSource(new File(CSVFilePath));
String[] options = new String[1];
options[0] = "-H";
loader.setOptions(options);
Instances data = loader.getDataSet();
请参阅: http://weka.sourceforge.net/doc.dev/weka/core/converters/CSVLoader.html
答案 2 :(得分:1)
我的解决方案:
SELECT 'nameColumn1','nameColumn2'
UNION
SELECT idColumn1,idColumn2
FROM path
INTO OUTFILE '/tmp/w.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';
nameColumn1和nameColumn2是将显示为csv文件第一行的列标题。