Mahout分类算法学习之实现Naive Bayes分类示例
生活随笔
收集整理的這篇文章主要介紹了
Mahout分类算法学习之实现Naive Bayes分类示例
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.簡介
(1) 貝葉斯分類器的分類原理發(fā)源于古典概率理論,是通過某對象的先驗概率,利用貝葉斯公式計算出其后驗概率,即該對象屬于某一類的概率,選擇具有最大后驗概率的類作為該對象所屬的類。樸素貝葉斯分類器(Naive Bayes Classifier)做了一個簡單的假定:給定目標值時屬性之間相互條件獨立,即給定元組的類標號,假定屬性值有條件地相互獨立,即在屬性間不存在依賴關(guān)系。樸素貝葉斯分類模型所需估計的參數(shù)很少,對缺失數(shù)據(jù)不太敏感,算法也比較簡單。(2) Mahout 實現(xiàn)了Traditional Naive Bayes 和Complementary Naive Bayes,后者是在前者的基礎(chǔ)上增加了結(jié)果分析功能(Result Analyzer).
(3) 主要相關(guān)的Mahout類:
org.apache.mahout.classifier.naivebayes.NaiveBayesModel
org.apache.mahout.classifier.naivebayes.StandardNaiveBayesClassifier
org.apache.mahout.classifier.naivebayes.ComplementaryNaiveBayesClassifier
2.數(shù)據(jù)
使用20 newsgroups data (http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz) ,數(shù)據(jù)集按時間分為訓練數(shù)據(jù)和測試數(shù)據(jù),總大小約為85MB,每個數(shù)據(jù)文件為一條信息,文件頭部幾行指定消息的發(fā)送者、長度、類型、使用軟件,以及主題等,然后用空行將其與正文隔開,正文沒有固定的格式。
3.目標
根據(jù)新聞文檔內(nèi)容,將其分到不同的文檔類型中。
4.程序
使用Mahout自帶示例程序,主要的訓練類和測試類分別為TrainNaiveBayesJob.java和TestNaiveBayesDriver.java,JAR包為mahout-core-0.7-job.jar,詳細代碼見(mahout-distribution-0.7/core/src/main/java/org/apache/mahout/classifier/naivebayes/trainning,mahout-distribution-0.7/core/src/main/java/org/apache/mahout/classifier/naivebayes/test).
5.步驟
(1) 數(shù)據(jù)準備
①將20news-bydate.tar.gz解壓,并將20news-bydate中的所有子文夾中的內(nèi)容復制到20news-all中,該步驟已經(jīng)完成,20news-all文件夾存放在hdfs:/share/data/ Mahout_examples_Data_Set中
②將20news-all放在hdfs的用戶根目錄下
user@hadoop:~/workspace$hadoop dfs -cp /share/data/Mahout_examples_Data_Set/20news-all .
③從20newsgroups data創(chuàng)建序列文件(sequence files)
user@hadoop:~/workspace$mahout seqdirectory -i 20news-all -o 20news-seq
④將序列文件轉(zhuǎn)化為向量
user@hadoop:~/workspace$mahout seq2sparse -i ./20news-seq -o ./20news-vectors ?-lnorm -nv ?-wt tfidf ?
⑤將向量數(shù)據(jù)集分為訓練數(shù)據(jù)和檢測數(shù)據(jù),以隨機40-60拆分
user@hadoop:~/workspace$mahout split -i ./20news-vectors/tfidf-vectors --trainingOutput ./20news-train-vectors --testOutput ./20news-test-vectors --randomSelectionPct 40 --overwrite --sequenceFiles -xm sequential
(2)訓練樸素貝葉斯模型
user@hadoop:~/workspace$mahout trainnb -i ?./20news-train-vectors -el -o ./model -li ./labelindex -ow -c ?(3)檢驗樸素貝葉斯模型
user@hadoop:~/workspace$mahout testnb -i ./20news-train-vectors -m ./model -l ./labelindex -ow -o 20news-testing -c
結(jié)果如下:
(4)檢測模型分類效果
user@hadoop:~/workspace$mahout testnb -i ./20news-test-vectors -m ./model -l ./labelindex -ow -o ./20news-testing -c
結(jié)果如下:
(5)查看結(jié)果,將序列文件轉(zhuǎn)化為文本
user@hadoop:~/workspace$mahout seqdumper -i ./20news-testing/part-m-00000 -o ./20news_testing.res
user@hadoop:~/workspace$cat 20news_testging.res
結(jié)果如下:
總結(jié)
以上是生活随笔為你收集整理的Mahout分类算法学习之实现Naive Bayes分类示例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CRC32算法详细推导(2)
- 下一篇: 通才和专家:如何选择