代码之家  ›  专栏  ›  技术社区  ›  Greg

使用Weka Java代码-如何将CSV(没有标题行)转换为ARFF格式?

  •  4
  • Greg  · 技术社区  · 15 年前

    我正在使用Weka Java库 读入CSV文件 将其转换为ARFF文件

    问题是 ,仅数据。导入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 回复  |  直到 15 年前
        1
  •  6
  •   michaeltwofish    15 年前

    之后 你看了文件。

    CSVLoader假设CSV的第一行是头。如果这是一个实例,它将使用该实例数据作为标题行,而不是作为实例数据,这绝对不是您想要的。

    在上面的代码之前,您需要读入文件,写一个标题行,然后再次保存文件。

    看到了吗 my answer to your question on the weka mailing list .

        2
  •  3
  •   maledr53    11 年前

    如果数据中没有标题行,则可以使用选项-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

        3
  •  1
  •   user2648246 user2648246    11 年前

    我的解决方案:

    SELECT 'nameColumn1','nameColumn2'
    UNION
    SELECT idColumn1,idColumn2
    FROM path
     INTO OUTFILE '/tmp/w.csv'
     FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
     LINES TERMINATED BY '\n';
    

    推荐文章