专栏名称: 计算姬
算法女博士及她的小伙伴的思维乐园。关注数据挖掘,机器学习,IT技术,互联网思考,程序员身心。
目录
相关文章推荐
鼠绘情报站  ·  这阵容比夏日还热情!2025年日本7月夏季新 ... ·  昨天  
一条漫画  ·  原来这么多现代词来自古代...? ·  昨天  
Kane的小K屋  ·  中年人,别搞激情创业那一套! ·  昨天  
51好读  ›  专栏  ›  计算姬

聚类算法之K-Means算法Spark实践

计算姬  · 公众号  ·  · 2016-06-01 21:16

正文

请到「今天看啥」查看全文



另外,给出损失函数(Cost Function),每一次选取好新的中心点,我们就要计算一下当前选好的中心点损失为多少,这个损失代表着偏移量,越大说明当前聚类的效果越差,计算公式称为(Within-Cluster Sum of Squares, WCSS):




其中,xi表示某一对象,ck表示该对象所属类别的中心点。整个式子的含义就是对各个类别下的对象,求对象与中心点的欧式距离的平方,把所有的平方求和就是L(C)。


测试数据:


0.0 0.0

0.1 0.1

0.2 0.2

3.0 3.0

3.1 3.1

3.2 3.2

9.0 9.0

9.1 9.1

9.2 9.2


Scala版KMeans代码示例:


import org.apache.spark.mllib.clustering.KMeans

import org.apache.spark.mllib.linalg.Vectors

import org.apache.spark.{SparkConf, SparkContext}


object KMeansTest {

def main(args: Array[String]) {

val conf = new SparkConf()

val sc = new SparkContext(conf)

val data =sc.textFile(args(0))

val parsedData =data.map(s => Vectors.dense(s.split(' ').map(_.trim.toDouble))).cache()

//设置簇的个数为3

val numClusters =3

//迭代20次

val numIterations= 20

//运行10次,选出最优解

val runs=10

//设置初始K选取方式为k-means++

val initMode = "k-means||"

val clusters = new KMeans().

setInitializationMode(initMode).







请到「今天看啥」查看全文