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数据类型转换函数总结
Mar 11 Python
Python中特殊函数集锦
Jul 27 Python
python+selenium开发环境搭建图文教程
Aug 11 Python
Python爬取当当、京东、亚马逊图书信息代码实例
Dec 09 Python
Python3一行代码实现图片文字识别的示例
Jan 15 Python
Pandas GroupBy对象 索引与迭代方法
Nov 16 Python
python中对数据进行各种排序的方法
Jul 02 Python
使用Python轻松完成垃圾分类(基于图像识别)
Jul 09 Python
python多任务之协程的使用详解
Aug 26 Python
python性能测量工具cProfile使用解析
Sep 26 Python
python 实现兔子生兔子示例
Nov 21 Python
Python模块的制作方法实例分析
Dec 21 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 setcookie设置Cookie用法(及设置无效的问题)
2011/07/13 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
PHP使用ODBC连接数据库的方法
2015/07/18 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
2015/10/08 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
2018/06/06 PHP
JQuery this 和 $(this) 的区别
2009/08/23 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
javascript使用switch case实现动态改变超级链接文字及地址
2014/12/16 Javascript
jQuery中animate()方法用法实例
2014/12/24 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
在AngularJS中使用AJAX的方法
2015/06/17 Javascript
JavaScript ES6中CLASS的使用详解
2016/11/22 Javascript
JavaScript字符串对象
2017/01/14 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
jquery实现图片跟随鼠标的实例
2017/10/17 jQuery
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
JavaScript分步实现一个出生日期的正则表达式
2018/03/22 Javascript
支付宝小程序自定义弹窗dialog插件的实现代码
2018/11/30 Javascript
JavaScript数据结构与算法之二叉树添加/删除节点操作示例
2019/03/01 Javascript
探索JavaScript中私有成员的相关知识
2019/06/13 Javascript
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
深入学习python的yield和generator
2016/03/10 Python
快速实现基于Python的微信聊天机器人示例代码
2017/03/03 Python
Python外星人入侵游戏编程完整版
2020/03/30 Python
python遍历小写英文字母的方法
2019/01/02 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
Python 找出出现次数超过数组长度一半的元素实例
2020/05/11 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
2021/02/05 Python
幼儿教育感言
2014/02/05 职场文书
暑期培训班策划方案
2014/08/26 职场文书
防汛工作情况汇报
2014/10/28 职场文书
七年级作文之下雨天
2019/12/23 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers