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 10 Python
python3 pillow生成简单验证码图片的示例
Sep 19 Python
Python 模拟员工信息数据库操作的实例
Oct 23 Python
tensorflow中next_batch的具体使用
Feb 02 Python
Python 机器学习库 NumPy入门教程
Apr 19 Python
利用ctypes获取numpy数组的指针方法
Feb 12 Python
python matplotlib饼状图参数及用法解析
Nov 04 Python
python根据文本生成词云图代码实例
Nov 15 Python
基于python实现简单网页服务器代码实例
Sep 14 Python
Python实现FTP文件定时自动下载的步骤
Dec 19 Python
Python 生成短8位唯一id实战教程
Jan 13 Python
Python Pygame实战之塔防游戏的实现
Mar 17 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
中国的第一台收音机
2021/03/01 无线电
PHP 中文乱码解决办法总结分析
2009/07/30 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
Laravel 5框架学习之路由、控制器和视图简介
2015/04/07 PHP
Yii框架核心组件类实例详解
2019/08/06 PHP
onpropertypchange
2006/07/01 Javascript
Javascript判断图片尺寸大小实例分析
2014/06/16 Javascript
实用框架(iframe)操作代码
2014/10/23 Javascript
JavaScript实现算术平方根算法-代码超简单
2015/09/11 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
Vue.js教程之计算属性
2016/11/11 Javascript
利用angularjs1.4制作的简易滑动门效果
2017/02/28 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
2017/04/11 Javascript
让nodeJS支持ES6的词法----babel的安装和使用方法
2017/07/31 NodeJs
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
2018/08/09 jQuery
基于JavaScript判断两个对象内容是否相等
2020/01/10 Javascript
JS+CSS+HTML实现“代码雨”类似黑客帝国文字下落效果
2020/03/17 Javascript
javascript实现简易计算器功能
2020/09/23 Javascript
[38:30]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场2
2014/05/24 DOTA
Python的面向对象思想分析
2015/01/14 Python
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
Python语言的面相对象编程方式初步学习
2016/03/12 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
python多进程并行代码实例
2019/09/30 Python
Tory Burch美国官方网站:美国时尚生活品牌
2016/08/01 全球购物
Veronica Beard官网:在酷、经典和别致之间找到了平衡
2018/01/11 全球购物
外联部演讲稿
2014/05/24 职场文书
音乐幼师求职信
2014/07/09 职场文书
《中国梦我的梦》大学生演讲稿
2014/08/20 职场文书
论群众路线学习笔记
2014/11/06 职场文书
茶楼服务员岗位职责
2015/02/09 职场文书
2015年教务主任工作总结
2015/07/22 职场文书
php png失真的原因及解决办法
2021/10/24 PHP
nginx常用配置conf的示例代码详解
2022/03/21 Servers
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android