python实现k均值算法示例(k均值聚类算法)


Posted in Python onMarch 16, 2014

简单实现平面的点K均值分析,使用欧几里得距离,并用pylab展示。

import pylab as pl
#calc Euclid squire
def calc_e_squire(a, b):
    return (a[0]- b[0]) ** 2 + (a[1] - b[1]) **2
#init the 20 point
a = [2,4,3,6,7,8,2,3,5,6,12,10,15,16,11,10,19,17,16,13]
b = [5,6,1,4,2,4,3,1,7,9,16,11,19,12,15,14,11,14,11,19]
#define two k_value
k1 = [6,3]
k2 = [6,1]
#defint tow cluster
sse_k1 = []
sse_k2 = []
while True:
    sse_k1 = []
    sse_k2 = []
    for i in range(20):
        e_squire1 = calc_e_squire(k1, [a[i], b[i]])
        e_squire2 = calc_e_squire(k2, [a[i], b[i]])
        if (e_squire1 <= e_squire2):
            sse_k1.append(i)
        else:
            sse_k2.append(i)
    #change k_value
    k1_x = sum([a[i] for i in sse_k1]) / len(sse_k1)
    k1_y = sum([b[i] for i in sse_k1]) / len(sse_k1)
    k2_x = sum([a[i] for i in sse_k2]) / len(sse_k2)
    k2_y = sum([b[i] for i in sse_k2]) / len(sse_k2)
    if k1 != [k1_x, k1_y] or k2 != [k2_x, k2_y]:
        k1 = [k1_x, k1_y]
        k2 = [k2_x, k2_y]
    else:
        break
kv1_x = [a[i] for i in sse_k1]
kv1_y = [b[i] for i in sse_k1]
kv2_x = [a[i] for i in sse_k2]
kv2_y = [b[i] for i in sse_k2]
pl.plot(kv1_x, kv1_y, 'o')
pl.plot(kv2_x, kv2_y, 'or')
pl.xlim(1, 20)
pl.ylim(1, 20)
pl.show()
Python 相关文章推荐
深入理解Python中的元类(metaclass)
Feb 14 Python
python连接字符串的方法小结
Jul 13 Python
Python编程中实现迭代器的一些技巧小结
Jun 21 Python
Apache如何部署django项目
May 21 Python
python实现决策树、随机森林的简单原理
Mar 26 Python
Numpy中的mask的使用
Jul 21 Python
Python sklearn KFold 生成交叉验证数据集的方法
Dec 11 Python
Python3实现获取图片文字里中文的方法分析
Dec 13 Python
Python OpenCV之图片缩放的实现(cv2.resize)
Jun 28 Python
python numpy生成等差数列、等比数列的实例
Feb 25 Python
Python猜数字算法题详解
Mar 01 Python
如何查看Django ORM执行的SQL语句的实现
Apr 20 Python
python实现保存网页到本地示例
Mar 16 #Python
利用打码兔和超人打码自封装的打码类分享
Mar 16 #Python
Python使用代理抓取网站图片(多线程)
Mar 14 #Python
python3.3使用tkinter开发猜数字游戏示例
Mar 14 #Python
Python subprocess模块学习总结
Mar 13 #Python
用Python和MD5实现网站挂马检测程序
Mar 13 #Python
python操作数据库之sqlite3打开数据库、删除、修改示例
Mar 13 #Python
You might like
PHP生成网页快照 不用COM不用扩展.
2010/02/11 PHP
PHP 处理TXT文件(打开/关闭/检查/读取)
2013/05/13 PHP
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
2016/03/25 PHP
PHP实现的随机IP函数【国内IP段】
2016/07/20 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
php定期拉取数据对比方法实例
2019/09/22 PHP
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
jQuery News Ticker 基于jQuery的即时新闻行情展示插件
2011/11/05 Javascript
Jquery 实现图片轮换
2015/01/28 Javascript
关于JS中prototype的理解
2015/09/07 Javascript
浅析javascript的return语句
2015/12/15 Javascript
javascript实现禁止复制网页内容汇总
2015/12/30 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
又一款js时钟!transform实现时钟效果
2016/08/15 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
2018/11/05 Javascript
mpvue+vant app搭建微信小程序的方法步骤
2019/02/11 Javascript
layui递归实现动态左侧菜单
2019/07/26 Javascript
Sublime Text3 配置 NodeJs 环境的方法
2020/05/20 NodeJs
让Vue响应Map或Set的变化操作
2020/11/11 Javascript
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
python爬虫之自制英汉字典
2019/06/24 Python
Python求均值,方差,标准差的实例
2019/06/29 Python
Python操作MySQL数据库实例详解【安装、连接、增删改查等】
2020/01/17 Python
django 将自带的数据库sqlite3改成mysql实例
2020/07/09 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
五年级英语教学反思
2014/01/31 职场文书
个人剖析材料及整改措施
2014/10/07 职场文书
老人节标语大全
2014/10/08 职场文书
群众路线自查报告及整改措施
2014/11/04 职场文书
2014年高数考试作弊检讨书
2014/12/14 职场文书
大学军训通讯稿
2015/07/18 职场文书
使用Oracle跟踪文件的问题详解
2021/06/28 Oracle
Android Rxjava3 使用场景详解
2022/04/07 Java/Android