聚类(三)—— 层次聚类
主要内容
聚类分析概述
K-Means聚类
层次聚类
基于密度的聚类
其他聚类方法
聚类评估
小结
三、层次聚类
算法原理
层次聚类 (Hierarchical Clustering)就是按照某种方法进行层次分类,直到满足某种条件为止。层次聚类主要分成两类:
(1)凝聚:从下到上。首先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有的对象都在一个簇中,或者满足某个终结条件。
(2)分裂:从上到下。首先将所有对象置于同一个簇中,然后逐渐细分为越来越小的簇,直到每个对象自成一簇,或者达到了某个终止条件。
簇间的距离度量
1.最短距离法(最大相似度)
最短距离被定义为两个类中最靠近的两个对象间的距离为簇间距离。
2.最长距离法(最小相似度)
最长距离被定义为两个类中最远的像个对象间的距离为簇间距离。
3.类平均法
计算两类中任意两个对象间的距离的平均值作为簇间距离
4.中心法
定义两类的两个中心点的距离为簇间距离。
分裂层次聚类
分裂的层次聚类方法使用自顶向下的策略把对象划分到层次结构中。从包含所有对象的簇开始,每一步分裂一个簇,直到仅剩单点簇或者满足用户指定的簇数为止。
DIANA算法是典型的层次分裂聚类算法。
DIANA算法中用到如下两个定义:
(1)簇的直径:计算一个簇中任意两个数据点之间的欧式距离,选取距离中的最大值作为簇的直径。
(2)平均相异度:两个数据点之间的平均距离。
算法描述:
凝聚层次聚类
凝聚的层次聚类方法使用自底向上的策略把对象组织到层次结构中。开始时以每个对象作为一个簇,每一步合并两个最相似的簇。AGNES算法是典型的凝聚层次聚类,起始将每个对象作为一个簇,然后根据合并准则逐步合并这些簇。两个簇间的相似度由这两个不同簇中距离最近的数据点的相似度确定。聚类的合并过程反复进行直到所有对象最终满足终止条件设置的簇数目。
算法描述:
层次聚类应用
Python中层次聚类的函数是A gglomerativeClustering(),最重要的参数有3个:1.n_clusters为聚类数目
2.affinity为样本距离定义
3.linkage是类间距离的定义,有3种取值:
ward:组间距离等于两类对象之间的最小距离
average:组间距离等于两组对象之间的平均距离
complete:组间距离等于两组对象之间的最大距离
Python层次聚类实现。
# from sklearn.datasets.samples_generator import make_blobs
from sklearn.datasets import make_blobs
from sklearn.cluster import AgglomerativeClustering
import numpy as np
import matplotlib.pyplot as plt
from itertools import cycle # python自带的迭代器模块
# 产生随机数据的中心
centers = [[1,1],[-1,-1],[1,-1]]
# 产生的数据个数
n_samples = 3000
# 生产数据
X,lables_true = make_blobs(n_samples=n_samples,centers=centers,cluster_std=0.6,random_state=0)
# 设置分层聚类函数
linkages = ['ward','average','complete']
n_clusters_=3
ac = AgglomerativeClustering(linkage=linkages[2],n_clusters = n_clusters_)
# 训练数据
ac.fit(X)
# 每个数据的分类
lables = ac.labels_
plt.figure(1) # 绘图
plt.clf()
colors = cycle('bgrcmykbgrcmykbgrcmykbgrcmyk')
for k,col in zip(range(n_clusters_),colors):# 根据lables中的值是否等于k,重新组成一个True、False的数组my_members = lables == k# X[my_members,0]取出my_members对应位置为True的值的横坐标plt.plot(X[my_members,0],X[my_members,1],col+'.')
plt.title('Estimated number of clusters:%d' % n_clusters_)
plt.show()
聚类(三)—— 层次聚类相关推荐
- 聚类之层次聚类、基于划分的聚类(…
5.聚类之层次聚类.基于划分的聚类(k-means).基于密度的聚类.基于模型的聚类 目录(?)[-] 1. 一层次聚类 1. 层次聚类的原理及分类 2. 层次聚类的流程 ...
- 聚类(2)——层次聚类 Hierarchical Clustering
聚类系列: 聚类(序)----监督学习与无监督学习 聚类(1)----混合高斯模型 Gaussian Mixture Model 聚类(2)----层次聚类 Hierarchical Clusteri ...
- 【进阶版】 机器学习之K均值聚类、层次聚类、密度聚类、实战项目含代码(15)
目录 欢迎订阅本专栏,持续更新中~ 本专栏前期文章介绍! 机器学习配套资源推送 进阶版机器学习文章更新~ 点击下方下载高清版学习知识图册 项目要求 数据透视 代码实战 维度太多,利用PCA降维的思想进 ...
- 【R】【密度聚类、层次聚类、期望最大化聚类】
文章目录 1.对数据集进行加载.预处理集可视化 1.1 加载数据集 1.2 数据预处理 1.3 将样本点进行可视化 2.密度聚类(DBSCAN 算法) 2.1 加载程序包 2.2 设置聚类参数阈值并可 ...
- 说话人聚类--谱聚类和层次聚类
谱聚类和层次聚类 在讯飞实习了一个月了,做了点说话人聚类的工作,现在总结一下主要用到的谱聚类和层次聚类. 层次聚类 在层次聚类这块,我主要学习了 凝聚型层次聚类和 BIRCH方法,主要参考的博客有 [ ...
- 聚类系列-层次聚类(Hierarchical Clustering)
上篇k-means算法却是一种方便好用的聚类算法,但是始终有K值选择和初始聚类中心点选择的问题,而这些问题也会影响聚类的效果.为了避免这些问题,我们可以选择另外一种比较实用的聚类算法-层次聚类算法.顾 ...
- Python计算机视觉编程第六章——图像聚类(K-means聚类,DBSCAN聚类,层次聚类,谱聚类,PCA主成分分析)
Python计算机视觉编程 图像聚类 (一)K-means 聚类 1.1 SciPy 聚类包 1.2 图像聚类 1.1 在主成分上可视化图像 1.1 像素聚类 (二)层次聚类 (三)谱聚类 图像聚类 ...
- 了解聚类是什么。聚类方法:k-means、核聚类、层次聚类、谱聚类
聚类 1.什么是聚类 2.聚类方法 2.1 划分式聚类方法 k-means k-means++ bi-kmeans 基于密度的方法 DBSCAN OPTICS算法 层次化聚类算法 核聚类 支持向量聚类 ...
- 学习笔记1 三大聚类方法:K-means聚类、层次聚类、DBSCAN聚类
学习笔记1:三大聚类方法:K-means聚类.层次聚类.DBSCAN聚类 文章目录 前言 一.K-means聚类 操作过程 二.层次聚类 操作过程 三.DBSCAN聚类 操作过程 总结 前言 在样本数 ...
- KMEANS均值聚类和层次聚类:亚洲国家地区生活幸福质量异同可视化分析和选择最佳聚类数...
阅读全文:http://tecdat.cn/?p=24198 <世界幸福报告>是可持续发展解决方案网络的年度报告,该报告使用盖洛普世界民意调查的调查结果研究了150多个国家/地区的生活质量 ...
最新文章
- 北大林宙辰:追求机器学习研究的美感
- easymock快速入门
- 【深度学习】锐化滤波器核 与 边缘检测核
- php实现附件上传下载,PHP实现文件上传与下载
- C++ stringstream 实现字符与数字之间的转换
- RequestDispatcher.forward() 与 HttpServletResponse.sendRedirect()的区别
- 我一哥们,在东莞和五名女孩被抓了.....
- 牛客题霸 [进制转换] C++题解/答案
- Linux内核3.0移植并基于Initramfs根文件系统启动
- spring学习(46):spring的单例bean
- idea 14.1.4 激活方式
- Simple2D-15(音乐播放器)使用 glfw 库
- 解开发者之痛:中国移动MySQL数据库优化最佳实践
- 美国西北大学 计算机工程专业排名,权威首发!2018年USNews美国大学研究生计算机工程专业排名榜单...
- 7-汇编大小写字符互相转化+[bx+idata]+SI/DI
- Ubuntu 截屏(或截图)
- LINUX查看剪贴板有哪些内容
- 达人评测 小米平板5pro和苹果ipad9选哪个好
- rimworld简单机器人mod_rimworld分类技能机器人mod
- 《东周列国志》第六十一回 晋悼公驾楚会萧鱼 孙林父因歌逐献公