Bisecting k-means(二分K均值算法)

二分k均值(bisecting k-means)是一种层次聚类方法,算法的主要思想是:首先将所有点作为一个簇,然后将该簇一分为二。之后选择能最大程度降低聚类代价函数(也就是误差平方和)的簇划分为两个簇。以此进行下去,直到簇的数目等于用户给定的数目K为止。 
       以上隐含着一个原则是:因为聚类的误差平方和能够衡量聚类性能,该值越小表示数据点月接近于它们的质心,聚类效果就越好。所以我们就需要对误差平方和最大的簇进行再一次的划分,因为误差平方和越大,表示该簇聚类越不好,越有可能是多个簇被当成一个簇了,所以我们首先需要对这个簇进行划分。

bisecting k-means通常比常规K-Means方法运算快一些,也和K-Means聚类方法得到结果有所不同。 
    Bisecting k-means is a kind of hierarchical clustering using a divisive (or “top-down”) approach: all observations start in one cluster, and splits are performed recursively as one moves down the hierarchy. 
    Bisecting K-means can often be much faster than regular K-means, but it will generally produce a different clustering. 
       二分k均值算法的伪代码如下:

将所有的点看成一个簇
当簇数目小于k时对每一个簇:计算总误差在给定的簇上面进行k-均值聚类k=2计算将该簇一分为二后的总误差选择使得误差最小的那个簇进行划分操作
//BisectingKMeans和K-Means API基本上是一样的,参数也是相同的
//模型训练
val bkmeans=new BisectingKMeans().setK(2) .setMaxIter(100) .setSeed(1L) val model=bkmeans.fit(dataset) //显示聚类中心 model.clusterCenters.foreach(println) //SSE(sum of squared error)结果评估 val WSSSE=model.computeCost(dataset) println(s"within set sum of squared error = $WSSSE")

Bisecting k-means优缺点 
       同k-means算法一样,Bisecting k-means算法不适用于非球形簇的聚类,而且不同尺寸和密度的类型的簇,也不太适合。

摘自:http://blog.csdn.net/qq_34531825/article/details/52663428

转载于:https://www.cnblogs.com/bonelee/p/7229461.html

spark Bisecting k-means(二分K均值算法)相关推荐

  1. 机器学习算法与Python实践之(六)二分k均值聚类

    机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...

  2. k均值算法 二分k均值算法_如何获得K均值算法面试问题

    k均值算法 二分k均值算法 数据科学访谈 (Data Science Interviews) KMeans is one of the most common and important cluste ...

  3. Kmeans++、Mini-Batch Kmeans、Bisecting Kmeans、K中心点(K-Medoids)算法、K众数聚类、核K均值聚类

    Kmeans++.Mini-Batch Kmeans.Bisecting Kmeans.K中心点(K-Medoids)算法.K众数聚类.核K均值聚类 目录 Kmeans++.Mini-Batch Km ...

  4. k均值算法 二分k均值算法_使用K均值对加勒比珊瑚礁进行分类

    k均值算法 二分k均值算法 Have you ever seen a Caribbean reef? Well if you haven't, prepare yourself. 您见过加勒比礁吗? ...

  5. k均值聚类算法(K Means)及其实战案例

    算法说明 K均值聚类算法其实就是根据距离来看属性,近朱者赤近墨者黑.其中K表示要聚类的数量,就是说样本要被划分成几个类别.而均值则是因为需要求得每个类别的中心点,比如一维样本的中心点一般就是求这些样本 ...

  6. k-modes算法mysql_第十一章 K-Means(K均值)算法模型实现(中)

    python2 代码实现: from numpy import * import numpy def loadDataSet(fileName): #general function to parse ...

  7. python实现k均值算法_python实现kMeans算法

    聚类是一种无监督的学习,将相似的对象放到同一簇中,有点像是全自动分类,簇内的对象越相似,簇间的对象差别越大,则聚类效果越好. 1.k均值聚类算法 k均值聚类将数据分为k个簇,每个簇通过其质心,即簇中所 ...

  8. 基于SPSS的K均值算法

    文章目录 前言 一.K均值算法是什么? 二.动画演示 1.网站 2.示例 三.缺点解决(K-means++算法) 四.SPSS实现 总结 前言 菜鸡学习数学建模 一.K均值算法是什么? K-means ...

  9. k means聚类算法_一文读懂K-means聚类算法

    1.引言 什么是聚类?我们通常说,机器学习任务可以分为两类,一类是监督学习,一类是无监督学习.监督学习:训练集有明确标签,监督学习就是寻找问题(又称输入.特征.自变量)与标签(又称输出.目标.因变量) ...

最新文章

  1. 数据结构的映像方法(数据元素的机内表示)
  2. 安装APK到android设备那些事儿
  3. MySQL中的日期和时间类型
  4. tensorflow分布式训练之同步更新和异步更新
  5. html5游戏 糖果派对,糖果派对, 第三层的游戏攻略, 怎玩才能合理的获得比较高的得分?...
  6. Redis学习笔记之Redis单机,伪集群,Sentinel主从复制的安装和配置
  7. Java案例:静态内部类
  8. 英雄联盟S11总决赛EDG夺冠,网友:立下的flag可以兑现了
  9. 对'\0'的敬畏——由阶乘想到的
  10. autojs命令代码大全_各个主流品牌手机的命令代码大全,安卓工程模式的指令大全!...
  11. JAVA设计模式-委派模式(Delegate)
  12. HashSet存储元素保证唯一性的代码及图解
  13. Android开发 - 掌握ConstraintLayout(一)传统布局的问题 1
  14. Python 阿拉伯数字转换成英文
  15. 苹果腕表应用上架 开发要求_苹果手表系列6首发
  16. 数据结构化和半结构化的区别
  17. (适合小白)利用百度AI开放平台实现人脸检测,对比和搜索。
  18. CAN总线技术基本概念简述
  19. GB/T 20984-2022《信息安全技术 信息安全风险评估方法》解读
  20. P6跨级晋升P8再到P10,我的11年成长之路

热门文章

  1. JAVA多线程中join()方法的详细分析
  2. php reids的geo功能,Redis GEO相关命令和功能,你造吗?
  3. 在html表单中设置数组的方法是什么,js如何处理表单中的数组方式?
  4. mysql ef6 您的项目引用了最新版_您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mysql的技巧...
  5. java什么是函数式编程,Java 函数式编程(一)初识篇
  6. 计算机主键盘的布局,计算机键盘的布局,结构和布置
  7. java中jtansforms,Java3D中的viewplatform的旋转
  8. windows下查看当前进程,杀掉进程等
  9. 【深度学习】医学图像处理之视杯视盘分割调研分析
  10. 【Linux入门到精通系列讲解】shell脚本语法入门教程(看一篇就够了)