python分层聚类_使用Python分层聚类进行机器学习
分层聚类简介
分层聚类是另一种无监督学习算法,用于将具有相似特征的未标记数据点组合在一起。分层聚类算法分为以下两类:
凝聚分层算法-在凝聚分层算法中,每个数据点被视为单个集群,然后连续地合并或聚集(自下而上的方法)成对的集群。簇的层次结构表示为树状图或树结构。
分裂分层算法-另一方面,在分裂层次算法中,所有数据点都被视为一个大集群,集群过程涉及将一个大集群划分为(自上而下)方法到各个小集群中。
步骤执行凝聚层次聚类
我们将解释最常用和最重要的层次聚类,即凝聚性。执行相同的步骤如下
步骤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分层聚类进行机器学习相关推荐
- python 时间序列预测_使用Python进行动手时间序列预测
python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...
- python 概率分布模型_使用python的概率模型进行公司估值
python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...
- python音频聚类_利用python的KMeans和PCA包实现聚类算法
题目: 通过给出的驾驶员行为数据(trip.csv),对驾驶员不同时段的驾驶类型进行聚类,聚成普通驾驶类型,激进类型和超冷静型3类 . 利用Python的scikit-learn包中的Kmeans算法 ...
- python新闻文本聚类_用Python实现文档聚类
在本教程中,我会利用 Python 来说明怎样聚类一系列的文档.我所演示的实例会识别出 top 100 电影的(来自 IMDB 列表)剧情简介的隐藏结构.关于这个例子的详细讨论在初始版本里.本教程包括 ...
- python数据库分层设计_基于Python的高中教学数据库设计
文章对 Python 进行概述,并 对数据库的操作模式进行分析, 对数据库系统编译平台的目标指 令介绍,并对高中教学数据库的 设计进行研究. 摘 要 1 Python概述 计算机程序设计语言( Pyt ...
- python集群_使用Python集群文档
python集群 Natural Language Processing has made huge advancements in the last years. Currently, variou ...
- python 网页编程_通过Python编程检索网页
python 网页编程 The internet and the World Wide Web (WWW), is probably the most prominent source of info ...
- python生成簇_使用Python复现SIGKDD2017的PAMAE算法(并行kmedoids算法)
作者:坚新 研究方向:自然语言处理 https://github.com/yangjianxin1/PAMAE 编者按:AINLP技术群的坚新同学发布了一个新项目:PAMAE (PAMAE: Para ...
- python编写登录_通过Python编写一个简单登录功能过程解析
通过Python编写一个简单登录功能过程解析 需求: 写一个登录的程序, 1.最多登陆失败3次 2.登录成功,提示欢迎xx登录,今天的日期是xxx,程序结束 3.要检验输入是否为空,账号和密码不能为空 ...
- python移动图形工作站_让Python跑得更快
原标题:让Python跑得更快 点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 Tips 参与文末话题讨论,即有机会获得异步图书一本. Python很容易学.你之所以阅读本 ...
最新文章
- Linux(CentOS 7_x64位)系统下安装Xmgrace
- UVA 331 Mapping the Swaps
- 浅析工业级物联网项目的快速开发
- 被忽视的Web安全漏洞:如何识别和解决?
- 操作系统的线程和进程的区别_进程,线程,协程,有何区别?
- 检索方法应该返回#39;null#39;还是无法产生返回值时引发异常? [关闭]
- WebPack 简明学习教程
- Android关机流程解析
- 百度风云榜前50名小偷——专门用于提高你网站的流量!
- Atitit 如何做数据分析 描述型:发生了什么?可视化仪表盘化很重要。	1 2. 诊断型:为什么会发生?结合历史记录	1 3. 预测型:可能发生什么?	2 4. 指导型 规划未来行动:我需要做什
- 【原创】开车分四个阶段的话,你属于哪个
- 使用maven打包项目执行clean时报错clean报错Failed to clean project
- 60天使用百词斩背单词的感想
- 无盘服务器chkdsk *: /f)修复命令,让你的电脑运行更快点 使用CHKDSK/F磁盘修复命令...
- 小学和初中计算机的图案,信息技术和小学数学“图形和几何”的有效融合
- 用sk-learn实现新闻的分类预测(完整代码)
- 英语基础知识:非谓语使用规则上篇
- 思科服务器怎么看型号,通过型号快速识别思科路由器,交换机,服务器等设备
- 手游虚拟机中连接不到服务器,自由幻想手游模拟器进不去游戏 登录失败解决办法...
- ShareSDK的使用
热门文章
- postman调用WebServicer接口
- 《Python数据分析与挖掘实战》案例--财政收入影响因素分析及预测模型
- 使用ant-design-vue实现换肤功能
- MySQL----表的一对多关系和多对多关系
- GPCC全球降水数据集下载并使用MATLAB进行读取分析--以长江流域为例
- JAVA网关实现_网关实现灰度发布
- 控制台最多显示多少行_从UCloud控制台,看B端产品体验设计
- 不可思议的Qt GrahpicView演示-重返德军总部(有视频哦)
- 【PSD: Principled Synthetic-to-Real Dehazing Guided by Physical Priors】(个人笔记,勿喷)
- linux数据库no tns,ORA-12541: TNS:no listener