zoukankan      html  css  js  c++  java
  • 【机器学习笔记五】聚类

    参考资料:

    【1】Spark Mlib 机器学习实践

    【2】机器学习

    【3】深入浅出K-means算法  http://www.csdn.net/article/2012-07-03/2807073-k-means

     

    一、概念

    K-means聚类是在无监督的情况下,将样本数据进行聚类。以2均值聚类的算法为例:

    1、在样本中选择两个初始化中心点;

    2、计算所有样本到这两个中心点的距离,并以此为基准将样本分为两类;

    3、将中心点移到这类样本的新中心点;

    4、重复2、3步骤直到满足要求;

    K-means也提供一种k维的one-hot编码,即当x属于聚类i时,那么对应的编码向量为1,否则为0

     

    二、距离

    K-means的计算依赖样本之间的距离计算,通常有如下几种:

    三、Spark Mlib下例子

    package kmean
    
    import org.apache.spark.mllib.clustering.KMeans
    import org.apache.spark.mllib.linalg.Vectors
    import org.apache.spark.{SparkContext, SparkConf}
    
    /*-
     * kmean聚类
     * Fredric 2017
     */
    object kmean {
      def main(args:Array[String]): Unit ={
    
        val conf = new SparkConf().setMaster("local").setAppName("kmean")
        val sc   = new SparkContext(conf)
    
        //每一个向量代表特征空间中的一个点
        val v0  = Vectors.dense(1)
        val v1  = Vectors.dense(2)
        val v2  = Vectors.dense(3)
        val v3  = Vectors.dense(4)
    
        val v4  = Vectors.dense(11)
        val v5  = Vectors.dense(25)
        val v6  = Vectors.dense(31)
    
        val data = sc.parallelize(Seq(v0, v1, v2, v3, v4, v5, v6))
    
        //setK表示最后聚类的分组数量是2,分成2组
        val model = new KMeans().setMaxIterations(20).setK(2).run(data)
    
    /*
        输出的两个中心点如下:
        [4.2]
        [28.0]*/
        model.clusterCenters.foreach(println)
      }
    }
  • 相关阅读:
    Javaweb开发环境与搭建
    剑指Offer:面试题32——从1到n整数中1出现的次数(java实现)
    剑指Offer:面试题31——连续子数组的最大和(java实现)
    剑指Offer:面试题30——最小的k个数(java实现)
    剑指Offer:面试题29——数组中出现次数超过一半的数字(java实现)
    剑指Offer:解决难题时的三大方法
    剑指Offer:面试题28——字符串的排列(java实现)(待序)
    剑指Offer:面试题27——二叉搜索树与双向链表(java实现)
    剑指Offer:面试题26——复制复杂的链表(java实现)
    剑指Offer:面试题25——二叉树中和为某一值的路径(java实现)
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/8516880.html
Copyright © 2011-2022 走看看