数据挖掘十大经典算法之二:K-means
来源:互联网 发布:堆垛机用与单片机 编辑:程序博客网 时间:2024/09/21 11:17
概念和原理
k-means是无监督聚类算法,主要是根据样本的相似度或者样本之间的距离进行自动分类。
首先,初始化聚类中心,可以随机选择K个样本,也可以固定选择其中的k个样本作为初始化的聚类中心。
其次,计算各样本到所有的聚类中心的相似度(此处用距离表示),将样本分到与聚类中心相似的最大即距离最小的中心所在的类中。
再次,更新聚类中心,可以通过样本的平均值计算
最后,循环迭代,直至满足停止条件。
Code
import numpy as npfrom operator import itemgetterdef loadData(filename): dataset = [] file = open(filename) for line in file.readlines(): dataset.append(map(float,line.strip().split('\t'))) return np.array(dataset)def computeDistence(dataset,centre): return np.sqrt(((dataset-centre)**2).sum(axis=1))def computeCentre(dataset,k): n = dataset.shape[1] centreSet = np.zeros((k,n)) minvalue = dataset.min(axis=0) maxvalue = dataset.max(axis=0) chageRange = maxvalue-minvalue centreSet = minvalue + chageRange*np.random.rand(k,2) return centreSetdef kmeans(dataset,k): m = dataset.shape[0] clusterResult = np.zeros((m,3)) centres =computeCentre(dataset,k) clusterChanged = True while clusterChanged: clusterChanged=False for i in range(m): distence = computeDistence(dataset[i],centres) indexes, sortedDistence = zip(*sorted(enumerate(distence), key=itemgetter(1))) if(clusterResult[i,1] !=indexes[0]): clusterChanged = True clusterResult[i,:] = i,indexes[0],sortedDistence[0] for i in range(k): tmp = dataset[np.array((clusterResult[clusterResult[:,1] == i])[:,0]).astype(np.int32)] meanvalue = np.mean(tmp,axis=0) centres[i,:] = np.mean(tmp,axis=0) return centres,clusterResultdef main(): dataset = loadData('testSet.txt') centres = computeCentre(dataset,4) centres,clusterResult = kmeans(dataset,4)if __name__ == '__main__': main()
0 0
- 数据挖掘十大经典算法之二:K-means
- 十大经典数据挖掘算法之K-Means算法
- 数据挖掘十大经典算法(二)The k-means algorithm 即K-Means算法
- 数据挖掘十大经典算法学习之K均值(K-means)聚类算法
- 大数据十大经典算法之k-means
- 数据挖掘十大算法- K-means 算法
- 数据挖掘十大经典算法(2) The k-means algorithm
- 转载 数据挖掘十大经典算法(2) The k-means algorithm
- 数据挖掘十大经典算法(2) The k-means algorithm
- 数据挖掘十大经典算法(2) The k-means algorithm
- 数据挖掘十大经典算法(2) The k-means algorithm .
- 数据挖掘十大经典算法(2) The k-means algorithm
- 数据挖掘十大经典算法(2) The k-means algorithm
- 数据挖掘十大经典算法(2) The k-means algorithm
- 数据挖掘十大经典算法(2) The k-means algorithm
- 数据挖掘十大经典算法(2) The k-means algorithm
- 数据挖掘十大算法之k-means算法(2)
- 大数据挖掘算法篇之K-Means实例
- Insight spring @Scheduled 解析过程
- ReviewForJob(3)表、栈和队列
- 计算机组成原理(2)
- 正则表达式
- 作为一个新手程序员该如何成长?
- 数据挖掘十大经典算法之二:K-means
- 图像滤镜艺术---PS引擎库发布
- hibernate优化
- CSS3伪类选择器之结构选择器root,not,empty,target
- 二叉搜索树的搜索、插入、遍历和删除(Java)
- 【7002】模拟计算机处理算术表达式过程
- [刷题]算法竞赛入门经典(第2版) 4-3/UVa220 - Othello
- 远程数据同步工具rsync
- 摘自《java 2 实用教程》 java自定义异常类