Mahout分類演算法學習之實現Naive Bayes分類示例
1.簡介
(1) 貝葉斯分類器的分類原理髮源於古典概率理論,是通過某物件的先驗概率,利用貝葉斯公式計算出其後驗概率,即該物件屬於某一類的概率,選擇具有最大後驗概率的類作為該物件所屬的類。樸素貝葉斯分類器(Naive Bayes Classifier)做了一個簡單的假定:給定目標值時屬性之間相互條件獨立,即給定元組的類標號,假定屬性值有條件地相互獨立,即在屬性間不存在依賴關係。樸素貝葉斯分類模型所需估計的引數很少,對缺失資料不太敏感,演算法也比較簡單。(2) Mahout 實現了Traditional Naive Bayes 和Complementary Naive Bayes,後者是在前者的基礎上增加了結果分析功能(Result Analyzer).
(3) 主要相關的Mahout類:
org.apache.mahout.classifier.naivebayes.NaiveBayesModel
org.apache.mahout.classifier.naivebayes.StandardNaiveBayesClassifier
org.apache.mahout.classifier.naivebayes.ComplementaryNaiveBayesClassifier
2.資料
使用20 newsgroups data (http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz) ,資料集按時間分為訓練資料和測試資料,總大小約為85MB,每個資料檔案為一條資訊,檔案頭部幾行指定訊息的傳送者、長度、型別、使用軟體,以及主題等,然後用空行將其與正文隔開,正文沒有固定的格式。
3.目標
根據新聞文件內容,將其分到不同的文件型別中。
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) 資料準備
①將20news-bydate.tar.gz解壓,並將20news-bydate中的所有子文夾中的內容複製到20news-all中,該步驟已經完成,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建立序列檔案(sequence files)
user@hadoop:~/workspace$mahout seqdirectory -i 20news-all -o 20news-seq
④將序列檔案轉化為向量
user@hadoop:~/workspace$mahout seq2sparse -i ./20news-seq -o ./20news-vectors -lnorm -nv -wt tfidf
⑤將向量資料集分為訓練資料和檢測資料,以隨機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
結果如下:
(4)檢測模型分類效果
user@hadoop:~/workspace$mahout testnb -i ./20news-test-vectors -m ./model -l ./labelindex -ow -o ./20news-testing -c
結果如下:
(5)檢視結果,將序列檔案轉化為文字
user@hadoop:~/workspace$mahout seqdumper -i ./20news-testing/part-m-00000 -o ./20news_testing.res
user@hadoop:~/workspace$cat 20news_testging.res
結果如下:
相關文章
- ML.NET 示例:多類分類之問題分類
- ML.NET 示例:多類分類之鳶尾花分類
- 機器學習--有監督學習--分類演算法(預測分類)機器學習演算法
- 【機器學習】--xgboost初始之程式碼實現分類機器學習
- 概率分類之樸素貝葉斯分類(垃圾郵件分類python實現)Python
- pytorch深度學習分類程式碼簡單示例PyTorch深度學習
- Python機器學習 — 樸素貝葉斯演算法(Naive Bayes)Python機器學習演算法AI
- 機器學習演算法(二): 樸素貝葉斯(Naive Bayes)機器學習演算法AI
- 深度學習(二)之貓狗分類深度學習
- 強化學習分類強化學習
- 機器學習3-分類演算法機器學習演算法
- Pytorch實現分類器PyTorch
- 機器學習4-分類演算法2機器學習演算法
- 系統學習NLP(十九)--文字分類之FastText文字分類AST
- 深度學習(四)之電影評論分類深度學習
- 深度學習(一)之MNIST資料集分類深度學習
- 《機器學習Python實現_10_06_整合學習_boosting_gbdt分類實現》機器學習Python
- 通用mapper和分類實現APP
- 破解垃圾分類難題,智慧分類如何實現最優解?
- 機器學習演算法筆記之4:貝葉斯分類器機器學習演算法筆記
- 機器學習經典演算法之樸素貝葉斯分類機器學習演算法
- 《機器學習Python實現_10_02_整合學習_boosting_adaboost分類器實現》機器學習Python
- Bert文字分類實踐(一):實現一個簡單的分類模型文字分類模型
- VR垃圾分類體驗系統:學習垃圾分類知識科普VR
- 整合學習(1)AdaBoost分別應用於分類和迴歸及其python實現Python
- 機器學習之樸素貝葉斯分類機器學習
- codetop演算法分類演算法
- 分類演算法-邏輯迴歸與二分類演算法邏輯迴歸
- PHP實現無限極分類PHP
- 深度學習專案實戰:垃圾分類系統深度學習
- 從零開始學機器學習——瞭解分類演算法機器學習演算法
- 遷移學習時間序列分類遷移學習
- IO模型學習(一)IO模型分類模型
- 【機器學習】支援向量機分類機器學習
- 京東獲得jd商品分類API介面(父分類、根分類、子分類)API
- 關於Java異常的分類示例Java
- 壞人分類學
- KNN演算法——分類部分KNN演算法
- 分類演算法-AdaBoot 演算法演算法boot