您好,登錄后才能下訂單哦!
小編給大家分享一下spark mllib如何實(shí)現(xiàn)快速迭代聚類(lèi),希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
package spark.clustering import org.apache.spark.mllib.clustering.{PowerIterationClustering} import org.apache.spark.{SparkConf, SparkContext} /** * 快速迭代聚類(lèi) * 基本原理:使用含有權(quán)重的無(wú)向線將樣本數(shù)據(jù)連接在一張無(wú)向圖中,之后按照相似度劃分, * 使得劃分后的子圖內(nèi)部具有最大的相似度二不同的子圖具有最小的相似度從而達(dá)到聚類(lèi)的效果. * 數(shù)據(jù)源要求 RDD[(Long), (Long), (Double)] * 第一個(gè)參數(shù)和第二個(gè)參數(shù)是第一個(gè)點(diǎn)和第二個(gè)點(diǎn)的編號(hào),即其之間 ID,第三個(gè)參數(shù)是相似度計(jì)算值. * Created by eric on 16-7-21. */ object PIC { val conf = new SparkConf() //創(chuàng)建環(huán)境變量 .setMaster("local") //設(shè)置本地化處理 .setAppName("pic") //設(shè)定名稱 val sc = new SparkContext(conf) def main(args: Array[String]) { val data = sc.textFile("./src/main/spark/clustering/pic.txt") val similarities = data.map { line => val parts = line.split(" ") (parts(0).toLong, parts(1).toLong, parts(2).toDouble) } val pic = new PowerIterationClustering() .setK(2) //設(shè)置聚類(lèi)數(shù) .setMaxIterations(10) //設(shè)置迭代次數(shù) val model = pic.run(similarities) model.assignments.foreach {a => println(s"${a.id} -> ${a.cluster}") } } }
pic.txt
0 1 1.0 0 2 1.0 0 3 1.0 1 2 1.0 1 3 1.0 2 3 1.0 3 4 0.1 4 5 1.0 4 15 1.0 5 6 1.0 6 7 1.0 7 8 1.0 8 9 1.0 9 10 1.0 10 11 1.0 11 12 1.0 12 13 1.0 13 14 1.0 14 15 1.0
看完了這篇文章,相信你對(duì)“spark mllib如何實(shí)現(xiàn)快速迭代聚類(lèi)”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。