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 12 Python
PYTHON 中使用 GLOBAL引发的一系列问题
Oct 12 Python
详解python string类型 bytes类型 bytearray类型
Dec 16 Python
详解Python3.6安装psutil模块和功能简介
May 30 Python
django使用LDAP验证的方法示例
Dec 10 Python
python+opencv实现摄像头调用的方法
Jun 22 Python
使用tqdm显示Python代码执行进度功能
Dec 08 Python
python3.7通过thrift操作hbase的示例代码
Jan 14 Python
python 爬取疫情数据的源码
Feb 09 Python
python实现从ftp服务器下载文件
Mar 03 Python
如何在pycharm中安装第三方包
Oct 27 Python
python 爬取小说并下载的示例
Dec 07 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面向对象全攻略 (五) 封装性
2009/09/30 PHP
解析如何用php screw加密php源代码
2013/06/20 PHP
php的sprintf函数的用法 控制浮点数格式
2014/02/14 PHP
php实现有趣的人品测试程序实例
2015/06/08 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
一个实用的php验证码类
2017/07/06 PHP
jquery操作cookie插件分享
2014/01/14 Javascript
js中用window.open()打开多个窗口的name问题
2014/03/13 Javascript
玩转方法:call和apply
2014/05/08 Javascript
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
4种JavaScript实现简单tab选项卡切换的方法
2016/01/06 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
Vue登录主页动态背景短视频制作
2019/09/21 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
Vue项目利用axios请求接口下载excel
2020/11/17 Vue.js
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
Python加pyGame实现的简单拼图游戏实例
2015/05/15 Python
python验证码识别的实例详解
2016/09/09 Python
Python优先队列实现方法示例
2017/09/21 Python
Python3实现购物车功能
2018/04/18 Python
python socket网络编程之粘包问题详解
2018/04/28 Python
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
Python UnboundLocalError和NameError错误根源案例解析
2018/10/31 Python
python按行读取文件并找出其中指定字符串
2019/08/08 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
2020/04/18 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
Python sorted对list和dict排序
2020/06/09 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
2021/01/05 Python
Html5无刷新修改browser Url的方法
2014/01/15 HTML / CSS
网站美工岗位职责
2014/04/02 职场文书
小学三年级学生评语
2014/04/22 职场文书
企业消防安全责任书
2014/07/23 职场文书
贷款委托书怎么写
2014/08/02 职场文书
优秀班主任推荐材料
2014/12/17 职场文书
推销搭讪开场白
2015/05/28 职场文书