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使用mysqldb连接数据库操作方法示例详解
Dec 03 Python
Python实现提取文章摘要的方法
Apr 21 Python
Python实现线程状态监测简单示例
Mar 28 Python
Python实现获取本地及远程图片大小的方法示例
Jul 21 Python
python求解数组中两个字符串的最小距离
Sep 27 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
Oct 21 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
django表单的Widgets使用详解
Jul 22 Python
Python closure闭包解释及其注意点详解
Aug 28 Python
python正则表达式实例代码
Mar 03 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
Mar 12 Python
python 邮件检测工具mmpi的使用
Jan 04 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
11个PHP 分页脚本推荐
2011/08/15 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
2019/04/17 PHP
PHP文件操作简单介绍及函数汇总
2020/12/11 PHP
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
jquery 最简单易用的表单验证插件
2010/02/27 Javascript
javascript字符串拼接的效率问题
2010/12/25 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
2013/04/09 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
jquery实现简单的瀑布流布局
2016/12/11 Javascript
详解jQuery选择器
2016/12/21 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
JS将网址url转化为JSON格式的方法
2018/07/02 Javascript
vue双向绑定数据限制长度的方法
2019/11/04 Javascript
Json实现传值到后台代码实例
2020/06/30 Javascript
JavaScript实现五子棋小游戏
2020/10/26 Javascript
[05:16]《大圣!大圣》——DOTA2新英雄齐天大圣配音李世宏老师专访
2016/12/13 DOTA
Python不规范的日期字符串处理类
2014/06/10 Python
Python实现控制台输入密码的方法
2015/05/29 Python
python开发之函数定义实例分析
2015/11/12 Python
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
python xlsxwriter创建excel图表的方法
2018/06/11 Python
简单了解python 邮件模块的使用方法
2019/07/24 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
浅谈python多线程和多线程变量共享问题介绍
2020/04/17 Python
python map比for循环快在哪
2020/09/21 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
2021/02/26 Python
HTML5使用drawImage()方法绘制图像
2014/06/23 HTML / CSS
益模软件Java笔试题
2012/03/27 面试题
精彩自我鉴定
2014/01/16 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书
2016年大学生实习单位评语
2015/12/01 职场文书