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 30 Python
Android应用开发中Action bar编写的入门教程
Feb 26 Python
python logging 日志轮转文件不删除问题的解决方法
Aug 02 Python
tensorflow学习笔记之mnist的卷积神经网络实例
Apr 15 Python
利用python库在局域网内传输文件的方法
Jun 04 Python
Python面向对象思想与应用入门教程【类与对象】
Apr 12 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
Jun 18 Python
pyqt5 删除layout中的所有widget方法
Jun 25 Python
django连接oracle时setting 配置方法
Aug 29 Python
python中if及if-else如何使用
Jun 02 Python
如何让PyQt5中QWebEngineView与JavaScript交互
Oct 21 Python
python中sqllite插入numpy数组到数据库的实现方法
Jun 21 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中static静态变量的使用方法详解
2010/06/04 PHP
php使用正则表达式获取字符串中的URL
2016/12/29 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
2019/04/16 PHP
浏览器加载、渲染和解析过程黑箱简析
2012/11/29 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
fixedBox固定div漂浮代码支持ie6以上大部分主流浏览器
2014/06/26 Javascript
JSON相关知识汇总
2015/07/03 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
jQuery绑定事件on()与弹窗的简要概述
2016/04/27 Javascript
js图片放大镜实例讲解(必看篇)
2017/07/17 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
nodejs实现爬取网站图片功能
2017/12/14 NodeJs
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
vue.js 实现评价五角星组件的实例代码
2018/08/13 Javascript
element-ui 表格数据时间格式化的方法
2018/08/24 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
原生JS实现拖拽效果
2020/12/04 Javascript
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
[02:42]DOTA2城市挑战赛收官在即 四强之争风起云涌
2018/06/05 DOTA
Python中的下划线详解
2015/06/24 Python
Python WXPY实现微信监控报警功能的代码
2017/10/20 Python
Python中的pygal安装和绘制直方图代码分享
2017/12/08 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
2018/05/10 Python
Python将文字转成语音并读出来的实例详解
2019/07/15 Python
Python2 与Python3的版本区别实例分析
2020/03/30 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
Python 测试框架unittest和pytest的优劣
2020/09/26 Python
Famous Footwear加拿大:美国多品牌运动休闲鞋店
2018/12/05 全球购物
优秀毕业生求职推荐信范文
2013/11/21 职场文书
服装公司总经理岗位职责
2013/11/30 职场文书
高三地理教学反思
2014/01/11 职场文书
求职信需要的五点内容
2014/02/01 职场文书
养牛场项目建议书
2014/05/13 职场文书
先进党支部事迹材料2016
2016/02/26 职场文书
小学三年级作文之写景
2019/11/05 职场文书