我正在为 Map Reduce 中的每个数据集制作 SVM 模型(为此我正在使用 LibSVM 库)。甚至,我有每个模型的测试结果。 测试结果文件包含以下详细信息。(IT 给出关于测试结果的预测)
+1
-1
+1
+1
..
..
+1
我有这样的 5 个测试文件。现在我想在 map reduce 中使用多数投票结合测试结果。 在 map 阶段,我想将行号作为 key 的值。如何在映射阶段为所有测试文件提供行号作为值。
最佳答案
我不知道你是否需要 MapReduce 来完成这个任务,但如果你确实需要在 MapReduce 中完成它,我会只使用 Map-only 作业,甚至没有输出文件。仅使用两个计数器(我没有找到 decrCounter
方法并且 incrCounter
不能取负值)。这是一个简单的伪代码:
enum MyCounter = {POSITIVES, NEGATIVES};
map(LongWritable key, Text value, Reporter reporter) {
if (value.toString().equals("+1")) {
reporter.incrCounter(MyCounter.POSITIVES, 1);
} else {
reporter.incrCounter(MyCounter.NEGATIVES, 1);
}
}
然后,如果 POSITIVES > NEGATIVES
,则 +1 获胜!
如果你不需要MapReduce,你可以只计算所有文件的行数,例如在 Linux 中使用 wc -l
命令,然后计算具有 +1 的行,例如使用 grep -c
。
关于hadoop - map reduce 中的集成 SVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22342302/