Использование кода Weka Java - как преобразовать CSV (без строки заголовков) в формат ARFF?

StackOverflow https://stackoverflow.com/questions/3517186

  •  29-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

Видеть Мой ответ на ваш вопрос в списке рассылки Weka.

Другие советы

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

Мое решение:

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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top