使用说明 vector_Paddlepaddle学习|Ubuntu环境使用 Mahout 进行朴素贝叶斯模型的训练和测试...
樸素貝葉斯算法是基于貝葉斯定理與特征條件獨立假設的分類方法。分類是 將一個未知樣本分到幾個預先已知類的過程。解決數據分類問題有兩步:第一步, 建立一個模型,描述預先的數據集或概念集,通過分析由屬性描述的樣本(或實 例,對象等)來構造模型;第二步,假定每一個樣本都有一個預先定義的類,由 一個被稱為類標簽的屬性確定,為建立模型而被分析的數據元組形成訓練數據 集,該步也稱作有指導的學習。
接下來我們在Ubuntu系統使用 Mahout 進行樸素貝葉斯模型的訓練和測試。
(一)訓練模型
- root用戶
- 啟動hadoop
查看 ls /zhenghe-out/ 數據文件是否存在
- 將文本數據轉換成 SequenceFile
內置的seqdirectory命令可以完成 文本目錄到SequenceFile的轉換過程。 上述命令蘊含了2個大坑,在官方文檔中均沒有仔細說明:
(1) -xm sequential,表示在本地執行,而不是用MapReduce執行。如果是后者, 我們勢必要將這些小文件上傳到HDFS上,那樣的話,還要就不需要SequenceFile(序列文件)。
(2) 然而seqdirectory在執行的時候,并不因為十本地模式,就在本地文件系統上找。而是根據-i -o的文件系統前綴來判斷文件位置。也就是說,默認情況,依 然是在HDFS上查找的……所以,這個file://的前綴是非常有必要的。
其他2個參數: -c UTF8:編碼格式。
-chunk 64:64MB一個Chunk,應該和HDFS的BLOCK保持一致或者倍數關系。
- (4)在HDFS上創建目錄user/coder5
- 上傳序列文件(SequenceFile)到HDFS系統
查看結果
hdfs dfs -ls /user/coder5- 開始SequenceFile->Vector的轉換:
參數說明如下:
-ow( 或 --overwrite):即使輸出目錄存在,依然覆蓋。
--weight(或 -wt) tf:權重公式。(當LDA時建議使用tf )。
--maxDFPercent(或 -x) 85:過濾高頻詞,當DF大于85%時,將不在作為詞特征輸
出到向量中。
--namedVector (或-nv):向量會輸出附加信息。
其他可能有用的選項:
--analyzerName(或-a):指定其他分詞器。
–minDF:最小DF閾值。
–minSupport:最小的支持度閾值,默認為2。
–maxNGramSize(或-ng):是否創建ngram,默認為1。建議一般設定到2就夠了。
–minLLR(或 -ml):The minimum Log Likelihood Ratio。默認為1.0。當設定了-ng >
1后,建議設置為較大的值,只過濾有意義的N-Gram。
–logNormalize(或 -lnorm):是否對輸出向量做Log變換。
–norm(或 -n):是否對輸出向量做p-norm變換,默認不變換。
- 拆分數據(如果想拆分數據就執行1,不想拆分數據就執行2。可以兩種實驗 都做一下,然后使用正確率較高的model)
①想拆分數據就執行此步驟,將60%的數據用于訓練,40%用于測試。
mahout split -i /user/coder5/zhenghe-vectors/tfidf-vectors --trainingOutput /user/coder5/train --testOutput /user/coder5/test --randomSelectionPct 40 --overwrite --sequenceFiles -xm sequential9②不想拆分數據就執行此步驟。
hadoop fs -mkdir /user/coder5/trainW hadoop fs -mkdir /user/coder5/testW hdfs dfs -cp /user/coder5/zhenghe-vectors/tfidf-vectors /user/coder5/trainW hdfs dfs -cp /user/coder5/zhenghe-vectors/tfidf-vectors /user/coder5/testW- 訓練:
①拆分過數據執行此步驟。
mahout trainnb -i /user/coder5/train -o /user/coder5/train/model -li labelindex -ow -c②未拆分數據執行此步驟。
mahout trainnb -i /user/coder5/trainW/tfidf-vectors -o /user/coder5/trainW/model -li labelindex -ow -c10- 測試訓練好的貝葉斯分類器:
①拆分過數據就執行此步驟。
mahout testnb -i /user/coder5/test -m /user/coder5/train/model -l labelindex -ow -o test-result②未拆分數據就執行此步驟。
mahout testnb -i /user/coder5/testW/tfidf-vectors -m /user/coder5/trainW/model -l labelindex -ow -o test-result11二、數據分類
- 將數據庫導出的所有 txt 直接放在/home/sys-01/data 文件夾下面(此步驟跳過,數據已存在)
- 將文本數據轉換成 SequenceFile
- 在 HDFS 上創建目錄
- 上傳序列文件(SequenceFile)到 HDFS 系統
查看結果
hdfs dfs -ls /user/coder12- 開始 SequenceFile->Vector 的轉換:
- 復制數據到/user/coder/train 目錄下
- /home/sys-01下新建文件夾 classify (提示文件已存在,我們刪除了它,在新
建)
rm -rf /home/sys-01/classify mkdir /home/sys-01/classify- 將 hdfs 中的 coder 文件導出到本地
- 將 hdfs 的 coder5/train/model 文件導出到本地/home/sys01/classify/coder/train
目錄下
hdfs dfs -get /user/coder5/train/model /home/sys-01/classify/coder/train- 運行/home/sys-01/下的 jar 包生成路徑名/文件名->索引的 csv 文件
①拆分數據運行 bayesF.jar 包
java -jar bayesF.jar②未拆分數據運行 bayesW.jar 包
java -jar bayesW.jar總結
以上是生活随笔為你收集整理的使用说明 vector_Paddlepaddle学习|Ubuntu环境使用 Mahout 进行朴素贝叶斯模型的训练和测试...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: infomix数据库版本sql_数据库周
- 下一篇: python 深度 视差 计算_Open