K-均值聚类算法
来源:互联网 发布:cad中网络接口怎么画 编辑:程序博客网 时间:2024/05/16 17:03
聚类:是一种无监督的学习,它将相似的对象归到同一个簇中,有点像全自动分类。
1. k-均值聚类算法
分类簇数为K
每个簇的质心为所有点的平均值
原理:
1. 随机选择起始质心(也就是簇的中心点)
2. 任意一个中心点是否发生变化?
3. 每个数据点与K个质心的距离比较,哪个距离短,这个数据点就属于哪个簇。
4. 对分好的每个簇,计算簇中所有点的均值,并将均值作为质心(新的中心点)
5. 重复上面三个步骤,直到中心点没有发生变化。
代码如下:
def kMeans(dataSet, k, distMeas=distEclud, createCent=randCent): m = np.shape(dataSet)[0] clusterAssment = np.mat(np.zeros((m,2)))#create mat to assign data points #to a centroid, also holds SE of each point centroids = createCent(dataSet, k) clusterChanged = True while clusterChanged: clusterChanged = False for i in range(m):#for each data point assign it to the closest centroid minDist = np.inf; minIndex = -1 for j in range(k): distJI = distMeas(centroids[j,:],dataSet[i,:]) if distJI < minDist: minDist = distJI; minIndex = j if clusterAssment[i,0] != minIndex: clusterChanged = True clusterAssment[i,:] = minIndex,minDist**2 print (centroids) for cent in range(k):#recalculate centroids ptsInClust = dataSet[np.nonzero(clusterAssment[:,0].A==cent)[0]]#get all the point in this cluster centroids[cent,:] = np.mean(ptsInClust, axis=0) #assign centroid to mean return centroids, clusterAssment
缺点:
k-均值算法收敛到了局部最小值,而非全局最小值。
2. 二分k-均值算法
为了克服k-均值算法收敛于局部最小值的问题,可以使用二分k-均值法。
阅读全文
0 0
- K-均值聚类算法
- K均值聚类算法
- K-均值聚类算法
- 聚类算法:K均值
- K-均值聚类算法
- K-均值聚类算法
- k均值聚类算法
- k均值聚类算法
- K-均值聚类算法
- k均值聚类算法
- K-均值聚类算法
- K均值(K-means)聚类算法
- K-均值聚类算法(K-means)
- K-均值聚类算法(K-mean)
- K均值聚类算法(K-Means)
- 聚类算法:k均值(k-means)
- K-means(K-均值)聚类算法
- K-均值聚类算法(K-means algorithm) & 二分K-均值算法(Bisecting k-means algorithm)
- 微信自定义分享-分享到朋友圈时title为desc的问题解决
- 分页
- Vue入门
- leetcode题解-203. Remove Linked List Elements
- 【学习笔记】原子位|内核线程
- K-均值聚类算法
- 一种将枚举Enum转换为JSON对象的方法
- ROS教程(十):创建ROS消息和ROS服务
- 一位10年Java工作经验的架构师聊Java和工作经验
- MATLAB学习笔记 学习总结归纳(第二周)
- Java8新特性学习
- java-base64编码和解码
- (十)Canvas 的基本使用
- 图片切分小程序和图片重新调整大小兼重命名小程序