0

我需要按特征创建分类器,我有 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 进行操作的示例并不多

4

1 回答 1

0

网上关于 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());
    }
于 2013-07-02T14:14:01.533 回答