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最基本的输入输出详解
Apr 25 Python
Python实现的彩票机选器实例
Jun 17 Python
深入浅析Python中join 和 split详解(推荐)
Jun 30 Python
windows10系统中安装python3.x+scrapy教程
Nov 08 Python
使用PyCharm创建Django项目及基本配置详解
Oct 24 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
Jan 09 Python
20行python代码的入门级小游戏的详解
May 05 Python
Python 50行爬虫抓取并处理图灵书目过程详解
Sep 20 Python
基于Tensorflow批量数据的输入实现方式
Feb 05 Python
Python requests获取网页常用方法解析
Feb 20 Python
Python容器类型公共方法总结
Aug 19 Python
如何基于python实现年会抽奖工具
Oct 20 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 Memcache 中实现消息队列
2009/11/24 PHP
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
2015/06/17 PHP
php基于websocket搭建简易聊天室实践
2016/10/24 PHP
PHP之多条件混合筛选功能的实现方法
2019/10/09 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
2019/11/13 PHP
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
javascript解析xml实现省市县三级联动的方法
2015/07/25 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
jquery validate表单验证插件
2016/09/06 Javascript
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
2017/01/20 Javascript
jQuery图片轮播功能实例代码
2017/01/29 Javascript
深入理解ES6中let和闭包
2018/02/22 Javascript
使用vue制作探探滑动堆叠组件的实例代码
2018/03/07 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
2019/06/18 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
vue项目查看vue版本及cli版本的实现方式
2020/10/24 Javascript
[50:05]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
Python内置模块logging用法实例分析
2018/02/12 Python
Django实现单用户登录的方法示例
2019/03/28 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
python Pexpect模块的使用
2020/12/25 Python
java字符串格式化输出实例讲解
2021/01/06 Python
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
美国最受欢迎的度假租赁网站:VRBO
2016/08/02 全球购物
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
瑞典时尚耳机品牌:Urbanears
2017/07/26 全球购物
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
公司领导推荐信
2013/11/12 职场文书
体育教育毕业生自荐信
2013/11/21 职场文书
实习自我鉴定
2013/12/15 职场文书