【问题标题】:How to train mahout with java?如何用java训练mahout?
【发布时间】:2013-06-29 13:26:15
【问题描述】:

我需要按特征创建分类器,我有 1500 万行数据,例如:

{
    "app_entertainment" : 1,
    "app_widgets" : 2,
    "arcade" : 8,
    "books_and_reference" : 2,
    "comics" : 0,
    "brain" : 20,
    "business" : 0,
    "cards" : 5,
    "casual" : 1,
    "communication" : 4,
    "education" : 0,
    "finance" : 1,
    "game_wallpaper" : 0,
    "game_widgets" : 0,
    "health_fitness" : 0,
    "libraries_demo" : 0,
    "racing" : 1,
    "lifestyle" : 1,
    "media_video" : 0,
    "medical" : 0,
    "music_and_audio" : 7,
    "news_magazines" : 2,
    "personalization" : 1,
    "photography" : 0,
    "productivity" : 4,
    "shopping" : 1,
    "social" : 1,
    "sports_apps" : 1,
    "sports_games" : 7,
    "tools" : 15,
    "transportation" : 2,
    "travel_and_local" : 8,
    "weather" : 3,
    "app_wallpaper" : 0,
    "entertainment" : 0,
    "health_and_fitness" : 0,
    "libraries_and_demo" : 0,
    "media_and_video" : 0,
    "news_and_magazines" : 0,
    "sports" : 0
}

对于这样的每个数据集,我也知道它是真是假, 布尔值是拥有此数据集的用户是否点击了广告。

如何使用 mahout 训练分类器,训练后如何分类?

我在网上找到的一切都非常抽象,如何通过 java 做的例子并不多

【问题讨论】:

  • 你试过什么
  • 我试图弄清楚如何训练它
  • 你试图弄清楚如何训练它? 你在哪里卡住了,错误是什么?

标签: java data-mining data-modeling classification mahout


【解决方案1】:

网上关于 Mahout 的资料很少。我参考了 Mahout 源码和Mahout in Action中的源码。

分类可以参考20newsgroup源码。

使用 NavieBayes 分类器的简单示例。向量就是数据集。

public List<String> classifyCase(Vector vector) {
        TreeMap<Double, String> resultMap = new TreeMap<Double, String>();
        Vector result = classifier.classifyFull(vector);
        for (Vector.Element element: result) {
            int categoryId = element.index();
            double score = element.get();
            resultMap.put(-score, labels.get(categoryId));
        }

        return new ArrayList<String>(resultMap.values());
    }

【讨论】:

  • 这是我见过的最糟糕的例子,我需要一个简单的代码示例来说明如何训练和如何分类,这不好
  • 为什么你认为这是最坏的情况?我想大多数人会参考这些示例来编写 Java 代码,因为网上的示例很少。
  • 因为不是用 4-5 行训练来做一些简单的例子,而是展示如何从文件目录中进行操作,我不需要它,而且它非常令人困惑,我知道如何从文件中读取,但是他们把它塞进了例子中,使它不可读......
  • 我猜你的意思是 HDFS 编码。 Mahout 使用 Hadoop,因此有许多 FileSystem 编码。但是您可以忽略这些代码,并在本地运行 Mahout。基本上,您可以只使用 Configuration c = new COConfiguration();文件系统 fs = FileSystem.get(配置);那么就不需要考虑其他Hadoop相关的代码了
猜你喜欢
  • 2015-04-07
  • 2012-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
  • 2017-04-20
相关资源
最近更新 更多