Python实现k-means算法
来源:互联网 发布:java 车牌识别 编辑:程序博客网 时间:2024/05/21 23:33
k-means算法描述如下:
输入:期望得到的簇的数目k,n个对象的数据D
输出:k个簇的集合
方法:
(1)选择k个对象作为初始的簇的质心
(2)repeat
(3)计算对象与各个簇的质心的距离,将对象划分到距离其最近的簇
(4)重新计算每个新簇的均值
(5)Until簇的质心不再变化
Python代码:
假设:给定如下要进行聚类的对象:
{2,4,10,12,3,20,30,11,25},k = 2# coding=utf-8'''计算两点之间的距离'''def distance(n1, n2): d = n1 - n2 if d < 0: d = -d return d '''计算一串数的中点'''def center(nums): sum = 0 for item in nums: sum = sum + item return sum / len(nums)'''k-means算法'''def main(): n = 2 nums = [2, 4, 10, 12, 3, 20, 30, 11, 25] c1 = nums[0] #类1的中心点,初始为第一个数 c2 = nums[1] #类2的中心点,初始为第二个数 new_c1 = c1-1 #一次聚类后类1新的中心点 new_c2 = c2 - 1 #一次聚类后类2新的中心点 g1 = [] #类1 g2 = [] #类2 isFirst = True step = 1 #k-means核心算法 while not c1 == new_c1 or not c2 == new_c2: print "----------------------------------------------" print "step %d" % step step = step + 1 #不是第一次运行,使用新的中心点 if not isFirst: c1 = new_c1 c2 = new_c2 isFirst = False #通过距离划分族 for item in nums : d1 = distance(item, new_c1) d2 = distance(item, new_c2) if d1 <= d2 : g1.append(item) else: g2.append(item) #计算新类的中点 new_c1 = center(g1) new_c2 = center(g2) g1.sort() g2.sort() print "group 1 is", g1 print "group 2 is", g2 #清空g1, g2 del g1[:] del g2[:] print "----------------------------------------------"#开始运行main()
初学数据挖掘,很多原理都不懂,写个算法练练手。
0 0
- Python 实现K-means算法
- Python实现k-means算法
- Python实现k-means算法
- k-means算法Python实现
- K-means算法 Python实现
- Python实现K-Means聚类算法
- K-means算法的Python实现
- k-means算法的Python实现
- k-means聚类算法python实现
- k-means算法(python)
- K-Means Python实现
- K-means算法实现
- K-means算法实现
- 聚类算法——python实现k-means算法
- 数据分类K—means 算法的python代码实现
- python 实现周志华 机器学习书中 k-means 算法
- 数据挖掘:K-Means算法的原理与Python实现
- 数据挖掘之k-means算法的Python实现
- osx下MobileBackups介绍
- ffmpeg安装第三方编码器
- 连接字符串放到配置文件中
- python time模块详解
- ubuntu 14.04.1安装sublime
- Python实现k-means算法
- 清除ARP缓存的方法
- 用JAVA写一个已知半径,计算园周长,面积的程序
- FTP文件的下载
- Django Admin安装可视化编辑器TinyMCE
- 学java教程之集合框架
- jdbc与数据库Oracle链接的自练习
- python发送邮件(二)
- bzoj1016: [JSOI2008]最小生成树计数[类Kruskal+并查集]