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多进程编程下线程之间变量的共享问题
May 05 Python
Python爬虫常用库的安装及其环境配置
Sep 19 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
Dec 11 Python
Python按钮的响应事件详解
Mar 04 Python
用python打印菱形的实操方法和代码
Jun 25 Python
Django的CVB实例详解
Feb 10 Python
python实现音乐播放和下载小程序功能
Apr 26 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
Jul 30 Python
Python requests上传文件实现步骤
Sep 15 Python
Python基于unittest实现测试用例执行
Nov 25 Python
python实现简单反弹球游戏
Apr 12 Python
Python如何配置环境变量详解
May 18 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
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
Laravel实现用户注册和登录
2015/01/23 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
IE和Firefox下event事件杂谈
2009/12/18 Javascript
jQuery select操作控制方法小结
2010/05/26 Javascript
jquery获取当前点击对象的value方法
2014/02/28 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
javascript中html字符串转化为jquery dom对象的方法
2015/08/27 Javascript
jQuery插件JWPlayer视频播放器用法实例分析
2017/01/11 Javascript
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
详解Node项目部署到云服务器上
2017/07/12 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
JavaScript数组去重的几种方法
2019/04/07 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
2019/04/29 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
vue滚动tab跟随切换效果
2020/06/29 Javascript
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
Python re模块介绍
2014/11/30 Python
简单介绍Python的Tornado框架中的协程异步实现原理
2015/04/23 Python
谈谈如何手动释放Python的内存
2016/12/17 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
2019/02/16 Python
pycharm快捷键汇总
2020/02/14 Python
python实现最速下降法
2020/03/24 Python
python判断正负数方式
2020/06/03 Python
CSS Grid布局教程之浏览器开启CSS Grid Layout汇总
2014/12/30 HTML / CSS
HTML5 canvas基本绘图之绘制矩形
2016/06/27 HTML / CSS
运动服饰每月订阅盒:Ellie
2018/04/29 全球购物
医护人员英文求职信范文
2013/11/26 职场文书
材料采购员岗位职责
2013/12/17 职场文书
《草原》教学反思
2014/02/15 职场文书
小学优秀学生评语
2014/12/29 职场文书
《狼牙山五壮士》读后感:宁死不屈,视死如归
2019/08/16 职场文书
解析Java中的static关键字
2021/06/14 Java/Android
OpenCV图像变换之傅里叶变换的一些应用
2021/07/26 Python