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调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
利用Anaconda完美解决Python 2与python 3的共存问题
May 25 Python
python并发2之使用asyncio处理并发
Dec 21 Python
Ubuntu下使用python读取doc和docx文档的内容方法
May 08 Python
对numpy中shape的深入理解
Jun 15 Python
python 读取文本文件的行数据,文件.splitlines()的方法
Jul 12 Python
只需7行Python代码玩转微信自动聊天
Jan 27 Python
python实现PID算法及测试的例子
Aug 08 Python
windows下Pycharm安装opencv的多种方法
Mar 05 Python
python保留格式汇总各部门excel内容的实现思路
Jun 01 Python
Windows下pycharm安装第三方库失败(通用解决方案)
Sep 17 Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 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 仿Comsenz安装效果代码打包提供下载
2010/05/09 PHP
PHP 过滤页面中的BOM(实现代码)
2013/06/29 PHP
php实现的SESSION类
2014/12/02 PHP
yii的CURD操作实例详解
2014/12/04 PHP
PHP7.0安装笔记整理
2015/08/28 PHP
再谈PHP中单双引号的区别详解
2016/06/12 PHP
ajax 文件上传应用简单实现
2009/03/03 Javascript
让IE8支持DOM 2(不用框架!)
2009/12/31 Javascript
JavaScript入门之基本函数详解
2011/10/21 Javascript
在JavaScript并非所有的一切都是对象
2013/04/11 Javascript
jquery ajax属性async(同步异步)示例
2013/11/05 Javascript
jquery实现简单的遮罩层
2016/01/08 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
js中获取 table节点各tr及td的内容简单实例
2016/10/14 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
2017/03/10 Javascript
原生javascript实现分页效果
2017/04/21 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
vue 组件使用中的一些细节点
2018/04/25 Javascript
Vue基础学习之项目整合及优化
2019/06/02 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
2019/07/27 Javascript
Vue跨域请求问题解决方案过程解析
2020/08/07 Javascript
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
使用Python的urllib和urllib2模块制作爬虫的实例教程
2016/01/20 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
python之pygame模块实现飞机大战完整代码
2020/11/29 Python
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
J2EE是技术还是平台还是框架
2016/08/14 面试题
电子商务网站的创业计划书
2014/01/05 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
小学美术兴趣小组活动总结
2014/07/07 职场文书
2015年大学辅导员工作总结
2015/05/12 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
《七月的天山》教学反思
2016/02/19 职场文书
经典法律座右铭(50句)
2019/08/15 职场文书