日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

使用说明 vector_Paddlepaddle学习|Ubuntu环境使用 Mahout 进行朴素贝叶斯模型的训练和测试...

發(fā)布時間:2024/9/15 Ubuntu 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用说明 vector_Paddlepaddle学习|Ubuntu环境使用 Mahout 进行朴素贝叶斯模型的训练和测试... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

樸素貝葉斯算法是基于貝葉斯定理與特征條件獨立假設(shè)的分類方法。分類是 將一個未知樣本分到幾個預(yù)先已知類的過程。解決數(shù)據(jù)分類問題有兩步:第一步, 建立一個模型,描述預(yù)先的數(shù)據(jù)集或概念集,通過分析由屬性描述的樣本(或?qū)?例,對象等)來構(gòu)造模型;第二步,假定每一個樣本都有一個預(yù)先定義的類,由 一個被稱為類標(biāo)簽的屬性確定,為建立模型而被分析的數(shù)據(jù)元組形成訓(xùn)練數(shù)據(jù) 集,該步也稱作有指導(dǎo)的學(xué)習(xí)。

接下來我們在Ubuntu系統(tǒng)使用 Mahout 進(jìn)行樸素貝葉斯模型的訓(xùn)練和測試。

(一)訓(xùn)練模型

  • root用戶
su root

  • 啟動hadoop
start-all.sh

查看 ls /zhenghe-out/ 數(shù)據(jù)文件是否存在

  • 將文本數(shù)據(jù)轉(zhuǎn)換成 SequenceFile
mahout seqdirectory -i file:///home/sys-01/zhenghe-out/ -o file:///home/sys-01/zhenghe-out-seq/ -c UTF-8 -chunk 64 -xm sequential --keyPrefix7

內(nèi)置的seqdirectory命令可以完成 文本目錄到SequenceFile的轉(zhuǎn)換過程。 上述命令蘊(yùn)含了2個大坑,在官方文檔中均沒有仔細(xì)說明:

(1) -xm sequential,表示在本地執(zhí)行,而不是用MapReduce執(zhí)行。如果是后者, 我們勢必要將這些小文件上傳到HDFS上,那樣的話,還要就不需要SequenceFile(序列文件)。

(2) 然而seqdirectory在執(zhí)行的時候,并不因為十本地模式,就在本地文件系統(tǒng)上找。而是根據(jù)-i -o的文件系統(tǒng)前綴來判斷文件位置。也就是說,默認(rèn)情況,依 然是在HDFS上查找的……所以,這個file://的前綴是非常有必要的。

其他2個參數(shù): -c UTF8:編碼格式。

-chunk 64:64MB一個Chunk,應(yīng)該和HDFS的BLOCK保持一致或者倍數(shù)關(guān)系。

  • (4)在HDFS上創(chuàng)建目錄user/coder5
hadoop fs -rm -r -skipTrash /user hadoop fs -mkdir -p /user/coder5/train hadoop fs -mkdir -p /user/coder5/test

  • 上傳序列文件(SequenceFile)到HDFS系統(tǒng)
hdfs dfs -put /home/sys-01/zhenghe-out-seq /user/coder5

查看結(jié)果

hdfs dfs -ls /user/coder5

  • 開始SequenceFile->Vector的轉(zhuǎn)換:
mahout seq2sparse -i /user/coder5/zhenghe-out-seq/chunk-0 -o /user/coder5/zhenghe-vectors -lnorm -nv -wt tfidf8

參數(shù)說明如下:

-ow( 或 --overwrite):即使輸出目錄存在,依然覆蓋。

--weight(或 -wt) tf:權(quán)重公式。(當(dāng)LDA時建議使用tf )。

--maxDFPercent(或 -x) 85:過濾高頻詞,當(dāng)DF大于85%時,將不在作為詞特征輸

出到向量中。

--namedVector (或-nv):向量會輸出附加信息。

其他可能有用的選項:

--analyzerName(或-a):指定其他分詞器。

–minDF:最小DF閾值。

–minSupport:最小的支持度閾值,默認(rèn)為2。

–maxNGramSize(或-ng):是否創(chuàng)建ngram,默認(rèn)為1。建議一般設(shè)定到2就夠了。

–minLLR(或 -ml):The minimum Log Likelihood Ratio。默認(rèn)為1.0。當(dāng)設(shè)定了-ng >

1后,建議設(shè)置為較大的值,只過濾有意義的N-Gram。

–logNormalize(或 -lnorm):是否對輸出向量做Log變換。

–norm(或 -n):是否對輸出向量做p-norm變換,默認(rèn)不變換。

  • 拆分?jǐn)?shù)據(jù)(如果想拆分?jǐn)?shù)據(jù)就執(zhí)行1,不想拆分?jǐn)?shù)據(jù)就執(zhí)行2。可以兩種實驗 都做一下,然后使用正確率較高的model)

①想拆分?jǐn)?shù)據(jù)就執(zhí)行此步驟,將60%的數(shù)據(jù)用于訓(xùn)練,40%用于測試。

mahout split -i /user/coder5/zhenghe-vectors/tfidf-vectors --trainingOutput /user/coder5/train --testOutput /user/coder5/test --randomSelectionPct 40 --overwrite --sequenceFiles -xm sequential9

②不想拆分?jǐn)?shù)據(jù)就執(zhí)行此步驟。

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

  • 訓(xùn)練:

①拆分過數(shù)據(jù)執(zhí)行此步驟。

mahout trainnb -i /user/coder5/train -o /user/coder5/train/model -li labelindex -ow -c

②未拆分?jǐn)?shù)據(jù)執(zhí)行此步驟。

mahout trainnb -i /user/coder5/trainW/tfidf-vectors -o /user/coder5/trainW/model -li labelindex -ow -c10
  • 測試訓(xùn)練好的貝葉斯分類器:

①拆分過數(shù)據(jù)就執(zhí)行此步驟。

mahout testnb -i /user/coder5/test -m /user/coder5/train/model -l labelindex -ow -o test-result

②未拆分?jǐn)?shù)據(jù)就執(zhí)行此步驟。

mahout testnb -i /user/coder5/testW/tfidf-vectors -m /user/coder5/trainW/model -l labelindex -ow -o test-result11

二、數(shù)據(jù)分類

  • 將數(shù)據(jù)庫導(dǎo)出的所有 txt 直接放在/home/sys-01/data 文件夾下面(此步驟跳過,數(shù)據(jù)已存在)
  • 將文本數(shù)據(jù)轉(zhuǎn)換成 SequenceFile
mahout seqdirectory -i file:///home/sys-01/data/ -o file:///home/sys-01/data-seq/ -c UTF-8 -chunk 64 -xm sequential --keyPrefix

  • 在 HDFS 上創(chuàng)建目錄
hadoop fs -mkdir -p /user/coder/train
  • 上傳序列文件(SequenceFile)到 HDFS 系統(tǒng)
hdfs dfs -put /home/sys-01/data-seq /user/coder

查看結(jié)果

hdfs dfs -ls /user/coder12

  • 開始 SequenceFile->Vector 的轉(zhuǎn)換:
mahout seq2sparse -i /user/coder/data-seq/chunk-0 -o /user/coder/data-vectors -lnorm -nv -wt tfidf
  • 復(fù)制數(shù)據(jù)到/user/coder/train 目錄下
hdfs dfs -cp /user/coder/data-vectors/tfidf-vectors /user/coder/train
  • /home/sys-01下新建文件夾 classify (提示文件已存在,我們刪除了它,在新

建)

rm -rf /home/sys-01/classify mkdir /home/sys-01/classify
  • 將 hdfs 中的 coder 文件導(dǎo)出到本地
hdfs dfs -get /user/coder /home/sys-01/classify
  • 將 hdfs 的 coder5/train/model 文件導(dǎo)出到本地/home/sys01/classify/coder/train

目錄下

hdfs dfs -get /user/coder5/train/model /home/sys-01/classify/coder/train
  • 運(yùn)行/home/sys-01/下的 jar 包生成路徑名/文件名->索引的 csv 文件
output.csv。

①拆分?jǐn)?shù)據(jù)運(yùn)行 bayesF.jar 包

java -jar bayesF.jar

②未拆分?jǐn)?shù)據(jù)運(yùn)行 bayesW.jar 包

java -jar bayesW.jar

總結(jié)

以上是生活随笔為你收集整理的使用说明 vector_Paddlepaddle学习|Ubuntu环境使用 Mahout 进行朴素贝叶斯模型的训练和测试...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。