spark機器學習實現之fpgrowth

2021-08-08 17:39:43 字數 2480 閱讀 5289

很久之前就像寫一些關於資料探勘演算法的東西,因為懶現在才開始動手,因為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...