层次聚类及谱系图

  • 1.谱系图介绍
  • 2.代码实现
  • 3.参数介绍

1.谱系图介绍

如何看懂谱系图

2.代码实现

数据:test.xlsx

import pandas as pd
import seaborn as sns  #用于画热图的工具包
from scipy.cluster import hierarchy  #用于进行层次聚类,画层次聚类图的工具包
from scipy import cluster
import matplotlib.pyplot as plt
from sklearn import decomposition as skldec #用于主成分分析降维的包df = pd.read_excel(".../test.xlsx",index_col=0)
#df = df.T    #python默认每行是一个样本,如果数据每列是一个样本的话,转置一下即可#开始画层次聚类树状图
Z = hierarchy.linkage(df, method ='ward',metric='euclidean')
hierarchy.dendrogram(Z,labels = df.index)#在某个高度进行剪切
label = cluster.hierarchy.cut_tree(Z,height=0.8)
label = label.reshape(label.size,)#根据两个最大的主成分进行绘图
pca = skldec.PCA(n_components = 0.95)    #选择方差95%的占比
pca.fit(df)   #主成分分析时每一行是一个输入数据
result = pca.transform(df)  #计算结果
plt.figure()  #新建一张图进行绘制
plt.scatter(result[:, 0], result[:, 1], c=label, edgecolor='k') #绘制两个主成分组成坐标的散点图
for i in range(result[:,0].size):plt.text(result[i,0],result[i,1],df.index[i])     #在每个点边上绘制数据名称
x_label = 'PC1(%s%%)' % round((pca.explained_variance_ratio_[0]*100.0),2)   #x轴标签字符串
y_label = 'PC1(%s%%)' % round((pca.explained_variance_ratio_[1]*100.0),2)   #y轴标签字符串
plt.xlabel(x_label)    #绘制x轴标签
plt.ylabel(y_label)    #绘制y轴标签#层次聚类的热图和聚类图
sns.clustermap(df,method ='ward',metric='euclidean')
plt.show()



3.参数介绍

scipy.cluster.hierarchy.linkage(y, method='single',metric='euclidean',optimal_ordering=False)

y:需要进行层次聚类的数据,这里即可用使用开始读取的数据变量df
method:层次聚类选用的方法,下面罗列了七种方法,比如:

  • single方法代表将两个组合数据点中距离最近的两个数据点间的距离作为这两个组合数据点的距离
    这种方法容易受到极端值的影响。两个很相似的组合数据点可能由于其中的某个极端的数据点距离较近而组合在一起。
    两个簇之间的距离公式:

  • complete方法与Single Linkage相反,将两个组合数据点中距离最远的两个数据点间的距离作为这两个组合数据点的距离。
    Complete Linkage的问题也与Single Linkage相反,两个不相似的组合数据点可能由于其中的极端值距离较远而无法组合在一起。
    两个簇之间的距离公式:

  • average方法代表是计算两个组合数据点中的每个数据点与其他所有数据点的距离。将所有距离的均值作为两个组合数据点间的距离。这种方法计算量比较大,但结果比前两种方法更合理。两个簇之间的距离公式:

  • weighted 即两个簇之间的距离公式:

  • centroid 即两个簇之间的距离公式:

  • median 同centroid

  • ward 即两个簇之间的距离公式:

metric:距离计算的方法,即上面方法中的dist()函数具体的计算方式,具体方式可以见这个页面。
The distance metric to use. The distance function can be ‘braycurtis’, ‘canberra’, ‘chebyshev’, ‘cityblock’, ‘correlation’, ‘cosine’, ‘dice’, ‘euclidean’, ‘hamming’, ‘jaccard’, ‘jensenshannon’, ‘kulsinski’, ‘kulczynski1’, ‘mahalanobis’, ‘matching’, ‘minkowski’, ‘rogerstanimoto’, ‘russellrao’, ‘seuclidean’, ‘sokalmichener’, ‘sokalsneath’, ‘sqeuclidean’, ‘yule’.

————————————————
版权声明:代码实现及参数介绍部分 经CSDN博主「冬之晓东」的原创文章 修改完成。
原文链接:https://blog.csdn.net/qq_19528953/article/details/79133889

层次聚类及谱系图 介绍及python实现相关推荐

  1. python画聚类树状图_影像组学学习笔记(36)-聚类树状图Dendrogram的python实现

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(36)主要介绍: 聚类树状图Dendrogram的python实现 应该注意一下scipy版本的问题:scipy 1.5.0版本画聚类树 ...

  2. R语言ggplot2可视化:为层次聚类树状图dendrogram中的簇进行着色、在树状图dendrogram中为不同的层次聚类簇配置不同的色彩

    R语言ggplot2可视化:为层次聚类树状图dendrogram中的簇进行着色.在树状图dendrogram中为不同的层次聚类簇配置不同的色彩 #层次聚类树状图dendrogram labs = pa ...

  3. python机器学习案例系列教程——层次聚类(文档聚类)

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 docker/kubernetes入门视频教程 全栈工程师开发手册 (作者:栾鹏) pyth ...

  4. 关于聚类算法Kmeans/K-mediods/层次聚类/OPTICS较为详细的介绍

    K-means算法 将一群物理对象或者抽象对象的划分成相似的对象类的过程.其中类簇是数据对象的集合,在类簇中所有的对象都彼此相似,而类簇与类簇之间的对象是彼此相异. 聚类除了可以用于数据分割(data ...

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

    目录 1.什么是层次聚类? 2. 如何用python实现 参考链接: 1.什么是层次聚类? 常用于 1维数据 的自动分组,如下图所示, 把数据用[主成分分析]的方法把数据从多维压缩为1维, 然后使用层 ...

  6. 【数据挖掘知识点五】层次聚类方法的理解

    对于同是基于距离的原型聚类和层次聚类,层次聚类具有更好的解释性,同时对于先验簇类数k的超参设定,更有利于数据分布的探索.不过基于距离的聚类,面临同样的问题是距离选择,实际上我更想拓展的是多属性下,单个 ...

  7. 【通俗易懂】层次聚类算法的原理及实现

    层次聚类(Hierarchical Clustering)是聚类算法的一种,通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树.在聚类树中,不同类别的原始数据点是树的最低层,树的顶层是一个聚 ...

  8. 机器学习——“物以类聚,人以群分”之聚类分析(层次聚类,K-means)

    由浅入深聚类分析·算法原理及核心步骤 引入 聚类分析概念 1.簇 2.簇的类型划分 3.相似性度量 聚类方法 1.聚类类型的划分依据 2.常用的聚类分析方法 (1)层次聚类 (2)划分(分割)聚类-- ...

  9. 层次聚类算法的原理及实现Hierarchical Clustering

    层次聚类算法的原理及实现Hierarchical Clustering 层次聚类(Hierarchical Clustering)是聚类算法的一种,通过计算不同类别数据点间的相似度来创建一棵有层次的嵌 ...

最新文章

  1. 字节跳动最新开源!沈阳java培训哪个好
  2. dedecms的自定义模块
  3. Embeded linux之移植boa
  4. oracle分区索引及循环插入
  5. 剑指offer面试题10- II. 青蛙跳台阶问题(动态规划)(递归)(斐波那契数列)
  6. php语句过滤掉html标签_php过滤HTML标签、属性等正则表达式
  7. C语言找出完数并输出
  8. 单片机lcm显示字符程序C语言,手把手教你学单片机的C语言程序设计(十六).pdf...
  9. sharepoint搭建文档服务器,SharePoint Server教程
  10. logback 配置 日志
  11. 新闻网站项目静态页面--详情页
  12. Tomcat启动之后遇到“ran out of the normal time range, it consumed [2000] milliseconds.”?
  13. 触控板失灵的解决方法(synaptics驱动)
  14. 新手php集成环境,php集成环境服务器xampp安装使用教程(适合第一次玩PHP的新手)...
  15. 看过来!看过来!网络安全类的认证课程都在这里
  16. 三星note10 android q,三星Note10 一款严重被低估的安卓上代次机皇
  17. php mysql 聊天室_聊天室phpmysql(四)
  18. VSC系列 | 如何安装Visual Studio Code(二)
  19. [Warning] IPv4 forwarding is disabled. Networking will not work.
  20. 【2020年高被引学者】 谢源 阿里巴巴

热门文章

  1. Machine Learning with Python Cookbook 学习笔记 第6章
  2. 【基础教程】粒子群算法【003期】
  3. 年度成果发布 | 百度超级链精选案例集正式上线!
  4. first集 和 follow集 (转载)耐心读 一定能看懂的!
  5. CreateMutex互斥量
  6. 近期健康类(***)
  7. 19年3月移动端大厂面试题分享
  8. 一款好看的新网站发布导航页源码
  9. 机器学习——隐马尔科夫(HHM)原理
  10. 【odoo15】在odoo中创建Excel报表