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 相关文章推荐
python字符串排序方法
Aug 29 Python
Python编程生成随机用户名及密码的方法示例
May 05 Python
Python构建网页爬虫原理分析
Dec 19 Python
基于pandas数据样本行列选取的方法
Apr 20 Python
python spyder中读取txt为图片的方法
Apr 27 Python
Python设计模式之模板方法模式实例详解
Jan 17 Python
Python基本数据结构之字典类型dict用法分析
Jun 08 Python
python实现从本地摄像头和网络摄像头截取图片功能
Jul 11 Python
在django中实现页面倒数几秒后自动跳转的例子
Aug 16 Python
PyTorch学习:动态图和静态图的例子
Jan 06 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
Jun 17 Python
详解Python 循环嵌套
Jul 09 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
PHPStrom 新建FTP项目以及在线操作教程
2016/10/16 PHP
如何利用预加载优化Laravel Model查询详解
2017/08/11 PHP
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
input的focus方法使用
2010/03/13 Javascript
javascript定时保存表单数据的代码
2011/03/17 Javascript
一个可拖拽列宽表格实例演示
2012/11/26 Javascript
JavaScript中伪协议 javascript:使用探讨
2014/07/18 Javascript
jQuery控制TR显示隐藏的三种常用方法
2014/08/21 Javascript
原创jQuery弹出层插件分享
2015/04/02 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
2015/10/28 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
2016/10/12 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
2017/03/01 Javascript
vue中axios处理http发送请求的示例(Post和get)
2017/10/13 Javascript
vue.js实现的幻灯片功能示例
2019/01/18 Javascript
[10:49]2014国际邀请赛 叨叨刀塔第二期为真正的电竞喝彩
2014/07/21 DOTA
python3.5使用tkinter制作记事本
2016/06/20 Python
python3 shelve模块的详解
2017/07/08 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
python实现图片插入文字
2019/11/26 Python
python爬虫学习笔记之pyquery模块基本用法详解
2020/04/09 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
Clarins娇韵诗美国官网:法国天然护肤品牌
2016/09/26 全球购物
伦敦一家非常流行的时尚精品店:Oxygen Boutique
2017/01/15 全球购物
意大利在线购买隐形眼镜网站:VisionDirect.it
2019/03/18 全球购物
业务主管岗位职责范本
2013/12/25 职场文书
学生手册家长评语
2014/02/10 职场文书
优秀乡村医生事迹材料
2014/05/28 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
孝老爱亲事迹材料
2014/12/24 职场文书
2016年11月份红领巾广播稿
2015/12/21 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
Go语言实现Snowflake雪花算法
2021/06/08 Golang
springboot入门 之profile设置方式
2022/04/04 Java/Android
使用pd.merge表连接出现多余行的问题解决
2022/06/16 Python