【发布时间】:2015-08-02 23:33:10
【问题描述】:
我有一个 CSV 文件,我想将其转换为 SequenceFile 以用于使用随机森林算法的分类任务。我该如何使用 mahout 0.10 和 netbeans?
我的数据包含数值和标称值: http://archive.ics.uci.edu/ml/machine-learning-databases/00296/
【问题讨论】:
标签: java csv mahout random-forest
我有一个 CSV 文件,我想将其转换为 SequenceFile 以用于使用随机森林算法的分类任务。我该如何使用 mahout 0.10 和 netbeans?
我的数据包含数值和标称值: http://archive.ics.uci.edu/ml/machine-learning-databases/00296/
【问题讨论】:
标签: java csv mahout random-forest
使用 uniVocity-parsers 中的 CSV 解析器读取您的文件。
我快速浏览了您的文件,您可以很容易地将这些“否”、“是”和“无”值转换为布尔值/空值:
ObjectRowListProcessor rowProcessor = new ObjectRowListProcessor();
rowProcessor.convertFields(Conversions.toBoolean("yes", "no")).set("metformin-rosiglitazone","metformin-pioglitazone","change","diabetesMed","readmitted")); //and all other fields where this makes sense.
rowProcessor.convertFields(Conversions.toLowerCase(), Conversions.toNull("none", "?")).set("another field", "and another field");
CsvParserSettings parserSettings = new CsvParserSettings();
parserSettings.setRowProcessor(rowProcessor);
parserSettings.setHeaderExtractionEnabled(true);
CsvParser parser = new CsvParser(parserSettings);
//the rowProcessor will be executed here.
parser.parse(YOUR_INPUT_HERE);
List<Object[]> rows = rowProcessor.getRows();
如果您更喜欢带有注释的对象,您可以使用BeanListProcessor,详细说明为here。也许这对你来说是最好的方法。
披露:我是这个库的作者。它是开源免费的(Apache V2.0 许可)。
【讨论】: