2015-11-16 4 views
0

Мне трудно понять, как я могу взаимодействовать с Mahout. У меня есть этот тестовый код для обучения и тестирования с наивной классификацией Байеса. Я хочу измерить время, необходимое для обучения, и я хочу прочитать значение точности из моего выходного файла. У меня нет реальной подсказки, как читать выходной файл или измерять время, потраченное на то, чтобы учиться в хорошем манере (так что я могу, возможно, запустить этот скрипт автоматически 10 раз, например). Любая помощь приветствуется!Mahout Benchmark

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

Вы должны обновить версию Mahout до 0.11.1. Параметр 'trainnb -el' был удален в Mahout 0.10.0, а до 0.10.0 была ошибка в опции' -c' для обучения дополнительной модели. –

ответ

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 вашего (скорректированного) сценария в текстовый файл и, например, выполнить. средняя точность по количеству прогонов (по grepping для «Accuracy» и т. д.). Если вы не хотите измерять время настенных часов всего трубопровода, я бы предложил только запустить seqdirectory и seq2sparse один раз, так как эти шаги съедают много времени и зацикливают splittrainnb и 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. Это мое более полезное в определении точности.