我发现很难理解我如何与Mahout互动。我有这个测试代码用naives贝叶斯分类进行训练和测试。 我想测量训练所需的时间,我想从输出文件中读出准确度值。我没有真正的线索如何读取输出文件或测量好学习所花费的时间(所以我可以自动运行这个脚本10次)。任何帮助表示赞赏!
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
答案 0 :(得分:0)
mahout testnb
将显示已训练模型在给定数据集上的性能的混淆矩阵和分类统计信息。它实际上并没有将任何文件输出到目录。
您提供的-o ${WORK_DIR}/output-testing
参数实际上未使用,因此:
mahout testnb -i ${WORK_DIR}/test-vectors -m ${WORK_DIR}/model -l ${WORK_DIR}/labelindex -ow -o ${WORK_DIR}/output-testing -c
应更改为:
mahout testnb -i ${WORK_DIR}/test-vectors -m ${WORK_DIR}/model -l ${WORK_DIR}/labelindex -c
这将显示混淆矩阵和一些统计信息 - 如下所示:
=======================================================
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传输到文本文件并采取例如。平均准确度超过运行次数(通过按下" Accuracy"等)。如果您不想测量整个管道的挂钟时间,我建议只运行seqdirectory
和seq2sparse
一次,因为这些步骤会占用很多时间,并且会循环{{ 1}} split
和trainnb
。
对您的脚本进行一些调整:
testnb
请注意: Mahout有一个Spark implementation of Naive Bayes,可以从命令行和programmatically运行。这对我确定准确性更有用。