天天看點

hadoop下mahout bayes(貝葉斯)算法研究(1)

樸素貝葉斯分類是一種十分簡單的分類算法,叫它樸素貝葉斯分類是因為這種方法的思想真的很樸素,樸素貝葉斯的思想基礎是這樣的:對于給出的待分類項,求解在此項出現的條件下各個類别出現的機率哪個最大,就認為此待分類項屬于哪個類别。

這二十個新聞討論區資料集合是收集大約20,000新聞討論區文檔,均勻的分布在20個不同的集合。這20個新聞討論區集合采集最近流行的資料集合到文本程式中作為實驗,根據機器學習技術。例如文本分類,文本聚集。我們将使用Mahout的Bayes

Classifier創造一個模型,它将一個新文檔分類到這20個新聞討論區集合範例示範

hadoop已經開啟

mahout已經安裝

下載下傳20news-bydate.tar.gz資料包并解壓縮

<a href="http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz">http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz</a>

例如:我已經把資料包放在/root/bayes下了,是以以下的指令都是在這個目錄下的

原以為這麼20個檔案是不可以一起輸出的,但事實證明是可以的

<a>mahout org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups -p/root/bayes/20news-bydate-train -o /root/bayesoutput/train -a org.apache.mahout.vectorizer.DefaultAnalyzer -c UTF-8</a>

上傳檔案到HDFS

hadoop fs -put  /root/bayesoutput/train/ bayes

下面将在hadoop運作4個map reduce工作,為了Train這個分器并且将運作一段時間如果在隻有一個節點的機器上

mahout trainclassifier -i /bayes/train/ -o newsmodel -type bayes -ng 3 -source hdfs(由于hadoop叢集未開,這條指令暫時沒用)

由于案例資料較多,跑了将近30分鐘,新的newmodel的大小有300多mb

在input目錄運作Test分類器

<a>mahout testclassifier -m newsmodel -d /root/bayesoutput/test/ -type bayes -ng 3 -source hdfs -method mapreduce</a>

繼續閱讀