算法步骤:

  • 1.选择初始化的 k 个样本作为初始聚类中心: a1,a2...aka_1,a_2...a_ka1​,a2​...ak​;
  • 2.针对数据集中每个样本 xjx_jxj​, 计算它到 k 个聚类中心的距离并将其分到距离最小的聚类中心所对应的类中;
  • 3.针对2中分好的每个类别 aja_jaj​,重新计算它的类中心 aj′=1∣cj∣∑xi∈cjxia_j' = \frac{1}{|c_j|}\sum_{x_i \in c_j} x_iaj′​=∣cj​∣1​∑xi​∈cj​​xi​(即属于该类的所有样本的质心);
  • 4.重复上面 2、3 两步操作,直到达到某个中止条件(迭代次数、最小误差变化等)。

Python实现:

import numpy as np
import randomdef kmeans(data, k):    n,m = np.shape(data)   # 样本个数(n)和特征个数(m)centers = np.zeros((k, m))     # 存储选取的随机初始质心temp = random.sample(range(n), k)for i in range(k):center = data[temp[i]]centers[i] = center           label = np.zeros(n) # 存放每一步分类结果converged = False     # 判断收敛保证循环结束while not converged:old_centroids = np.copy(centers)for i in range(n):   # 对每一个数据点进行遍历,更新样本分类结果distlist = np.sqrt(np.sum((old_centroids - data[i])**2,axis = 1))   # 得到样本i和k个质心的距离列表label[i] = np.argmin(distlist)           for j in range(k):centers[j] = np.mean(data[label==j],axis = 0)   # 分类结果更新后的质心      set1 = set([tuple(c) for c in old_centroids])set2 = set([tuple(c) for c in centers])converged = (set1==set2)    # 判断是否达到循环终止条件return centers,label

kmeans算法及python实现相关推荐

  1. 【数据聚类】第三章第二节2:K-Means算法及其Python实现(算法实现、结果展示)

    pdf下载(密码:7281) 本文上接:[数据聚类]第三章第二节1:K-Means算法及其Python实现(距离度量方式.目标函数和算法流程) 本文下接:[数据聚类]第三章第二节3:K-Means算法 ...

  2. k-means算法及python实现

    本篇文章主要讲解聚类分析中的一种常用的算法k-means,它的全称叫作k均值算法. k-means原理 k-means算法是一种基于原型的.划分的聚类技术. 基于原型可以理解为基于质心,也就是说,每个 ...

  3. k-means算法与Python实践

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

  4. 图片聚类——k-means算法的python实现

    1.前言 这篇文章是基于k-means算法进行图片聚类,而不是对单个图片的像素聚类,分别基于RGB.HSV和HOG特征进行聚类分析. 2.图片特征提取--RGB RGB为图片最基本的特征,但很多时候R ...

  5. k-means算法实现python

    import numpy as np import matplotlib.pyplot as plt# 两点距离 def distance(e1, e2):return np.sqrt((e1[0]- ...

  6. 随机分布式延迟PSO(RODDPSO)+K-Means算法(Python代码实现)

  7. 利用 Python 实现 K-means 算法

    利用 Python 实现 K-means 算法   使用 Python 实现K-means算法,采用随机函数随机在二维平面上生成100个点,然后使用所写程序对这100个点进行聚类[可以采用SSE(Su ...

  8. 聚类(Clustering): K-means算法

    聚类(Clustering): K-means算法 1.归类: 聚类(clustering)属于非监督学习(unsupervised learning) 无类别标记( class label) 3. ...

  9. K-means 算法实现二维数据聚类

    所谓聚类分析,就是给定一个元素集合D,其中每个元素具有n个观测属性,对这些属性使用某种算法将D划分成K个子集,要求每个子集内部的元素之间相似度尽可能高,而不同子集的元素相似度尽可能低.聚类分析是一种无 ...

  10. python实现K-means算法

    K-means算法流程: 随机选k个样本作为初始聚类中心 计算数据集中每个样本到k个聚类中心距离,并将其分配到距离最小的聚类中心 对于每个聚类,重新计算中心 回到2,至得到局部最优解 python代码 ...

最新文章

  1. vsftpd实现的FTP服务
  2. 《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——自编解析与答案
  3. java 更新对象_java通过key-list和对应value更新当前对象
  4. VS Tools for AI全攻略
  5. java 静态与非静态之间的访问规则简述
  6. 101 LINQ Samples
  7. python实现共轭梯度算法(含误差与运算次数的折线图)
  8. Mandelbrot vs Julia
  9. 嵌入式学习二:怎么学习Linux操作系统
  10. 感人至深:40岁博士毕业,新任安徽省长王清宪的博士论文后记
  11. 磁珠 符号_磁珠简介_磁珠的命名、单位和选型
  12. html前端实现李峋爱心代码 百分百复刻
  13. python读取tiff图像,浅谈python下tiff图像的读取和保存方法
  14. 鸿蒙系统如何开启快捷方式,鸿蒙系统功能介绍-华为鸿蒙系统功能详细介绍 - 系统家园...
  15. 解决SQL适配器连接到字符集为US7ASCII的Oracle数据库的中文乱码问题
  16. Git ---- 国内代码托管中心-码云
  17. 新概念英语学习笔记-1
  18. ArcGIS教程:创建条形图
  19. 雪球释老毛推荐的投资者书单
  20. WINCE5.0软件总汇(20100411更新)

热门文章

  1. 事业单位资产管理系统解决方案:国有资产全生命周期管理监管体系
  2. CRM系统的营销工具亮点
  3. 机器学习与数据挖掘的学习路线图
  4. linux应用项目(一)数码相框(2)数码相框之字符编码与字符的点阵显示
  5. Atlas中间件实现Mysql读写分离
  6. new function()理解
  7. 环境与设备监控计算机套定额,第三章建筑设备监控系统安装工程定额.doc
  8. VS2017编译Detours1.5
  9. fluent p1模型_FLUENT基本物理模型介绍
  10. 图形学中常用计算几何总结