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使用Flask框架获取用户IP地址的方法
Mar 21 Python
用map函数来完成Python并行任务的简单示例
Apr 02 Python
python删除列表中重复记录的方法
Apr 28 Python
Python基于PycURL自动处理cookie的方法
Jul 25 Python
PyCharm代码提示忽略大小写设置方法
Oct 28 Python
python生成九宫格图片
Nov 19 Python
python 使用pdfminer3k 读取PDF文档的例子
Aug 27 Python
Python 点击指定位置验证码破解的实现代码
Sep 11 Python
通过python扫描二维码/条形码并打印数据
Nov 14 Python
Python print不能立即打印的解决方式
Feb 19 Python
使用jupyter notebook直接打开.md格式的文件
Apr 10 Python
JAVA SWT事件四种写法实例解析
Jun 05 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
Yii2创建多界面主题(Theme)的方法
2016/10/08 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
javascript 定义新对象方法
2010/02/20 Javascript
javascript中的new使用
2010/03/20 Javascript
javascript运行机制之this详细介绍
2014/02/07 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
文本框只能输入数字的js代码(含小数点)
2016/07/10 Javascript
JavaScript中数组Array.sort()排序方法详解
2017/03/01 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
浅谈super-vuex使用体验
2018/06/25 Javascript
Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用
2019/04/11 Javascript
VUE实时监听元素距离顶部高度的操作
2020/07/29 Javascript
跟老齐学Python之玩转字符串(2)更新篇
2014/09/28 Python
详解Python中的from..import绝对导入语句
2016/06/21 Python
利用Python爬取可用的代理IP
2016/08/18 Python
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
django manage.py扩展自定义命令方法
2018/05/27 Python
解决Numpy中sum函数求和结果维度的问题
2019/12/06 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
Django import export实现数据库导入导出方式
2020/04/03 Python
Python 必须了解的5种高级特征
2020/09/10 Python
使用python对excel表格处理的一些小功能
2021/01/25 Python
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
黄色火烈鸟:De Gele Flamingo
2019/03/18 全球购物
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
中专生职业生涯规划书范文
2014/01/10 职场文书
九月份红领巾广播稿
2014/01/22 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
兵马俑的导游词
2015/02/02 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
2016大学生求职自荐信范文
2016/01/28 职场文书
python urllib库的使用详解
2021/04/13 Python
浅谈golang 中time.After释放的问题
2021/05/05 Golang
利用JavaScript写一个简单计算器
2021/11/27 Javascript