分层聚类简介

分层聚类是另一种无监督学习算法,用于将具有相似特征的未标记数据点组合在一起。分层聚类算法分为以下两类:

凝聚分层算法-在凝聚分层算法中,每个数据点被视为单个集群,然后连续地合并或聚集(自下而上的方法)成对的集群。簇的层次结构表示为树状图或树结构。

分裂分层算法-另一方面,在分裂层次算法中,所有数据点都被视为一个大集群,集群过程涉及将一个大集群划分为(自上而下)方法到各个小集群中。

步骤执行凝聚层次聚类

我们将解释最常用和最重要的层次聚类,即凝聚性。执行相同的步骤如下

步骤2-现在,在这一步中,我们需要通过连接两个壁橱数据点来形成一个大型集群。这将导致总共K-1个星团。

步骤3-现在,为了形成更多的集群,我们需要加入两个壁橱集群。这将导致总共K-2个群集。

步骤4-现在,为了形成一个大的集群,重复上述三个步骤,直到K变为0,即没有更多的数据点可以加入。

步骤5-最后,在制作一个大的聚类之后,根据问题,将使用树状图分成多个聚类。

树状图在聚合分层聚类中的作用

正如我们在上一步中讨论的那样,树形图的作用一旦形成大簇就开始了。树形图将用于根据我们的问题将聚类分成多个相关数据点集群。可以通过以下示例-来理解;

示例1

要理解,让我们开始导入所需的库,如下所示;%matplotlib inline

import matplotlib.pyplot as plt

import numpy as np

接下来,我们将绘制我们为此示例所采用的数据点-X= np.array(

[[7,8],[12,20],[17,19],[26,15],[32,37],[87,75],[73,85], [62,80],[73,60],[87,96],])

labels= range(1, 11)

plt.figure(figsize= (10, 7))

plt.subplots_adjust(bottom= 0.1)

plt.scatter(X[:,0],X[:,1], label= 'True Position')

for label, x, y in zip(labels, X[:, 0], X[:, 1]):

plt.annotate(

label,xy= (x, y), xytext= (-3, 3),textcoords= 'offset points', ha= 'right', va= 'bottom')

plt.show()

从上图中,它非常简单要看到我们在数据点中有两个聚类,但在现实世界数据中,可能有数千个聚类。接下来,我们将使用Scipy库-绘制数据点的树形图;from scipy.cluster.hierarchy import dendrogram, linkage

from matplotlib import pyplot as plt

linked= linkage(X, 'single')

labelList= range(1, 11)

plt.figure(figsize= (10, 7))

dendrogram(linked, orientation= 'top',labels= labelList,

distance_sort='descending',show_leaf_counts= True)

plt.show()

现在,一旦形成大簇,选择最长的垂直距离。然后绘制一条垂直线,如下图所示。如水平线在两点交叉蓝线,簇的数量为2。

接下来,我们需要导入类聚类并调用其fit_predict方法来预测集群。我们正在导入AgglomerativeClustering类的sklearn.cluster库-from sklearn.cluster import AgglomerativeClustering

cluster= AgglomerativeClustering(n_clusters= 2, affinity= 'euclidean', linkage= 'ward')

cluster.fit_predict(X)

接下来,在下面的代码-帮助下绘制集群;plt.scatter(X[:,0],X[:,1], c= cluster.labels_, cmap= 'rainbow')

上图显示了我们数据点中的两个聚类。

示例2

我们理解从上面讨论的简单例子中的树状图的概念,让我们转到另一个例子,我们通过使用层次聚类在Pima印度糖尿病数据集中创建数据点的集群。import matplotlib.pyplot as plt

import pandas as pd

%matplotlib inline

import numpy as np

from pandas import read_csv

path= r"C:pima-indians-diabetes.csv"

headernames= ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']

data= read_csv(path, names= headernames)

array= data.values

X= array[:,0:8]

Y= array[:,8]

data.shape

(768, 9)

data.head()

PregPlasPres皮肤测试质谱的Pedi年龄类

061487235033.60.627501

11856629026.60.351310

28183640023.30.672321

318966239428.10.167210

40137403516843.12.288331patient_data= data.iloc[:, 3:5].values

import scipy.cluster.hierarchy as shc

plt.figure(figsize= (10, 7))

plt.title("Patient Dendograms")

dend= shc.dendrogram(shc.linkage(data, method= 'ward'))

from sklearn.cluster import AgglomerativeClustering

cluster= AgglomerativeClustering(n_clusters= 4, affinity= 'euclidean', linkage= 'ward')

cluster.fit_predict(patient_data)

plt.figure(figsize= (10, 7))

plt.scatter(patient_data[:,0], patient_data[:,1], c= cluster.labels_, cmap= 'rainbow')

python分层聚类_使用Python分层聚类进行机器学习相关推荐

  1. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  2. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  3. python音频聚类_利用python的KMeans和PCA包实现聚类算法

    题目: 通过给出的驾驶员行为数据(trip.csv),对驾驶员不同时段的驾驶类型进行聚类,聚成普通驾驶类型,激进类型和超冷静型3类 . 利用Python的scikit-learn包中的Kmeans算法 ...

  4. python新闻文本聚类_用Python实现文档聚类

    在本教程中,我会利用 Python 来说明怎样聚类一系列的文档.我所演示的实例会识别出 top 100 电影的(来自 IMDB 列表)剧情简介的隐藏结构.关于这个例子的详细讨论在初始版本里.本教程包括 ...

  5. python数据库分层设计_基于Python的高中教学数据库设计

    文章对 Python 进行概述,并 对数据库的操作模式进行分析, 对数据库系统编译平台的目标指 令介绍,并对高中教学数据库的 设计进行研究. 摘 要 1 Python概述 计算机程序设计语言( Pyt ...

  6. python集群_使用Python集群文档

    python集群 Natural Language Processing has made huge advancements in the last years. Currently, variou ...

  7. python 网页编程_通过Python编程检索网页

    python 网页编程 The internet and the World Wide Web (WWW), is probably the most prominent source of info ...

  8. python生成簇_使用Python复现SIGKDD2017的PAMAE算法(并行kmedoids算法)

    作者:坚新 研究方向:自然语言处理 https://github.com/yangjianxin1/PAMAE 编者按:AINLP技术群的坚新同学发布了一个新项目:PAMAE (PAMAE: Para ...

  9. python编写登录_通过Python编写一个简单登录功能过程解析

    通过Python编写一个简单登录功能过程解析 需求: 写一个登录的程序, 1.最多登陆失败3次 2.登录成功,提示欢迎xx登录,今天的日期是xxx,程序结束 3.要检验输入是否为空,账号和密码不能为空 ...

  10. python移动图形工作站_让Python跑得更快

    原标题:让Python跑得更快 点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 Tips 参与文末话题讨论,即有机会获得异步图书一本. Python很容易学.你之所以阅读本 ...

最新文章

  1. Linux(CentOS 7_x64位)系统下安装Xmgrace
  2. UVA 331 Mapping the Swaps
  3. 浅析工业级物联网项目的快速开发
  4. 被忽视的Web安全漏洞:如何识别和解决?
  5. 操作系统的线程和进程的区别_进程,线程,协程,有何区别?
  6. 检索方法应该返回#39;null#39;还是无法产生返回值时引发异常? [关闭]
  7. WebPack 简明学习教程
  8. Android关机流程解析
  9. 百度风云榜前50名小偷——专门用于提高你网站的流量!
  10. Atitit 如何做数据分析 描述型:发生了什么?可视化仪表盘化很重要。 1 2. 诊断型:为什么会发生?结合历史记录 1 3. 预测型:可能发生什么? 2 4. 指导型 规划未来行动:我需要做什
  11. 【原创】开车分四个阶段的话,你属于哪个
  12. 使用maven打包项目执行clean时报错clean报错Failed to clean project
  13. 60天使用百词斩背单词的感想
  14. 无盘服务器chkdsk *: /f)修复命令,让你的电脑运行更快点 使用CHKDSK/F磁盘修复命令...
  15. 小学和初中计算机的图案,信息技术和小学数学“图形和几何”的有效融合
  16. 用sk-learn实现新闻的分类预测(完整代码)
  17. 英语基础知识:非谓语使用规则上篇
  18. 思科服务器怎么看型号,通过型号快速识别思科路由器,交换机,服务器等设备
  19. 手游虚拟机中连接不到服务器,自由幻想手游模拟器进不去游戏 登录失败解决办法...
  20. ShareSDK的使用

热门文章

  1. postman调用WebServicer接口
  2. 《Python数据分析与挖掘实战》案例--财政收入影响因素分析及预测模型
  3. 使用ant-design-vue实现换肤功能
  4. MySQL----表的一对多关系和多对多关系
  5. GPCC全球降水数据集下载并使用MATLAB进行读取分析--以长江流域为例
  6. JAVA网关实现_网关实现灰度发布
  7. 控制台最多显示多少行_从UCloud控制台,看B端产品体验设计
  8. 不可思议的Qt GrahpicView演示-重返德军总部(有视频哦)
  9. 【PSD: Principled Synthetic-to-Real Dehazing Guided by Physical Priors】(个人笔记,勿喷)
  10. linux数据库no tns,ORA-12541: TNS:no listener