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比较两个图片相似度的方法
Mar 13 Python
python实现自动解数独小程序
Jan 21 Python
详解Python time库的使用
Oct 10 Python
如何运行带参数的python脚本
Nov 15 Python
解决python web项目意外关闭,但占用端口的问题
Dec 17 Python
pytorch如何冻结某层参数的实现
Jan 10 Python
Django中Aggregation聚合的基本使用方法
Jul 09 Python
Python2.x与3​​.x版本有哪些区别
Jul 09 Python
Python timeit模块原理及使用方法
Oct 10 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
Nov 24 Python
详细介绍python类及类的用法
May 31 Python
python游戏开发Pygame框架
Apr 22 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
BBS(php &amp; mysql)完整版(三)
2006/10/09 PHP
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
比较全面的PHP数组的使用方法小结
2010/09/23 PHP
php中二维数组排序问题方法详解
2015/08/28 PHP
laradock环境docker-compose操作详解
2019/07/29 PHP
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
同时使用n个window onload加载实例介绍
2013/04/25 Javascript
输入自动提示搜索提示功能的javascript:sugggestion.js
2013/09/02 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
JavaScript获取数组最小值和最大值的方法
2015/06/09 Javascript
详解JavaScript函数
2015/12/01 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
2018/04/09 Javascript
微信小程序实现顶部下拉菜单栏
2018/11/04 Javascript
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
Koa 中的错误处理解析
2019/04/09 Javascript
vue项目前端错误收集之sentry教程详解
2019/05/27 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
2019/09/24 Javascript
Vuex实现数据共享的方法
2019/12/20 Javascript
PyQt5每天必学之进度条效果
2018/04/19 Python
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
python实现指定文件夹下的指定文件移动到指定位置
2018/09/17 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
Python数据可视化图实现过程详解
2020/06/12 Python
MUGLER官方网站:蒂埃里·穆勒香水
2019/11/26 全球购物
什么是数据抽象
2016/11/26 面试题
中华在我心中演讲稿
2014/09/13 职场文书
党的群众路线教育实践活动对照检查材料(个人)
2014/09/24 职场文书
项目建议书
2015/02/04 职场文书
Python-OpenCV实现图像缺陷检测的实例
2021/06/11 Python
浅析Django接口版本控制
2021/06/26 Python
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis