Spark之K-均值算法

Spark之K-均值算法

Spark框架在MLlib库中提供了一些常用的机器学习的功能,其中就有聚类算法,包括K-均值算法

K-均值算法的Spark实现有以下参数

  • K是期望簇数
  • maxIterations是运行最大迭代次数
  • initializationMode是指定随机初始化还是通过kmeans||初始化
  • runs 是运行k-means算法次数
  • initializationsStep是确定kmeans||算法中步数
  • epsilon是确定距离阈值,达到这个阈值时就可以认为K-均值算法已经收敛
输入数据如下:

数据为二维坐标

1.0 2.0
1.0 3.0
1.0 4.0
2.0 5.0
2.0 6.0
2.0 7.0
2.0 8.0
3.0 100.0
3.0 101.0
3.0 102.0
3.0 103.0
3.0 104.0

在这里设置簇数为3,最大迭代次数为10

scala版本如下:

package Kmeans

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.mllib.clustering.KMeans
import org.apache.spark.mllib.linalg.Vectors

object Kmeans{

  def main(args: Array[String]): Unit={
    val sparkConf=new SparkConf().setAppName("Kmeans").setMaster("local")
    val sc=new SparkContext(sparkConf)

    val input="input/kmeans.txt"
    val k=3; //期望簇数
    val iterations=10;  //最大迭代次数
    val lines=sc.textFile(input)

    val points=lines.map(line=>{
      val tokens=line.split(" ")
      Vectors.dense(tokens.map(_.toDouble))
    })

    val model=KMeans.train(points,k,iterations,KMeans.K_MEANS_PARALLEL)

    println("Cluster centers: ")
    model.clusterCenters.foreach(println)

    val cost=model.computeCost(points)
    println(s"Cost :${cost}")

    sc.stop()
  }
}
运行结果

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值