小编给大家分享一下spark mllib如何实现快速迭代聚类,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
package spark.clustering
import org.apache.spark.mllib.clustering.{PowerIterationClustering}
import org.apache.spark.{SparkConf, SparkContext}
/**
* 快速迭代聚类
* 基本原理:使用含有权重的无向线将样本数据连接在一张无向图中,之后按照相似度划分,
* 使得划分后的子图内部具有最大的相似度二不同的子图具有最小的相似度从而达到聚类的效果.
* 数据源要求 RDD[(Long), (Long), (Double)]
* 第一个参数和第二个参数是第一个点和第二个点的编号,即其之间 ID,第三个参数是相似度计算值.
* Created by eric on 16-7-21.
*/
object PIC {
val conf = new SparkConf() //创建环境变量
.setMaster("local") //设置本地化处理
.setAppName("pic") //设定名称
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) //设置聚类数
.setMaxIterations(10) //设置迭代次数
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
看完了这篇文章,相信你对“spark mllib如何实现快速迭代聚类”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/sunmin/blog/723350