很久之前就像寫一些關於資料探勘演算法的東西,因為懶現在才開始動手,因為fpgrowth演算法在mlib中的實現
相對比較簡單,所以打算先拿它下手。
關於fpgrowth的原理本人說的也不專業, 推薦
這裡主要寫一下在mlib當中,實現的乙個過程
先上**
logger.getlogger("org").setlevel(level.error)
//設定引數
//最小支援度
val minsupport = 0.1
//最小置信度
val minconfidence = 0.8
//資料分割槽
val numpartitions = 2
val data
= sc.textfile("/usr/local/soft/data/fpgrowth.csv")
//把資料通過空格分割
val transactions =
data
.map(x => x.split(","))
transactions.
cache()
取數,我為了快速實現,還是把資料放到了資料檔案裡邊了,在資料量比較大的情況下,還是
推薦hive或者hdfs上去存放資料。
3567,3577,3645,3653
17805
3665,3669
13341,16617,16661,17291,17535,17549,17553,17921,17931,18205,18225,3467,3567,3699,3771,3785,3943,3959,3981,4019,8623,8635,8651,8657,8663
12369,12371,12585,12587,12589,12593,12597,12605,2188,4335,6597
以上是部分資料展現,記錄的是使用者的瀏覽情況
//建立乙個fpgrowth的演算法實列
val fpg = new fpgrowth()
//設定訓練時候的最小支援度和資料分割槽
fpg.setminsupport(minsupport)
fpg.setnumpartitions(numpartitions)
建立例項並且設定分割槽和支援度閥值
//把資料帶入演算法中
val model = fpg.run(transactions)
跑演算法,這裡其實才是整段的核心部分,返回型別是fpgrowthmodel[string],關於這個型別,
如果有時間我們再來仔細的說一說
//檢視所有的頻繁項集,並且列出它出現的次數
model.freqitemsets
.collect().foreach(itemset => )
如果不放心可以看看自己的頻繁項集都是什麼樣子的
val arrayrec = new arraybuffer[string];
model.generateassociationrules(minconfidence).collect().foreach(rule =>
})
可以列印出來看看,其中的關聯規則都是怎麼樣子的。antecedent表示前項,consequent表示後項,
,confidence表示規則的置信度。
12539
-->13345
-->1.0
12539
-->12551
-->1.0
12539
-->13705
-->1.0
12539
-->13695
-->1.0
12539
-->12533
-->1.0
12539
-->13697
-->1.0
12539
-->12535
-->1
.0
大概的規則就是這樣了,因為我自己的需要,我選擇了前項是1的。
資料還是要儲存的,寫個函式存到mysql裡邊,就可以之前前台查詢了
def writerecresulttomysql(uid: arraybuffer[string], sqlcontext: sqlcontext, sc: sparkcontext)
要是還想看看規則生成了多少條,也可以列印一下
println(model.generateassociationrules(minconfidence).collect().length)
好了,至此簡單的邏輯應該沒什麼問題了。
ps:簡單邏輯實現過程中要是存在什麼問題,還請各位大牛指正
spark機器學習之KMeans演算法實現
一 概念 kmeans基於劃分的聚類方法 給定資料樣本集sample和應該劃分的類書k,對樣本資料sample進行聚類,最終形成k個聚類,其相似的度量是某條資料與中心點的 距離 距離可分為絕對距離 歐氏距離 閔可夫斯基距離。這裡說的距離是歐式距離,歐氏距離也稱歐幾里得距離,它是在m維空間中兩個點之間...
Spark機器學習
spark機器學習 注 spark簡介 spark是乙個分布式計算框架,旨在簡化執行於計算集群上的並行程式的編寫。該框架對資源排程,任務的提交 執行和跟蹤,節點間的通訊以及資料並行處理的內在底層操作都進行了抽象。它提供了乙個更高階別的api用於處理分布式資料。spark支援的四種執行模式 本地單機模...
Spark文字挖掘機器學習實現
給定檔案的格式 通過spark相關api將爬取到的資料進行處理,得到結構化的資料表 val filter new stoprecognition filter.insertstopnatures f b p d w v c u 過濾掉標點 val sparkcontext new sparkcont...