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 相关文章推荐
linux系统使用python监测系统负载脚本分享
Jan 15 Python
mac系统安装Python3初体验
Jan 02 Python
Python迭代器与生成器用法实例分析
Jul 09 Python
TensorFlow用expand_dim()来增加维度的方法
Jul 26 Python
Python爬虫抓取技术的一些经验
Jul 12 Python
python3实现斐波那契数列(4种方法)
Jul 15 Python
Django ModelForm组件使用方法详解
Jul 23 Python
Django中使用MySQL5.5的教程
Dec 18 Python
Python 3.8 新功能大揭秘【新手必学】
Feb 05 Python
Python读取二进制文件代码方法解析
Jun 22 Python
详解Python调用系统命令的六种方法
Jan 28 Python
移除Selenium中window.navigator.webdriver值
Jun 10 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与Java对比学习日期时间函数
2016/07/03 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
2013/04/17 Javascript
jQuery点击弹出下拉菜单的小例子
2013/08/01 Javascript
使用AngularJS对路由进行安全性处理的方法
2015/06/18 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
2016/09/17 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
BootStrap下的弹出框加载select2框架失败的解决方法
2017/08/31 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
2019/05/23 Javascript
JS中的算法与数据结构之字典(Dictionary)实例详解
2019/08/20 Javascript
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
[02:04]2020年夜魇暗潮预告片
2020/10/30 DOTA
Python递归遍历列表及输出的实现方法
2015/05/19 Python
详解Python中的元组与逻辑运算符
2015/10/13 Python
Python学习之用pygal画世界地图实例
2017/12/07 Python
Python比较2个时间大小的实现方法
2018/04/10 Python
在双python下设置python3为默认的方法
2018/10/31 Python
python DataFrame 取差集实例
2019/01/30 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
2019/09/16 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
法学专业个人求职信
2013/09/26 职场文书
应届毕业生就业自荐信
2013/10/26 职场文书
外贸采购员求职的自我评价
2013/11/26 职场文书
个人求职信范文分享
2013/12/13 职场文书
运动会获奖感言
2014/02/11 职场文书
初级会计求职信范文
2014/02/15 职场文书
企业安全标语
2014/06/07 职场文书
关于国庆节的演讲稿
2014/09/05 职场文书
学校政风行风评议工作总结
2014/10/21 职场文书
导游词之天下银坑景区
2019/11/21 职场文书
Python上下文管理器Content Manager
2021/06/26 Python