Mahout 0.9:使用自己的测试集而不是使用拆分命令

Posted

技术标签:

【中文标题】Mahout 0.9:使用自己的测试集而不是使用拆分命令【英文标题】:Mahout 0.9: Using own test set instead of using split command 【发布时间】:2015-01-07 17:07:59 【问题描述】:

我已经参考了这两个链接来运行 mahout NB 分类器

[1]http://tharindu-rusira.blogspot.com/2014/01/naive-bayes-classification-apache-mahout.html [2]http://chimpler.wordpress.com/2013/03/13/using-the-mahout-naive-bayes-classifier-to-automatically-classify-twitter-messages/

我想使用我自己的测试集,而不是让 mahout 将我的数据分成训练集和测试集 (80:20)。我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

取两个数据集用于训练和一个用于测试。

在两组上运行以下命令: 1. seq目录 2. seq2sparse

现在您将为两个数据集生成向量。 - 使用第一个数据集的向量输出运行 trainnb 命令。因此,我们不是在 80% 的数据上训练模型,而是使用整个数据集。 - 使用第二个数据集的向量输出运行 testnb 命令。这不是 20% 的数据,它是全新的数据集,仅用于测试。

因此,我们没有使用 mahout 拆分,而是指定了自己的数据集来测试您的模型。

【讨论】:

这听起来很明智,这就是我所做的。但是我得到的结果与 Mahout 以相似百分比划分结果时得到的结果完全不同——我有四个类别,它决定所有内容都来自其中一个类别,而不是正确划分它们(因为它或多或少做了当它划分输入时) 我的猜测是这与标签索引有关——测试集和训练集的标签不匹配。这听起来有道理吗? 是的,标签必须相同。我们应该使用我们用于训练的同一组标签来测试模型。 不幸的是,当我查看标签(使用 seqdumper)时,它们是相同的。我不知道为什么,但该模型将所有内容归类为“其他”(我的四个类别之一) - 而当我使用 split 时,它以 80% 的准确率识别它们。 当您使用不同的数据集运行测试时,您获得的准确度百分比是多少?你确定你的测试数据有类似的标签吗?

以上是关于Mahout 0.9:使用自己的测试集而不是使用拆分命令的主要内容,如果未能解决你的问题,请参考以下文章

Mahout 0.9 CVB 文档主题映射错误

何时使用 STL 位集而不是单独的变量?

如何将 Mahout KMeans 集群集成到应用程序中?

数据挖掘---推荐算法(Mahout工具)

《OD大数据实战》Mahout入门实例

MS ACCESS:打印基于记录集而不是 record_ID 的报告