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 相关文章推荐
pytyon 带有重复的全排列
Aug 13 Python
python创建进程fork用法
Jun 04 Python
Python 2.7中文显示与处理方法
Jul 16 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
Jan 04 Python
python对绑定事件的鼠标、按键的判断实例
Jul 17 Python
Django多数据库的实现过程详解
Aug 01 Python
Python数据存储之 h5py详解
Dec 26 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
Jul 02 Python
python海龟绘图之画国旗实例代码
Nov 11 Python
PyCharm Community安装与配置的详细教程
Nov 24 Python
python开发的自动化运维工具ansible详解
Aug 07 Python
Python语法学习之进程的创建与常用方法详解
Apr 08 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 pack与unpack 摸板字符字符含义
2009/10/29 PHP
认识并使用PHP超级全局变量
2010/01/26 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
PHP整合PayPal支付
2015/06/11 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
php反射学习之依赖注入示例
2019/06/14 PHP
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
javascript call方法使用说明
2010/01/11 Javascript
jQuery 工具函数学习资料
2010/04/29 Javascript
javascript判断非数字的简单例子
2013/07/18 Javascript
jquery得到font-size属性值实现代码
2013/09/30 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
AngularJS通过$location获取及改变当前页面的URL
2016/09/23 Javascript
Node.js开启Https的实践详解
2016/10/25 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
2016/12/31 Javascript
JavaScript之iterable_动力节点Java学院整理
2017/06/29 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
jQuery实现checkbox的简单操作
2017/11/18 jQuery
如何使用less实现随机下雪动画详解
2019/01/02 Javascript
浅谈关于JS下大批量异步任务按顺序执行解决方案一点思考
2019/01/08 Javascript
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
PyTorch中的Variable变量详解
2020/01/07 Python
如何在mac下配置python虚拟环境
2020/07/06 Python
python实现计算器简易版
2020/12/17 Python
CSS3 真的会替代 SCSS 吗
2021/03/09 HTML / CSS
美国领先的家居装饰和礼品商店:Kirkland’s
2017/01/30 全球购物
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
什么是Rollback Segment
2013/04/22 面试题
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
怎么写有吸引力的自荐信
2013/11/17 职场文书
三八妇女节活动主持词
2014/03/17 职场文书
小学生国庆65周年演讲稿范文(2篇)
2014/09/21 职场文书
秋菊打官司观后感
2015/06/03 职场文书
幼儿园毕业典礼家长致辞
2015/07/29 职场文书