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 21 Python
Python中字典映射类型的学习教程
Aug 20 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
Jan 12 Python
使用Python对Excel进行读写操作
Mar 30 Python
python在ubuntu中的几种安装方法(小结)
Dec 08 Python
Python获取当前公网ip并自动断开宽带连接实例代码
Jan 12 Python
用Python写脚本,实现完全备份和增量备份的示例
Apr 29 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
May 29 Python
python对csv文件追加写入列的方法
Aug 01 Python
Django框架中间件定义与使用方法案例分析
Nov 28 Python
Selenium 滚动页面至元素可见的方法
Mar 18 Python
OpenCV图像变换之傅里叶变换的一些应用
Jul 26 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
PHP的面向对象编程
2006/10/09 PHP
很好用的PHP数据库类
2009/05/27 PHP
与文件上传有关的php配置参数总结
2013/06/14 PHP
php使用ereg验证文件上传的方法
2014/12/16 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
原生js的RSA和AES加密解密算法
2016/10/08 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
2016/10/24 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
JS获取多维数组中相同键的值实现方法示例
2017/01/06 Javascript
微信小程序 利用css实现遮罩效果实例详解
2017/01/21 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
2017/03/02 Javascript
jquery中关于bind()方法的使用技巧分享
2017/03/30 jQuery
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
微信网页授权并获取用户信息的方法
2018/07/30 Javascript
vue 输入电话号码自动按3-4-4分割功能的实现代码
2020/04/30 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
Python两个内置函数 locals 和globals(学习笔记)
2016/08/28 Python
分享一个简单的python读写文件脚本
2017/11/25 Python
Django中使用celery完成异步任务的示例代码
2018/01/23 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
2018/04/08 Python
python中的常量和变量代码详解
2018/07/25 Python
python如何制作英文字典
2019/06/25 Python
python实现ip地址的包含关系判断
2020/02/07 Python
Python实现疫情地图可视化
2021/02/05 Python
HTML5对手机页面长按会粘贴复制禁用的解决方法
2016/07/19 HTML / CSS
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
编辑找工作求职信分享
2014/01/03 职场文书
市优秀教师事迹材料
2014/02/05 职场文书
企业管理毕业生求职信
2014/03/11 职场文书
团购业务员岗位职责
2014/03/15 职场文书
学生安全责任书模板
2014/07/25 职场文书
2016国庆节活动宣传语
2015/11/25 职场文书
MySQL慢查询的坑
2021/04/28 MySQL
源码解读Spring-Integration执行过程
2021/06/11 Java/Android
Redis如何使用乐观锁(CAS)保证数据一致性
2022/03/25 Redis