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 вашего (скорректированного) сценария в текстовый файл и, например, выполнить. средняя точность по количеству прогонов (по grepping для «Accuracy» и т. д.). Если вы не хотите измерять время настенных часов всего трубопровода, я бы предложил только запустить seqdirectory
и seq2sparse
один раз, так как эти шаги съедают много времени и зацикливают split
trainnb
и testnb
.
Пару корректировки вашего скрипта:
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 имеет Spark implementation of Naive Bayes, которая может быть запущена как из командной строки и programmatically. Это мое более полезное в определении точности.
Вы должны обновить версию Mahout до 0.11.1. Параметр 'trainnb -el' был удален в Mahout 0.10.0, а до 0.10.0 была ошибка в опции' -c' для обучения дополнительной модели. –