小編給大家分享一下spark mllib如何實(shí)現(xiàn)快速迭代聚類,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供敦化企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、H5場(chǎng)景定制、小程序制作等業(yè)務(wù)。10年已為敦化眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
package spark.clustering import org.apache.spark.mllib.clustering.{PowerIterationClustering} import org.apache.spark.{SparkConf, SparkContext} /** * 快速迭代聚類 * 基本原理:使用含有權(quán)重的無(wú)向線將樣本數(shù)據(jù)連接在一張無(wú)向圖中,之后按照相似度劃分, * 使得劃分后的子圖內(nèi)部具有最大的相似度二不同的子圖具有最小的相似度從而達(dá)到聚類的效果. * 數(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è)置聚類數(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)快速迭代聚類”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!