日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

mahout

 閑來看看 2014-01-17

mahout


運行自帶的例子來進行測試

(1)http://archive.ics./ml/databases/synthetic_control/synthetic_control.data
點擊鏈接,下載數(shù)據(jù)集synthetic_control.data。
將數(shù)據(jù)集synthetic_control.data放到MAHOUT_HOME目錄下面,(注意:這里一定要放到此目錄下,否則會異常報錯)
(2)啟動Hadoop
hadoop@master:~$ start-all.sh
(3)創(chuàng)建測試目錄testdata(這里的目錄的名字只能是testdata)
hadoop@master:~$ hadoop dfs -mkdir testdata     (創(chuàng)建后的路徑為:/user/hadoop/testdata)
(4)并把數(shù)據(jù)導(dǎo)入到這個tastdata目錄中
hadoop@master:~$ hadoop fs -put /home/hadoop/mahout/mahout-distribution-0.7/synthetic_control.data testdata
(5)使用kmeans算法
hadoop@master:~$ hadoop jar $MAHOUT_HOME/mahout-examples-0.7-job.jar org.apache.mahout.clustering.syntheticcontrol.kmeans.Job

(方法有:kmeans canopy fuzzykmeans dirichlet meanshift)
(6)查看運行結(jié)果。依次運行下列命令:                (運行結(jié)果保存在:/user/hadoop/output)
hadoop@master:~$ hadoop dfs -ls output
hadoop@master:~$ hadoop dfs -get output $MAHOUT_HOME/examples    (從hdfs上下載到本地)
hadoop@master:~$ cd $MAHOUT_HOME/examples/output
hadoop@master:~/mahout/mahout-distribution-0.7/examples/output$ ls
如果看到以下結(jié)果,那么算法運行成功,你的安裝也就成功了:
canopies    clusters-1  clusters-3  clusters-5  clusters-7  points
clusters-0  clusters-2  clusters-4  clusters-6  data
(這些文件都是sequenceFile的方式,直接打開會出現(xiàn)亂碼!)
(7)對測試結(jié)果進行分析:
<1>數(shù)據(jù)類型分析:
<a>clusteredPoints:存放的是最后聚類的結(jié)果,將cluster-id和documents-id都展示出來了,用mahout seqdumper讀clusteredPoints結(jié)果的key-value類型是(IntWritable,WeightedVectorWritable)
<b>clusters-N:是第N次聚類的結(jié)果,其中n為某類的樣本數(shù)目,c為各類各屬性的中心,r為各類屬性的半徑。 clusters-N結(jié)果類型是(Text,Cluster)
<c>data:存放的是原始數(shù)據(jù),這個文件夾下的文件可以用mahout vectordump來讀取,原始數(shù)據(jù)是向量形式的,其它的都只能用mahout seqdumper來讀取,向量文件也可以用mahout seqdumper來讀取,只是用vectordump讀取出來的是數(shù)字結(jié)果,沒有對應(yīng)的key,用seqdumper讀出來的可以看到key,即對應(yīng)的url,而value讀出來的是一個類描述,而不是數(shù)組向量
<2>命令類型分析:
mahout seqdumper:將SequenceFile文件轉(zhuǎn)成可讀的文本形式,對應(yīng)的源文件是org.apache.mahout.utils.SequenceFileDumper.java
mahout vectordump:將向量文件轉(zhuǎn)成可讀的文本形式,對應(yīng)的源文件是org.apache.mahout.utils.vectors.VectorDumper.java
mahout clusterdump:分析最后聚類的輸出結(jié)果,對應(yīng)的源文件是org.apache.mahout.utils.clustering.ClusterDumper.java
<3>實際命令如下(-i <hdfs上的路徑> -o <本地路徑>):
hadoop@master:~$ mahout seqdumper -i /user/hadoop/output/clusteredPoints/part-m-00000 -o /home/hadoop/data/result_points.txt
hadoop@master:~$ mahout vectordump -i /user/hadoop/output/data/part-m-00000 -o /home/hadoop/data/result_data.txt
hadoop@master:~$ mahout seqdumper -i /user/hadoop/output/clusters-2/part-r-00000 -o /home/hadoop/data/result_clusters2.txt
hadoop@master:~$ mahout clusterdump --input /user/hadoop/output/clusters-0 --pointsDir /user/hadoop/output/clusteredPoints --output /home/hadoop/data/result_clusters0.txt
(這個命令會將每一類的點列出來,input指向的目錄存放的是某類有幾個點和該類的質(zhì)心點及半徑,即clusters-N目錄,pointsDir指向的是所有輸入點歸于哪一類,即clusteredPoints目錄,兩者聯(lián)合起來,就可以列舉出屬于同一類的所有點)
(注意input指向的目錄,要是最后一次迭代的結(jié)果目錄,最后一次迭代的結(jié)果才是最終的結(jié)果)

(1)SequenceFile介紹

SequeceFile是Hadoop API提供的一種二進制文件支持。這種二進制文件直接將<key, value>對序列化到文件中。一般對小文件可以使用這種文件合并,即將文件名作為key,文件內(nèi)容作為value序列化到大文件中。
這種文件格式有以下好處:
    支持壓縮,且可定制為基于Record或Block壓縮(Block級壓縮性能較優(yōu))
    本地化任務(wù)支持:因為文件可以被切分,因此MapReduce任務(wù)時數(shù)據(jù)的本地化情況應(yīng)該是非常好的。
    難度低:因為是Hadoop框架提供的API,業(yè)務(wù)邏輯側(cè)的修改比較簡單。
壞處是需要一個合并文件的過程,且合并后的文件將不方便查看。

(2)mahout與SequenceFile

首先簡單說明下,mahout下處理的文件必須是SequenceFile格式的,所以需要把txtfile轉(zhuǎn)換成sequenceFile。
SequenceFile是hadoop中的一個類,允許我們向文件中寫入二進制的鍵值對,
具體介紹請看eyjian寫的http://www./viewthread.php?tid=144&highlight=sequencefile
輸入命令(--input和--output的路徑必須一樣):

<1>把txt文本文件轉(zhuǎn)換成sequenceFile

hadoop@master:~$ mahout seqdirectory --input /test/ --output /test/ --charset UTF-8
結(jié)果可以看到:在test目錄下多了1個文件(chunk-0), 這就是我們要的SequenceFile格式文件


問題:在我的測試中并沒有用到這個命令??????????

<2>將SequenceFile文件轉(zhuǎn)成文本形式:

hadoop@master:~$ mahout seqdumper -s /test/chunk-0 -o test.txt

注意1:mahout-0,5中-s:表示輸入文件路徑, mahout-0.8中-i:表示輸入文件路徑。輸入路徑是指HDFS上的路徑

注意2:輸出路徑test.txt----存放在/home/hadoop中,也就是本地路徑

(3)mahout中的測試數(shù)據(jù)下載

數(shù)據(jù)源:http://kdd.ics./databases/里面有大量經(jīng)典數(shù)據(jù)提供下載

 

(4)maven編譯mahout的源文件

下載mahout-0.7的源文件(src文件:mahout-distribution-0.7-src.tar.gz):http://apache.//mahout/0.7/ 解壓,我放在/home/hadoop/mahout-src下,

<1>進入mahout-0.7源文件目錄:cd $MAHOUT_HOME,

<2>編譯mahout源文件的命令:mvn install   或  mvn install -Dmaven.test.skip=true

注意1:因為maven是編譯mahout的源文件,所以要下載mahout-distribution-0.7-src.tar.gz版本,如果下載的是mahout-distribution-0.7.tar.gz版本,在mahout的安 裝目錄下執(zhí)行命令:mvn install時,會提示錯誤,找不到pom.xml。

注意2使用mvn install:會比較慢,因為測試過程會比較慢,而且容易失?。?!

注意3使用mvn install -Dmaven.test.skip=true:Maven 提供了跳過單元測試的能力,只需要使用 Surefire 插件的 skip 參數(shù)。 在命令行,只要簡單的給任何目標添加 maven.test.skip 屬性就能跳過測試

(1)kmeans算法簡介

同一聚類中的對象相似度較高,而不同聚類中的對象相似度較小。
以空間中k個點為中心進行聚類,對最靠近他們的對象歸類。通過迭代的方法,逐次更新各聚類中心的值,直至得到最好的聚類結(jié)果。
首先從n個數(shù)據(jù)對象任意選擇 k個 對象作為初始聚類中心;而對于所剩下其它對象,則根據(jù)它們與這些聚類中心的相似度(距離),分別將它們分配給與其最相似的(聚類中心所代表的)聚類;然后 再計算每個所獲新聚類的聚類中心(該聚類中所有對象的均值);不斷重復(fù)這一過程直到標準測度函數(shù)開始收斂為止。一般都采用均方差作為標準測度函數(shù). k個聚類具有以下特點:各聚類本身盡可能的緊湊,而各聚類之間盡可能的分開。
對于每一個 cluster,我們可以選出一個中心點 (center),使得該 cluster中的所有的點到該中心點的距離小于到其他 cluster的中心的距離

(2)canopy算法簡介

Canopy 算法首先會要求輸入兩個閥值 T1和T2,T1>T2;算法有一個集群這里叫Canopy的集合(Set),當(dāng)然一開始它是空的;然后會將讀取到的第一個點作為集合中的一個 Canopy,接著讀取下一個點,若該點與集合中的每個Canopy計算距離,若這個距離小于T1,則這個點會分配給這個Canopy(一個點可以分配給 多個Canopy),而當(dāng)這個距離小于T2時這個點不能作為一個新的Canopy而放到集合中。也就是說當(dāng)一個點只要與集合中任意一個Canopy的距離 小于T2了,即表示它里那個Canopy太近不能作為新的Canopy。若都沒有則生成一個新的Canopy放入集合中。以此循環(huán),直到?jīng)]有點了。

首先通過Canopy算法進行聚類,以確定簇數(shù)以及初始簇心的,接著通過K-means算法進行迭代運算,收斂出最后的聚類結(jié)果。

折騰死了,總結(jié)下:
1.運行kmeans算法的時候下載的是mahout-distribution-0.8.tar.gz,是編譯后的版本(安裝版),運行的很順利!當(dāng)運行bayes(貝葉斯)算法時出問題了,按照mahout官網(wǎng)上的步驟,執(zhí)行mvn install是報錯:說找不到pom.xml??!發(fā)現(xiàn):這個是在源碼上運行的!!這才又下載了mahout-distribution-0.8-src.tar.gz,直接編譯(mvn install)的時候并沒成功,又把源碼導(dǎo)入到eclipse中,修修改改,終于編譯成功了?。?BR>2.但是當(dāng)運行命令:mahout org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups .......的時候,就報錯:說找不到PrepareTwentyNewsgroups??!經(jīng)過一番折騰,終于發(fā)現(xiàn)mahout-distribution-0.7-src里面bayes的文件夾為空(或者就沒有這個文件夾)??!然后就去找mahout前幾個版本,把mahout-distribution-0.4-src到mahout-distribution-0.8-src都下載下來了,0.7和0.8里面沒有bayes的文件夾,0.4和0.6里面雖然bayes的文件夾不為空,但是總編譯不成功,最后只有0.5沒有問題??!

bayes(貝葉斯)算法簡介

 

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

這二十個新聞組數(shù)據(jù)集合是收集大約20,000新聞組文檔,均勻的分布在20個不同的集合。這20個新聞組集合采集最近流行的數(shù)據(jù)集合到文本程序中作為實驗,根據(jù)機器學(xué)習(xí)技術(shù)。例如文本分類,文本聚集。我們將使用MahoutBayes Classifier創(chuàng)造一個模型,它將一個新文檔分類到這20個新聞組集合范例演示

mahout運行bayes(貝葉斯)算法的前提條件:

(1)啟動hadoop
hadoop@master:~$ start-all.sh
(2)成功編譯mahout源碼
hadoop@master:~$ cd $MAHOUT_HOME
hadoop@master:~/mahout-0.5-src/mahout-distribution-0.5$ mvn install -Dmaven.test.skip=true

mahout運行bayes(貝葉斯)算法的步驟:

(1)生成input的數(shù)據(jù)
hadoop@master:~/mahout-0.5-src/mahout-distribution-0.5$ mahout org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups -p /home/hadoop/mahout-0.5-src/mahout-distribution-0.5/my-test-data/20news-bydate/20news-bydate-train -o /home/hadoop/mahout-0.5-src/mahout-distribution-0.5/my-test-result/bayes-train-input -a org.apache.mahout.vectorizer.DefaultAnalyzer -c UTF-8  
運行結(jié)果:
Running on hadoop, using HADOOP_HOME=/home/hadoop/cloud/hadoop-1.0.4
HADOOP_CONF_DIR=/home/hadoop/cloud/confDir/hadoop/conf
Warning: $HADOOP_HOME is deprecated.

13/08/09 14:07:09 WARN driver.MahoutDriver: No org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups.props found on classpath, will use command-line arguments only
13/08/09 14:07:14 INFO driver.MahoutDriver: Program took 5202 ms
(2)生成test的數(shù)據(jù)
hadoop@master:~/mahout-0.5-src/mahout-distribution-0.5$ mahout org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups -p /home/hadoop/mahout-0.5-src/mahout-distribution-0.5/my-test-data/20news-bydate/20news-bydate-test -o /home/hadoop/mahout-0.5-src/mahout-distribution-0.5/my-test-result/bayes-test-input -a org.apache.mahout.vectorizer.DefaultAnalyzer -c UTF-8  
運行結(jié)果:
Running on hadoop, using HADOOP_HOME=/home/hadoop/cloud/hadoop-1.0.4
HADOOP_CONF_DIR=/home/hadoop/cloud/confDir/hadoop/conf
Warning: $HADOOP_HOME is deprecated.

13/08/09 14:13:35 WARN driver.MahoutDriver: No org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups.props found on classpath, will use command-line arguments only
13/08/09 14:13:38 INFO driver.MahoutDriver: Program took 3428 ms
(3)將訓(xùn)練文本集上傳到HDFS上
hadoop@master:~/mahout-0.5-src/mahout-distribution-0.5$ hadoop dfs -put /home/hadoop/mahout-0.5-src/mahout-distribution-0.5/my-test-result/bayes-train-input/ bayes-train-input
(4)模型訓(xùn)練:依據(jù)訓(xùn)練文本集來訓(xùn)練貝葉斯分類器模型
解釋一下命令:-i:表示訓(xùn)練集的輸入路徑,HDFS路徑; -o:分類模型輸出路徑; -type:分類器類型,這里使用bayes,可選cbayes;
-ng:(n-gram)建模的大小,默認為1; -source:數(shù)據(jù)源的位置,HDFS或HBase
hadoop@master:~/mahout-0.5-src/mahout-distribution-0.5$ mahout trainclassifier -i bayes-train-input -o bayes-newsmodel -type bayes -ng 1 -source hdfs
(5)將測試文本集上傳到HDFS上
hadoop@master:~/mahout-0.5-src/mahout-distribution-0.5$ hadoop dfs -put /home/hadoop/mahout-0.5-src/mahout-distribution-0.5/my-test-result/bayes-test-input/ bayes-test-input
(6)模型測試:依據(jù)訓(xùn)練的貝葉斯分類器模型來進行分類測試
hadoop@master:~/mahout-0.5-src/mahout-distribution-0.5$ mahout testclassifier -m bayes-newsmodel -d bayes-test-input -type bayes -ng 1 -source hdfs -method mapreduce
運行結(jié)果(與apache官網(wǎng)里面的一致):
13/08/09 14:56:34 INFO bayes.BayesClassifierDriver: =======================================================
Confusion Matrix
-------------------------------------------------------
a        b        c        d        e        f        g        h        i        j        k        l        m        n        o        p        q        r        s        t        u        <--Classified as
381      0        0        0        0        9        1        0        0        0        1        0        2        0        0        1        0        0        3        0        0         |  398       a     = rec.motorcycles
1        284      0        0        0        0        1        0        6        3        11       0        3        66       0        1        6        0        4        9        0         |  395       b     = comp.windows.x
2        0        339      2        0        3        5        1        0        0        0        0        1        1        12       1        7        0        2        0        0         |  376       c     = talk.politics.mideast
4        0        1        327      0        2        2        0        0        2        1        1        5        0        1        4        12       0        2        0        0         |  364       d     = talk.politics.guns
7        0        4        32       27       7        7        2        0        12       0        0        0        6        100      9        7        31       0        0        0         |  251       e     = talk.religion.misc
10       0        0        0        0        359      2        2        0        1        3        0        6        1        0        1        0        0        11       0        0         |  396       f     = rec.autos
0        0        0        0        0        1        383      9        1        0        0        0        0        0        0        0        0        0        3        0        0         |  397       g     = rec.sport.baseball
1        0        0        0        0        0        9        382      0        0        0        0        1        1        1        0        2        0        2        0        0         |  399       h     = rec.sport.hockey
2        0        0        0        0        4        3        0        330      4        4        0        12       5        0        0        2        0        12       7        0         |  385       i     = comp.sys.mac.hardware
0        3        0        0        0        0        1        0        0        368      0        0        4        10       1        3        2        0        2        0        0         |  394       j     = sci.space
0        0        0        0        0        3        1        0        27       2        291      0        25       11       0        0        1        0        13       18       0         |  392       k     = comp.sys.ibm.pc.hardware
8        0        1        109      0        6        11       4        1        18       0        98       3        1        11       10       27       1        1        0        0         |  310       l     = talk.politics.misc
6        0        1        0        0        4        2        0        5        2        12       0        321      8        0        4        14       0        8        6        0         |  393       m     = sci.electronics
0        11       0        0        0        3        6        0        10       7        11       0        13       298      0        2        13       0        7        8        0         |  389       n     = comp.graphics
2        0        0        0        0        0        4        1        0        3        1        0        1        3        372      6        0        2        1        2        0         |  398       o     = soc.religion.christian
4        0        0        1        0        2        3        3        0        4        2        0        12       7        6        342      1        0        9        0        0         |  396       p     = sci.med
0        1        0        1        0        1        4        0        3        0        1        0        4        8        0        2        369      0        1        1        0         |  396       q     = sci.crypt
10       0        4        10       1        5        6        2        2        6        2        0        1        2        86       15       14       152      0        1        0         |  319       r     = alt.atheism
4        0        0        0        0        9        1        1        8        1        12       0        6        3        0        2        0        0        341      2        0         |  390       s     = misc.forsale
8        5        0        0        0        1        6        0        8        5        50       0        2        39       1        0        9        0        3        257      0         |  394       t     = comp.os.ms-windows.misc
0        0        0        0        0        0        0        0        0        0        0        0        0        0        0        0        0        0        0        0        0         |  0         u     = unknown
Default Category: unknown: 20


13/08/09 14:56:34 INFO driver.MahoutDriver: Program took 118128 ms

參考文章:
(1)mahout官網(wǎng):https://cwiki./confluence/display/MAHOUT/Twenty+Newsgroups
(2)http://blog.csdn.net/crazyzhb2012/article/details/9795609

(3)http://blog.csdn.net/zc55803903/article/details/7933126
 

Top 只看目錄平板模式刷新

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多