Python实现简单层次聚类算法以及可视化


Posted in Python onMarch 18, 2019

本文实例为大家分享了Python实现简单层次聚类算法,以及可视化,供大家参考,具体内容如下

基本的算法思路就是:把当前组间距离最小的两组合并成一组。

算法的差异在算法如何确定组件的距离,一般有最大距离,最小距离,平均距离,马氏距离等等。

代码如下:

import numpy as np
import data_helper
np.random.seed(1)
def get_raw_data(n):
 _data=np.random.rand(n,2)
 #生成数据的格式是n个(x,y)
 _groups={idx:[[x,y]] for idx,(x,y) in enumerate(_data)}
 return _groups
def cal_distance(cluster1,cluster2):
 #采用最小距离作为聚类标准
 _min_distance=10000
 for x1,y1 in cluster1:
  for x2,y2 in cluster2:
   _distance=(x1-x2)**2+(y1-y2)**2
   if _distance<_min_distance:
    _min_distance=_distance
 return _distance
groups=get_raw_data(10)
count=0
while len(groups)!=1:#判断是不是所有的数据是不是归为了同一类
 min_distance=10000
 len_groups=len(groups)
 
 for i in groups.keys():
  for j in groups.keys():
   if i>=j:
    continue
   distance=cal_distance(groups[i],groups[j])
   if distance<min_distance:
    min_distance=distance
    min_i=i
    min_j=j#这里的j>i
 groups[min_i].extend(groups.pop(min_j))
 data_helper.draw_data(groups)
 #一共n个簇,共迭代n-1次

运行的效果就是迭代一次,组数就会少一次,调用画图方法,同一组的数据被显示为一个颜色。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3.x和Python2.x的区别介绍
Feb 12 Python
利用python微信库itchat实现微信自动回复功能
May 18 Python
和孩子一起学习python之变量命名规则
May 27 Python
Python闭包执行时值的传递方式实例分析
Jun 04 Python
Python 加密与解密小结
Dec 06 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
May 06 Python
微信小程序python用户认证的实现
Jul 29 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
Aug 08 Python
python实现图像拼接功能
Mar 23 Python
python json.dumps中文乱码问题解决
Apr 01 Python
Python中使用threading.Event协调线程的运行详解
May 02 Python
PyQt5实现简单数据标注工具
Mar 18 #Python
Python简单I/O操作示例
Mar 18 #Python
python实现简单图片物体标注工具
Mar 18 #Python
Python面向对象程序设计之类的定义与继承简单示例
Mar 18 #Python
Python动态赋值的陷阱知识点总结
Mar 17 #Python
Python将字符串常量转化为变量方法总结
Mar 17 #Python
实例讲解Python中整数的最大值输出
Mar 17 #Python
You might like
星际中的相关伤害
2020/03/04 星际争霸
php标签云的实现代码
2012/10/10 PHP
php中filter_input函数用法分析
2014/11/15 PHP
动态改变textbox的宽高的js
2006/10/26 Javascript
jquery $.getJSON()跨域请求
2011/12/21 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
根据配置文件加载js依赖模块
2014/12/29 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
javasript实现密码的隐藏与显示
2015/05/08 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
微信小程序之小豆瓣图书实例
2016/11/30 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
2017/03/14 Javascript
详解使用 Node.js 开发简单的脚手架工具
2018/06/08 Javascript
微信小程序textarea层级过高的解决方法
2019/03/04 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
jQuery 实现DOM元素拖拽交换位置的实例代码
2020/07/14 jQuery
解决vue中使用less/sass及使用中遇到无效的问题
2020/10/24 Javascript
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
Python中的高级函数map/reduce使用实例
2015/04/13 Python
python自带的http模块详解
2016/11/06 Python
python如何将图片转换为字符图片
2020/08/19 Python
Python continue继续循环用法总结
2018/06/10 Python
python实现微信小程序自动回复
2018/09/10 Python
[原创]Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】
2018/10/29 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
python图形开发GUI库pyqt5的基本使用方法详解
2020/02/14 Python
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
王力宏牛津大学演讲稿
2014/05/22 职场文书
上海世博会志愿者口号
2014/06/17 职场文书
详解python的异常捕获
2022/03/03 Python
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python
小程序自定义轮播图圆点组件
2022/06/25 Javascript