【问题标题】:How to parse a CSV file so that can be classified by Mahout如何解析 CSV 文件,以便可以被 Mahout 分类
【发布时间】:2014-07-25 05:56:41
【问题描述】:

我正在尝试使用 Mahout 对 CSV 文件进行分类,我的理解是,首先我需要将 CSV 中的数据转换为向量,然后可以由其中一种 mahout 分类算法使用。我的 CSV 文件包含文本和类似单词的值以及多个类。

我在这里搜索并找到了一些关于如何执行此操作的模糊解释,但找不到任何示例。谁能提供一个简单的例子来说明如何做到这一点?或者是否有任何实用程序可以为您执行此操作?

我以为这将是一项非常常见的任务,但实际上找不到任何明确的例子。

任何帮助将不胜感激。

【问题讨论】:

  • 显然CSVVectorIterator 迭代一个CSV文件并产生org.apache.mahout.math.Vector

标签: java csv vector classification mahout


【解决方案1】:

你有一些文本和类似单词的价值,所以你应该使用 20 个新闻组的例子来获得灵感。这是一个很好的示例,您可以轻松地从中复制带有 csv 文件的代码。

这是 20 新闻组最新版本的 mahout 的工作链接:

https://github.com/jpatanooga/MahoutExamples/blob/master/src/main/java/com/cloudera/mahout/classification/sgd/TwentyNewsgroups.java

countWords 方法只是根据 TokenSream 对象的变化进行了调整,这是最新版本 Mahout 的工作代码:

private static void countWords(Analyzer analyzer, Collection<String> words, Reader in) throws IOException {

        // use the provided analyzer to tokenize the input stream
        TokenStream ts = analyzer.tokenStream("text", in);
        ts.addAttribute(CharTermAttribute.class);
        ts.reset();

        // for each word in the stream, minus non-word stuff, add word to collection
        while (ts.incrementToken()) {
            String s = ts.getAttribute(CharTermAttribute.class).toString();
            words.add(s);
        }
        ts.end();
        ts.close();

        /*overallCounts.addAll(words);*/
    } 

希望对你有所帮助。我用这个例子来适应一个 CSV 文件并且它有效。

【讨论】:

  • 谢谢。只是一个问题,您使用什么方法来读取 csv 文件,一些 mahout 库,例如 CSVVectorIterator ?还是您编写了自己的 csv 阅读器?谢谢。
  • 我更喜欢使用普通的 csv 阅读器,我在其中逐行读取每个输入并将其添加到 mahout 向量中。我认为这不是最优化的解决方案,您可以尝试使用 mahout 库。
猜你喜欢
  • 1970-01-01
  • 2014-12-02
  • 1970-01-01
  • 2012-12-22
  • 1970-01-01
  • 1970-01-01
  • 2012-11-20
  • 2017-10-18
  • 2011-09-21
相关资源
最近更新 更多