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 相关文章推荐
使用wxpython实现的一个简单图片浏览器实例
Jul 10 Python
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
Mar 30 Python
Python类的定义、继承及类对象使用方法简明教程
May 08 Python
Python实现豆瓣图片下载的方法
May 25 Python
Python编程入门之Hello World的三种实现方式
Nov 13 Python
Python实现批量更换指定目录下文件扩展名的方法
Sep 19 Python
python 字符串追加实例
Jul 20 Python
python单线程下实现多个socket并发过程详解
Jul 27 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
May 13 Python
Keras实现DenseNet结构操作
Jul 06 Python
Python 字典一个键对应多个值的方法
Sep 29 Python
python glom模块的使用简介
Apr 13 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 socke 向指定页面提交数据
2008/07/23 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
2016/02/23 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
Laravel使用模型实现like模糊查询的例子
2019/10/24 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
Jquery判断IE6等浏览器的代码
2011/04/05 Javascript
33个优秀的jQuery 教程分享(幻灯片、动画菜单)
2011/07/08 Javascript
javascript显式类型转换实例分析
2015/04/25 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
JS如何实现文本框随文本的长度而增长
2015/07/30 Javascript
两种方法解决javascript url post 特殊字符转义 + &amp; #
2016/04/13 Javascript
jQuery+Pdo编写login登陆界面
2016/08/01 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
2017/02/27 Javascript
AngularJs 终极购物车(实例讲解)
2017/11/08 Javascript
vue路由组件按需加载的几种方法小结
2018/07/12 Javascript
浅析vue插槽和作用域插槽的理解
2019/04/22 Javascript
Vue数字输入框组件的使用方法
2019/10/19 Javascript
vue移动端的左右滑动事件详解
2020/06/17 Javascript
[42:39]老党炸弹人试玩视频
2014/09/03 DOTA
python实现简单的TCP代理服务器
2014/10/08 Python
Python实现统计单词出现的个数
2015/05/28 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
2019/08/09 Python
Django 请求Request的具体使用方法
2019/11/11 Python
Python 生成短8位唯一id实战教程
2021/01/13 Python
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
2014/11/05 HTML / CSS
宿舍违规用电检讨书
2014/02/16 职场文书
英语专业职业生涯规划范文
2014/03/05 职场文书
通知书大全
2015/04/27 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
Python中for后接else的语法使用
2021/05/18 Python
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技
Python实现将多张图片合成MP4视频并加入背景音乐
2022/04/28 Python