栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

层次聚类算法及通过python的scipy进行计算

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

层次聚类算法及通过python的scipy进行计算

目录
  • 1.什么是层次聚类?
  • 2. 如何用python实现

1.什么是层次聚类?

常用于 1维数据 的自动分组,如下图所示,

  1. 把数据用【主成分分析】的方法把数据从多维压缩为1维,
  2. 然后使用层次聚类算法,把它们的树结构计算出来,
  3. 然后根据树的结构,把它们分解成为我们需要的组,例如我们需要分为3组,就使用图中的黄色直线,根据树结构分成3组即可。

层次聚类算法分为两类:自上而下和自下而上。
凝聚层级聚类(HAC)是自下而上的一种聚类算法。HAC首先将每个数据点视为一>个单一的簇,然后计算所有簇之间的距离来合并簇,直到所有的簇聚合成为一个簇为止。

具体步骤:

首先我们将每个数据点视为一个单一的簇,然后选择一个测量两个簇之间距离的度量标准。例如我们使用average linkage作为标准,它将两个簇之间的距离定义为第一个簇中的数据点与第二个簇中的数据点之间的平均距离。
在每次迭代中,我们将两个具有最小average linkage的簇合并成为一个簇。
重复步骤2知道所有的数据点合并成一个簇,然后选择我们需要多少个簇。
层次聚类
优点:
(1)不需要知道有多少个簇
(2)对于距离度量标准的选择并不敏感
缺点:效率低

2. 如何用python实现
  1. 对数据进行聚类
import scipy.cluster.hierarchy as hcluster
linkage = hcluster.linkage(data, method='single')
# data:训练样本
# method:类距离的计算方式(single:两个类之间最短距离的点的距离、complete:两个类之间最长距离的点的距离、centroid:两个类之间所有点的中点的距离)
  1. 将聚类结果绘图
import scipy.cluster.hierarchy as hcluster
hcluster.dendrogram(linkage)
#linkage:层次聚类的结果
# dendrogram()方法为我们展示层次聚类得到的层次图
  1. 对层次聚类结果进行划分
import scipy.cluster.hierarchy as hcluster
scipy.cluster.hierarchy.fcluster(linkage, n, criterion='maxclust')
# linkage:层次聚类的结果
# n:要聚的类数量
# criterion:划分方法,使用maxclust,最大划分法

参考链接:
[1] 聚类算法——层次聚类算法 2018.2

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1021948.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号