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程序运行效率的6个方法
Mar 31 Python
仅利用30行Python代码来展示X算法
Apr 01 Python
Python文件处理
Feb 29 Python
Python科学计算之Pandas详解
Jan 15 Python
python 基础教程之Map使用方法
Jan 17 Python
Python初学时购物车程序练习实例(推荐)
Aug 08 Python
python2和python3的输入和输出区别介绍
Nov 20 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
Aug 06 Python
python 解决tqdm模块不能单行显示的问题
Feb 19 Python
python3 xpath和requests应用详解
Mar 06 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
May 16 Python
Python 字典一个键对应多个值的方法
Sep 29 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
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
PHP 高手之路(二)
2006/10/09 PHP
用PHP为SHOPEX增加日志功能代码
2010/07/02 PHP
如何设置mysql允许外网访问
2013/06/04 PHP
php ios推送(代码)
2013/07/01 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
PHP7扩展开发教程之Hello World实现方法示例
2017/08/03 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
jquery.validate使用攻略 第二部
2010/07/01 Javascript
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
javascript与jquery中跳出循环的区别总结
2013/11/04 Javascript
JavaScript 事件对象介绍
2015/04/13 Javascript
jQuery获取页面元素绝对与相对位置的方法
2015/06/10 Javascript
巧用jQuery选择器提高写表单效率的方法
2016/08/19 Javascript
基于JavaScript实现熔岩灯效果导航菜单
2017/01/04 Javascript
JavaScript实现隐藏省略文字效果的方法
2017/04/27 Javascript
vue实现拖拽的简单案例 不超出可视区域
2019/07/25 Javascript
vue 插槽简介及使用示例
2020/11/19 Vue.js
vue二选一tab栏切换新做法实现
2021/01/19 Vue.js
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
Python2.x与Python3.x的区别
2016/01/14 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
2016/07/01 Python
python模拟事件触发机制详解
2018/01/19 Python
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
将python图片转为二进制文本的实例
2019/01/24 Python
Python创建一个元素都为0的列表实例
2019/11/28 Python
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
ToysRus日本官网:玩具反斗城
2018/09/08 全球购物
英国最大的在线亚洲杂货店:Red Rickshaw
2020/03/22 全球购物
财务部绩效考核方案
2014/05/04 职场文书
茶楼服务员岗位职责
2015/02/09 职场文书
开学第一周总结
2015/07/16 职场文书
男方家长婚礼致辞
2015/07/27 职场文书
MySQL CHAR和VARCHAR该如何选择
2021/05/31 MySQL
mysql备份策略的实现(全量备份+增量备份)
2021/07/07 MySQL