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验证企业工商注册码
Oct 25 Python
Python数组遍历的简单实现方法小结
Apr 27 Python
Python错误: SyntaxError: Non-ASCII character解决办法
Jun 08 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
Sep 08 Python
Python生成任意范围任意精度的随机数方法
Apr 09 Python
Python利用递归实现文件的复制方法
Oct 27 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
Aug 12 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
Sep 26 Python
详解在python操作数据库中游标的使用方法
Nov 12 Python
解决jupyter notebook import error但是命令提示符import正常的问题
Apr 15 Python
使用OpenCV对车道进行实时检测的实现示例代码
Jun 19 Python
一文读懂Python 枚举
Aug 25 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
PHPWind 发帖回帖Api PHP版打包下载
2010/02/08 PHP
PHP中PDO基础教程 入门级
2011/09/04 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
PHP时间戳与日期之间转换的实例介绍
2013/04/19 PHP
奉献出一个封装的curl函数 便于调用(抓数据专用)
2013/07/22 PHP
模板引擎smarty工作原理以及使用示例
2014/05/25 PHP
PHP统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
PHP实现的解汉诺塔问题算法示例
2018/08/06 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
JavaScript While 循环基础教程
2007/04/05 Javascript
JS网页在线获取鼠标坐标值的方法
2015/02/28 Javascript
原生JS实现旋转木马式图片轮播插件
2016/04/25 Javascript
jQuery中deferred对象使用方法详解
2016/07/14 Javascript
JavaScript切换搜索引擎的导航网页搜索框实例代码
2017/06/11 Javascript
vue 使用eventBus实现同级组件的通讯
2018/03/02 Javascript
vue-cli3.0 环境变量与模式配置方法
2018/11/08 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
VUE兄弟组件传值操作实例分析
2019/10/26 Javascript
[01:00:12]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第一场
2018/04/09 DOTA
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
Python同时向控制台和文件输出日志logging的方法
2015/05/26 Python
基于wxpython实现的windows GUI程序实例
2015/05/30 Python
python生成器,可迭代对象,迭代器区别和联系
2018/02/04 Python
python range()函数取反序遍历sequence的方法
2018/06/25 Python
对python中大文件的导入与导出方法详解
2018/12/28 Python
python pandas模块基础学习详解
2019/07/03 Python
Django Rest framework三种分页方式详解
2019/07/26 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
mac在matplotlib中显示中文的操作方法
2020/03/06 Python
五分钟学会HTML5的WebSocket协议
2019/11/22 HTML / CSS
意大利值得信赖的在线超级药房:PillolaStore
2020/02/05 全球购物
个人求职信范文
2014/05/24 职场文书
2016三八妇女节慰问信
2015/11/30 职场文书
创业计划书之花店
2019/09/20 职场文书
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript