數據挖掘(5):使用mahout做海量數據關聯規則挖掘

jopen 9年前發布 | 18K 次閱讀 數據挖掘

原文出處: fengfenggirl(@也愛數據挖掘)    


上一篇介紹了用開源數據挖掘軟件weka做關聯規則挖掘,weka方便實用,但不能處理大數據集,因為內存放不下,給它再多的時間也是無用,因此需要進行分布式計算,mahout是一個基于hadoop的分布式數據挖掘開源項目(mahout本來是指一個騎在大象上的人)。掌握了關聯規則的基本算法和使用,加上分布式關聯規則挖掘后,就可以處理基本的關聯規則挖掘工作了,實踐中只需要把握業務,理解數據便可游刃有余。

 

安裝mahout

騎在大象上的俠士必然需要一頭雄糾糾的大象,不過本文不解紹大象hadoop,所以我假定已經安裝好了hadoop,關于hadoop的安裝,請google。

Apache官網下載mahout8.0

解壓

tar -zxvf mahout-distribution-0.8.tar.gz

移動

sudo mv tar mahout-distribution-0.8 /usr/local/mahout-8

配置

sudo gedit /etc/profile

輸入以下內容:

export MAHOUT_HOME=/usr/local/mahout-8
export PATH=$MAHOUT_HOME/bin:$PATH
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$PATH

退出用戶重新登錄,使配置文件生效。輸入mahout -version測試是否安裝成功。

 

數據準備

http://fimi.ua.ac.be/data/下載一個購物籃數據retail.dat。

上傳到hadoop文件系統

hadoop fs -mkdir /user/hadoop/mahoutData #創建目錄
hadoop fs -put ~/data/retail.dat /user/hadoop/mahoutData

調用FpGrowth算法

mahout fpg -i /user/hadoop/mahoutData/retail.dat -o patterns -method mapreduce -s 1000 -regex '[\ ]'

-i表示input,-o表示-output,-s表示最小支持度,’[\ ]‘表示以行內的數據以空格分開。

一兩分鐘后執行完畢,生成的文件被序列化了,直接查看會是亂碼,因此需要用mahout還原回來:

mahout seqdumper -i /user/hadoop/patterns/fpgrowth/part-r-00000 -o ~/data/patterns.txt

輸出結果:

Key: 39: Value: ([39],50675)
Key: 48: Value: ([48],42135), ([39, 48],29142)
Key: 38: Value: ([38],15596), ([39, 38],10345), ([48, 38],7944), ([39, 48, 38],6102)
Key: 32: Value: ([32],15167), ([39, 32],8455), ([48, 32],8034), ([39, 48, 32],5402), ([38, 32],2833), ([39, 38, 32],1840), ([48, 38, 32],1646), ([39, 48, 38, 32],1236)
Key: 41: Value: ([41],14945), ([39, 41],11414), ([48, 41],9018), ([39, 48, 41],7366), ([38, 41],3897), ([32, 41],3196), ([39, 38, 41],3051), ([48, 38, 41],2374), ([39, 32, 41],2359), ([48, 32, 41],2063), ([39, 48, 38, 41],1991), ([39, 48, 32, 41],1646)
Key: 65: Value: ([65],4472), ([39, 65],2787), ([48, 65],2529), ([39, 48, 65],1797)
Key: 89: Value: ([89],3837), ([48, 89],2798), ([39, 89],2749), ([39, 48, 89],2125)
Key: 225: Value: ([225],3257), ([39, 225],2351), ([48, 225],1736), ([39, 48, 225],1400)

這里輸出的只是頻繁項集,但在此基礎上提取關聯規則已經不是難事。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!