Python实现简单层次聚类算法以及可视化

 更新时间:2019年03月18日 09:45:09   作者:York1996  
这篇文章主要为大家详细介绍了Python实现简单层次聚类算法以及可视化,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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实现按目录层级输出文件名并保存为excel

    Python实现按目录层级输出文件名并保存为excel

    当我们发现电脑的内存很满,或平时工作中文件夹管理不清晰,导致里面的文件数据很杂乱,查找很不方便,一个一个文件夹去看去找然后删除又很浪费时间。本文将介绍如何利用Python实现按目录层级输出文件名并保存为excel,需要的可以参考一下
    2022-02-02
  • 关于Python元祖,列表,字典,集合的比较

    关于Python元祖,列表,字典,集合的比较

    下面小编就为大家带来一篇关于Python元祖,列表,字典,集合的比较。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • 使用matplotlib.pyplot绘制多个图片和图表实现方式

    使用matplotlib.pyplot绘制多个图片和图表实现方式

    这篇文章主要介绍了使用matplotlib.pyplot绘制多个图片和图表的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python实现多功能音乐播放器详解

    Python实现多功能音乐播放器详解

    这篇文章主要介绍了如何通过Python制作一个简易的音乐播放器,文中的示例代码讲解详细,对我们学习或工作有一定价值,需要的可以参考一下
    2022-02-02
  • Python海龟turtle基础知识大全以及画图集合实例

    Python海龟turtle基础知识大全以及画图集合实例

    turtle是一个简单的绘图工具,它提供了一个海龟,你可以把它理解为一个机器人,只听得懂有限的指令,下面这篇文章主要给大家介绍了关于Python海龟turtle基础知识大全以及画图集合的相关资料,需要的朋友可以参考下
    2023-04-04
  • python标准算法实现数组全排列的方法

    python标准算法实现数组全排列的方法

    这篇文章主要介绍了python标准算法实现数组全排列的方法,实例分析了全排列的原理与Python实现技巧,需要的朋友可以参考下
    2015-03-03
  • Python获取网页数据详解流程

    Python获取网页数据详解流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用Python来获取网页的数据,主要应用了Requests库,大家可以在过程中查缺补漏,提升水平
    2021-10-10
  • Ubuntu下Python2与Python3的共存问题

    Ubuntu下Python2与Python3的共存问题

    Linux系统一般自带Python,有时候又自己下载了Python,因此有可能Python2和Python3同时存在。那么当我们在Terminal键入python的时候,会调出哪个Python呢?本文即解决这个问题
    2018-10-10
  • PyQt教程之自定义组件Switch Button的实现

    PyQt教程之自定义组件Switch Button的实现

    这篇文章主要为大家详细介绍了PyQt中如何实现自定义组件Switch Button,文中的示例代码简洁易懂,具有一定的学习价值,感兴趣的可以了解一下
    2023-05-05
  • Python3基础之基本运算符概述

    Python3基础之基本运算符概述

    这篇文章主要介绍了Python3基础的基本运算符,非常重要的知识点,需要的朋友可以参考下
    2014-08-08

最新评论