Использование Weka Java Code - Как конвертировать CSV (без строки заголовка) в формат ARFF? - PullRequest
4 голосов
/ 19 августа 2010

Я использую библиотеку 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, чтобы понять это, но не смог 'сделать из него головы или хвосты: - (

Ответы [ 3 ]

5 голосов
/ 19 августа 2010

Краткий ответ: вы не можете назначать имена атрибутов после , которую вы прочитали в файле.

CSVLoader предполагает, что первая строка CSV является заголовком.Если это экземпляр, он будет использовать эти данные экземпляра в качестве строки заголовка, а не в качестве данных экземпляра, что, безусловно, не то, что вам нужно.

Перед приведенным выше кодом вам нужно прочитать файл, написатьстроку заголовка и снова сохраните файл.

См. мой ответ на ваш вопрос в списке рассылки weka .

2 голосов
/ 10 апреля 2014

Вы можете использовать опцию -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

1 голос
/ 20 ноября 2013

Мое решение:

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.

...