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 相关文章推荐
深入理解Javascript中的this关键字
Mar 27 Python
python传递参数方式小结
Apr 17 Python
python对指定目录下文件进行批量重命名的方法
Apr 18 Python
举例讲解Python中metaclass元类的创建与使用
Jun 30 Python
Python面向对象编程中关于类和方法的学习笔记
Jun 30 Python
Python 多线程Threading初学教程
Aug 22 Python
Python基于xlrd模块操作Excel的方法示例
Jun 21 Python
Python利用heapq实现一个优先级队列的方法
Feb 03 Python
python实现视频分帧效果
May 31 Python
flask 框架操作MySQL数据库简单示例
Feb 02 Python
Django表单提交后实现获取相同name的不同value值
May 14 Python
Django DRF认证组件流程实现原理详解
Aug 17 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/06/29 PHP
一个经典实用的PHP图像处理类分享
2014/11/18 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
Open and Print a Word Document
2007/06/15 Javascript
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
2012/12/27 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
通过Javascript读取本地Excel文件内容的代码示例
2014/04/08 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
js判断变量初始化的三种形式及推荐用的形式
2014/07/22 Javascript
JavaScript数据类型判定的总结笔记
2015/07/31 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
JS作为值的函数用法示例
2016/06/20 Javascript
jquery常用的12个小功能
2016/07/22 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
聊聊鉴权那些事(推荐)
2019/08/22 Javascript
js动态添加带圆圈序号列表的实例代码
2021/02/18 Javascript
[57:31]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第一场 2月1日
2021/03/11 DOTA
在Python的Django框架中显示对象子集的方法
2015/07/21 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
收集的22款给力的HTML5和CSS3帮助工具
2012/09/14 HTML / CSS
写出SQL四条最基本的数据操作语句(DML)
2012/12/12 面试题
什么是组件架构
2016/05/15 面试题
管理科学大学生求职信
2013/11/13 职场文书
演讲稿格式范文
2014/05/19 职场文书
学位证书委托书
2014/09/30 职场文书
个人投资合作协议书
2014/10/12 职场文书
小学生安全保证书
2015/05/09 职场文书
导游词之北京明十三陵
2019/10/28 职场文书
深入理解python多线程编程
2021/04/18 Python
python实现进度条的多种实现
2021/04/29 Python
教你用Python matplotlib库制作简单的动画
2021/06/11 Python
mysql中如何用命令创建联合唯一索引
2022/04/20 MySQL
HttpClient实现文件上传功能
2022/08/14 Java/Android