K-Means聚类方法

1. 介绍
k均值聚类是基于样本集合划分的聚类算法。由于每个样本在划分的过程中只能属于一个类别,所以k-Means算法属于硬聚类。

2. 算法过程
k均值聚类算法是一个迭代的过程,每次迭代包括两个步骤:

  • (1)初始化:随机选择k个样本作为初始聚类中心
  • (2)对样本进行聚类:计算每个样本到类中心的距离,将每个样本指派到与其最近的中心得类中,构成聚类结果。
  • (3)计算新的聚类中心:对(2)中得到的聚类结果,计算各个类中的样本的均值,作为新的聚类中心。
  • (4)如果迭代收敛或符合停止条件,输出结果,否则返回(2).

3. 复杂度
K均值聚类算法的复杂度O(mnk),其中k表示类别数,m表示样本维度,n表示样本个数。

4. 初始中心的选择
选择不同的初始中心,会得到不同的聚类结果。对于初始中心的选择,可以用层次聚类对样本进行聚类,得到k个类时停止。然后从每个类中选取一个与中心距离最近的点。

5.类别数k的选择
k均值聚类算法的类别数k需要提前设定,而实际应用中最优的k值是不知道的。因此,可以尝试不同的k值聚类,检验各个得到聚类结果的质量,推测最优的k值。聚类结果的质量可以用类的平均直径来衡量。

聚类算法之K均值聚类相关推荐

  1. 聚类算法中 K均值聚类(KMeans)的python实现

    ** 聚类算法中 K均值聚类(KMeans)的python实现 ** import numpy as np import matplotlib.pyplot as plt from sklearn.d ...

  2. R语言聚类算法之k均值聚类(K-means)

    1.原理解析: 随机选取k(预设类别数)个样本作为起始中心点,将其余样本归入相似度最高中心点所在簇(cluster),再确立当前簇中样本坐标的均值为新的中心点,一次循环迭代下去,直至所有样本所属类别不 ...

  3. Python数据分析笔记:聚类算法之K均值

    我们之前接触的所有机器学习算法都有一个共同特点,那就是分类器会接受2个向量:一个是训练样本的特征向量X,一个是样本实际所属的类型向量Y.由于训练数据必须指定其真实分类结果,因此这种机器学习统称为有监督 ...

  4. 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 ...

  5. 算法杂货铺——k均值聚类(K-means)

    算法杂货铺--k均值聚类(K-means) 2010-09-20 20:05 by T2噬菌体, 57998 阅读, 48 评论, 收藏, 编辑 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法 ...

  6. 机器学习算法之 K 均值聚类

    机器学习算法之 K 均值聚类 本文我们来学习一下另一种经常听到的机器学习算法-- K 均值聚类. 这个名字确实跟"K 近邻"有些相像,但是要明确的是,"K 近邻" ...

  7. pythonk均值实现_python实现k均值算法示例(k均值聚类算法)

    简易完成平面图的点K平均值剖析,应用欧几里得间距,并且用pylab展现. 编码以下: import pylab as pl #calc Euclid squire def calc_e_squire( ...

  8. 机器学习之原型聚类算法(K均值和高斯混合)

    "原型"是指样本空间中具有代表性的点. 原型聚类算法是假设聚类结构能通过一组原型进行刻画,在现实聚类任务中极为常用. 通常情形下,算法先对原型进行初始化,然后对原型进行迭代更新求解 ...

  9. 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)

    其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...

最新文章

  1. 【转】vim中将tab自动转换成空格
  2. SAP 调用smartforms打印如何统计实际打印状态和打印次数
  3. python爬虫在哪里学_学完了python基础想学习python爬虫从哪里学起呢?
  4. ci框架中引入css,php ci框架中载入css和js文件失败的原因及解决方法
  5. 开发整理笔记Markdown基本使用
  6. Jmeter如何将返回值作为下一接口的参数?
  7. angular语言前端开发_详解使用angular-cli发布i18n多国语言Angular应用_唇印_前端开发者...
  8. 用jquery在一个页面加载另一个页面
  9. W3school练习
  10. C#上位机与台达PLC通信,modbus TCP协议。真实使用项目,该程序框架完整,适合在此基础上开发项目
  11. mpchart点击_MPAndroidChart 中BarChart使用遇到问题,求大神们指教。
  12. Lisp-Stat翻译 —— 第十章 一些动态绘图实例
  13. 把海水变得更蓝更透!关键在调整-曝光度
  14. 计算机桌面图标出现蓝框,win10桌面快捷图标蓝框怎么去除 附黑色方块去除/白色方块修复的方法步骤...
  15. linux系统写批处理文件
  16. Git 从已有分支拉出新分支
  17. 中国石油大学《化工原理二》第三阶段在线作业
  18. Ubuntu快捷键——终端
  19. centos7.5下gmssl安装使用教程
  20. 代码随想录Day01:数组理论基础、二分查找、移除元素

热门文章

  1. 产品的天机和成败:我的实践史与俞军的方法论
  2. matlab鼠标三维坐标点,Matlab获取鼠标坐标值的两种途径
  3. 使用ThreadPoolExecutor遇到的核心线程被阻塞,非核心线程未按照预期运行问题
  4. 【性能测试】性能测试的概念、分类及特点
  5. 在DJango中session的使用方法
  6. js中session的使用
  7. 福州java开发工资水平,进阶学习
  8. SpringBoot系列教材 (十三)- 持久层支持 - springboot中如何运用JPA,简单例子
  9. mysql_upgrade——检查和升级mysql表
  10. zImage制作uImage