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 相关文章推荐
pycharm 使用心得(三)Hello world!
Jun 05 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
Nov 16 Python
python中实现迭代器(iterator)的方法示例
Jan 19 Python
Python优先队列实现方法示例
Sep 21 Python
Django Web开发中django-debug-toolbar的配置以及使用
May 06 Python
对numpy中的数组条件筛选功能详解
Jul 02 Python
python中字符串数组逆序排列方法总结
Jun 23 Python
python for循环remove同一个list过程解析
Aug 14 Python
python打造爬虫代理池过程解析
Aug 15 Python
Python如何读取文件中图片格式
Jan 13 Python
python中逻辑与或(and、or)和按位与或异或(&amp;、|、^)区别
Aug 05 Python
anaconda3安装及jupyter环境配置全教程
Aug 24 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应用提速面面观
2006/10/09 PHP
非常实用的PHP常用函数汇总
2014/12/17 PHP
php恢复数组的key为数字序列的方法
2015/04/28 PHP
Symfony2框架学习笔记之表单用法详解
2016/03/18 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
2018/04/21 PHP
Javascript 解疑
2009/11/11 Javascript
javascript中的注释使用与注意事项小结
2011/09/20 Javascript
JS解析json数据并将json字符串转化为数组的实现方法
2012/12/25 Javascript
Nodejs学习笔记之NET模块
2015/01/13 NodeJs
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
livereload工具实现前端可视化开发【推荐】
2016/12/23 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
2017/01/04 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
详谈js模块化规范
2017/07/07 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
vue-cli3使用 DllPlugin 实现预编译提升构建速度
2019/04/24 Javascript
es6函数之严格模式用法实例分析
2020/03/17 Javascript
JavaScript组合模式---引入案例分析
2020/05/23 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
[01:17]炒鸡美酒第四天TA暴走
2018/06/05 DOTA
python发送伪造的arp请求
2014/01/09 Python
Python绘制3D图形
2018/05/03 Python
python自动截取需要区域,进行图像识别的方法
2018/05/17 Python
python中for用来遍历range函数的方法
2018/06/08 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
Python如何合并多个字典或映射
2020/07/24 Python
Python爬虫之Selenium鼠标事件的实现
2020/12/04 Python
Athleta官网:购买女士瑜伽服、技术运动服和休闲运动服
2020/11/12 全球购物
教师四风问题整改措施
2014/09/25 职场文书
2014年村委会工作总结
2014/11/24 职场文书
2015年班组长工作总结
2015/04/10 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
使用javascript解析二维码的三种方式
2021/11/11 Javascript