如何用java训练mahout?

时间:2013-07-02 08:45:08

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

我需要按功能创建分类器,我有15M行数据,如:

{
    "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

来实现

1 个答案:

答案 0 :(得分:0)

互联网上很少有关于Mahout的资料。我在Mahout in Action中提到了Mahout源代码和源代码。

您可以参考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());
    }