首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mahout基准测试

Mahout基准测试
EN

Stack Overflow用户
提问于 2015-11-16 17:49:16
回答 1查看 75关注 0票数 0

我发现很难理解如何与Mahout交互。我使用这个测试代码来训练和测试朴素贝叶斯分类。我想测量训练所需的时间,并从输出文件中读取精确值。我不知道如何读取输出文件,也不知道如何以一种好的方式测量学习所需的时间(例如,我可能会自动运行此脚本10次)。如有任何帮助,我们不胜感激!

代码语言:javascript
运行
复制
export WORK_DIR=/user/hue/Bayes-Test/newTestData
mahout seqdirectory -i ${WORK_DIR}/data-all -o ${WORK_DIR}/data-seq -ow 
mahout seq2sparse -i ${WORK_DIR}/data-seq -o ${WORK_DIR}/data-vectors -lnorm -nv -wt tfidf
mahout split -i ${WORK_DIR}/data-vectors/tfidf-vectors  --trainingOutput ${WORK_DIR}/train-vectors  --testOutput ${WORK_DIR}/test-vectors -randomSelectionPct 99  --overwrite --sequenceFiles -xm sequential 
mahout trainnb -i ${WORK_DIR}/train-vectors -el -o ${WORK_DIR}/model -li ${WORK_DIR}/labelindex -ow -c
mahout testnb -i ${WORK_DIR}/test-vectors -m ${WORK_DIR}/model -l ${WORK_DIR}/labelindex -ow -o ${WORK_DIR}/output-testing -c
EN

回答 1

Stack Overflow用户

发布于 2015-11-18 06:01:31

mahout testnb将显示给定数据集上训练模型性能的混淆矩阵和分类统计信息。它实际上不会将任何文件输出到目录。

您提供的-o ${WORK_DIR}/output-testing参数实际上未使用,因此如下所示:

代码语言:javascript
运行
复制
mahout testnb -i ${WORK_DIR}/test-vectors -m ${WORK_DIR}/model -l ${WORK_DIR}/labelindex -ow -o ${WORK_DIR}/output-testing -c

应更改为:

代码语言:javascript
运行
复制
mahout testnb -i ${WORK_DIR}/test-vectors -m ${WORK_DIR}/model -l ${WORK_DIR}/labelindex -c

这将显示一个混淆矩阵和一些统计信息,如下所示:

代码语言:javascript
运行
复制
=======================================================
Statistics
-------------------------------------------------------
Kappa                                       0.8523
Accuracy                                   88.6853%
Reliability                                84.3296%
Reliability (standard deviation)            0.2171
Weighted precision                          0.8874
Weighted recall                             0.8869
Weighted F1 score                           0.8846

因此,如果你想进行多次运行,测试挂钟时间或准确度,或者两者兼而有之,你可以将(调整后的)脚本的stderr/stdout输出到一个文本文件中,并使用例如。运行次数的平均精确度(通过抓取“精确度”等)。如果您不打算测量整个管道的挂钟时间,我建议您只运行seqdirectoryseq2sparse一次,因为这些步骤会消耗大量时间,并循环split trainnbtestnb

对您的脚本进行一些调整:

代码语言:javascript
运行
复制
export WORK_DIR=/user/hue/Bayes-Test/newTestData
mahout seqdirectory -i ${WORK_DIR}/data-all -o {WORK_DIR}/data-seq -ow 
// use either -lnorm -n 2 (log L2 length normalization) or no normalization
mahout seq2sparse -i ${WORK_DIR}/data-seq -o ${WORK_DIR}/data-vectors -nv -wt tfidf
// adjust the randomSelectionPct down to 40 for a 60/40 train/test set
mahout split -i ${WORK_DIR}/data-vectors/tfidf-vectors  --trainingOutput ${WORK_DIR}/train-vectors  --testOutput ${WORK_DIR}/test-vectors -randomSelectionPct 40  --overwrite --sequenceFiles -xm sequential 
mahout trainnb -i ${WORK_DIR}/train-vectors -o ${WORK_DIR}/model -li ${WORK_DIR}/labelindex -ow -c
mahout testnb -i ${WORK_DIR}/test-vectors -m ${WORK_DIR}/model -l ${WORK_DIR}/labelindex  -c

请注意: Mahout有一个可以从命令行和programmatically运行的Spark implementation of Naive Bayes。这在确定准确性方面可能更有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33732418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档