kmeans算法及python实现
算法步骤:
- 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∈cjxi(即属于该类的所有样本的质心);
- 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实现相关推荐
- 【数据聚类】第三章第二节2:K-Means算法及其Python实现(算法实现、结果展示)
pdf下载(密码:7281) 本文上接:[数据聚类]第三章第二节1:K-Means算法及其Python实现(距离度量方式.目标函数和算法流程) 本文下接:[数据聚类]第三章第二节3:K-Means算法 ...
- k-means算法及python实现
本篇文章主要讲解聚类分析中的一种常用的算法k-means,它的全称叫作k均值算法. k-means原理 k-means算法是一种基于原型的.划分的聚类技术. 基于原型可以理解为基于质心,也就是说,每个 ...
- k-means算法与Python实践
机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...
- 图片聚类——k-means算法的python实现
1.前言 这篇文章是基于k-means算法进行图片聚类,而不是对单个图片的像素聚类,分别基于RGB.HSV和HOG特征进行聚类分析. 2.图片特征提取--RGB RGB为图片最基本的特征,但很多时候R ...
- k-means算法实现python
import numpy as np import matplotlib.pyplot as plt# 两点距离 def distance(e1, e2):return np.sqrt((e1[0]- ...
- 随机分布式延迟PSO(RODDPSO)+K-Means算法(Python代码实现)
- 利用 Python 实现 K-means 算法
利用 Python 实现 K-means 算法 使用 Python 实现K-means算法,采用随机函数随机在二维平面上生成100个点,然后使用所写程序对这100个点进行聚类[可以采用SSE(Su ...
- 聚类(Clustering): K-means算法
聚类(Clustering): K-means算法 1.归类: 聚类(clustering)属于非监督学习(unsupervised learning) 无类别标记( class label) 3. ...
- K-means 算法实现二维数据聚类
所谓聚类分析,就是给定一个元素集合D,其中每个元素具有n个观测属性,对这些属性使用某种算法将D划分成K个子集,要求每个子集内部的元素之间相似度尽可能高,而不同子集的元素相似度尽可能低.聚类分析是一种无 ...
- python实现K-means算法
K-means算法流程: 随机选k个样本作为初始聚类中心 计算数据集中每个样本到k个聚类中心距离,并将其分配到距离最小的聚类中心 对于每个聚类,重新计算中心 回到2,至得到局部最优解 python代码 ...
最新文章
- vsftpd实现的FTP服务
- 《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——自编解析与答案
- java 更新对象_java通过key-list和对应value更新当前对象
- VS Tools for AI全攻略
- java 静态与非静态之间的访问规则简述
- 101 LINQ Samples
- python实现共轭梯度算法(含误差与运算次数的折线图)
- Mandelbrot vs Julia
- 嵌入式学习二:怎么学习Linux操作系统
- 感人至深:40岁博士毕业,新任安徽省长王清宪的博士论文后记
- 磁珠 符号_磁珠简介_磁珠的命名、单位和选型
- html前端实现李峋爱心代码 百分百复刻
- python读取tiff图像,浅谈python下tiff图像的读取和保存方法
- 鸿蒙系统如何开启快捷方式,鸿蒙系统功能介绍-华为鸿蒙系统功能详细介绍 - 系统家园...
- 解决SQL适配器连接到字符集为US7ASCII的Oracle数据库的中文乱码问题
- Git ---- 国内代码托管中心-码云
- 新概念英语学习笔记-1
- ArcGIS教程:创建条形图
- 雪球释老毛推荐的投资者书单
- WINCE5.0软件总汇(20100411更新)