显示 scipy 树状图的簇标签

2023-12-24

我正在使用层次聚类来对词向量进行聚类,并且我希望用户能够显示显示聚类的树状图。然而,由于可能有数千个单词,我希望这个树状图被截断为一些合理的有价值的,每个叶子的标签是该簇中最重要的单词的字符串。

我的问题是,根据文档 http://students.mimuw.edu.pl/~pbechler/scipy_doc/generated/scipy.cluster.hierarchy.dendrogram.html, “只有当 labels[i] 值对应于原始观察值而不是非单例簇时,才是放置在第 i 个叶节点下的文本。”我认为这意味着我不能标记簇,只能标记奇异点?

为了说明这一点,这里有一个简短的 python 脚本,它生成一个简单的标记树状图:

import numpy as np
from scipy.cluster.hierarchy import dendrogram, linkage
from matplotlib import pyplot as plt

randomMatrix = np.random.uniform(-10,10,size=(20,3))
linked = linkage(randomMatrix, 'ward')

labelList = ["foo" for i in range(0, 20)]

plt.figure(figsize=(15, 12))
dendrogram(
            linked,
            orientation='right',
            labels=labelList,
            distance_sort='descending',
            show_leaf_counts=False
          )
plt.show()

现在假设我想截断为仅 5 个叶子,并且对于每个叶子,将其标记为“foo,foo,foo ...”,即组成该簇的单词。 (注意:生成这些标签不是这里的问题。)我截断它,并提供一个标签列表来匹配:

labelList = ["foo, foo, foo..." for i in range(0, 5)]
dendrogram(
            linked,
            orientation='right',
            p=5,
            truncate_mode='lastp',
            labels=labelList,
            distance_sort='descending',
            show_leaf_counts=False
          )

问题是,没有标签:

我认为参数“leaf_label_func”可能在这里有用,但我不确定如何使用它。


您使用 leaf_label_func 参数是正确的。

除了创建绘图之外,树状图函数还返回一个包含多个列表的字典(在文档中称为 R)。您创建的 leaf_label_func 必须从 R["leaves"] 中获取值并返回所需的标签。设置标签的最简单方法是运行树状图两次。一旦与no_plot=True获取用于创建标签图的字典。然后再次创建情节。

randomMatrix = np.random.uniform(-10,10,size=(20,3))
linked = linkage(randomMatrix, 'ward')

labels = ["A", "B", "C", "D"]
p = len(labels)

plt.figure(figsize=(8,4))
plt.title('Hierarchical Clustering Dendrogram (truncated)', fontsize=20)
plt.xlabel('Look at my fancy labels!', fontsize=16)
plt.ylabel('distance', fontsize=16)

# call dendrogram to get the returned dictionary 
# (plotting parameters can be ignored at this point)
R = dendrogram(
                linked,
                truncate_mode='lastp',  # show only the last p merged clusters
                p=p,  # show only the last p merged clusters
                no_plot=True,
                )

print("values passed to leaf_label_func\nleaves : ", R["leaves"])

# create a label dictionary
temp = {R["leaves"][ii]: labels[ii] for ii in range(len(R["leaves"]))}
def llf(xx):
    return "{} - custom label!".format(temp[xx])

## This version gives you your label AND the count
# temp = {R["leaves"][ii]:(labels[ii], R["ivl"][ii]) for ii in range(len(R["leaves"]))}
# def llf(xx):
#     return "{} - {}".format(*temp[xx])


dendrogram(
            linked,
            truncate_mode='lastp',  # show only the last p merged clusters
            p=p,  # show only the last p merged clusters
            leaf_label_func=llf,
            leaf_rotation=60.,
            leaf_font_size=12.,
            show_contracted=True,  # to get a distribution impression in truncated branches
            )
plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

显示 scipy 树状图的簇标签 的相关文章

  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 如何在flask中使用g.user全局

    据我了解 Flask 中的 g 变量 它应该为我提供一个全局位置来存储数据 例如登录后保存当前用户 它是否正确 我希望我的导航在登录后在整个网站上显示我的用户名 我的观点包含 from Flask import g among other
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • 在 MatPlotLib 中检索自定义破折号

    关于如何使用 matplotlib 线中设置自定义破折号有很多问题Line2D set linestyle and Line2D set dashes 但是 我似乎找不到在设置后检索破折号图案的方法 这是在主站点上设置破折号的示例 我将在下
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 类型错误:预期单个张量时的张量列表 - 将 const 与 tf.random_normal 一起使用时

    我有以下 TensorFlow 代码 tf constant tf random normal time step batch size 1 1 我正进入 状态TypeError List of Tensors when single Te
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并

随机推荐

  • 仅当调试器运行时防伪令牌异常

    我有一个 mvc2 应用程序 它通过 iframe 提供内容 iframed 页面只是一个表单 它有一个请求验证令牌 在开发人员使用 Visual Studio 2005 调试器之前 一切都可以跨域正常运行 一旦他们这样做 我就会收到以下错
  • 如何在本地安装 Haskell Stack?

    我正在学校服务器上工作 我需要安装 Haskell 的堆栈 在里面README https github com commercialhaskell stack blob master README md文件并在website https
  • iOS 应用程序开发建议。应用程序进入后台

    我正在享受 swift 的乐趣 并且正在尝试制作一个简单的游戏 我得到了一些在游戏过程中发生变化的变量 如果出现以下情况 保存这些变量的最佳实践是什么applicationDidEnterBackground对于所有其他功能appDeleg
  • 将矩阵并排放置以创建另一个矩阵

    我有一个由 12 个矩阵组成的数组 由以下代码给出 ma array sample 0 127 3 4 6 replace TRUE c 3 4 12 让他们被命名为A B C L 我想创建一个矩阵 其中上面的矩阵以 4 行 3 列的模式排
  • 应用程序被最近任务杀死后如何重新启动服务

    我创建了一项服务来定期获取设备的当前位置 我希望该服务在后台运行 即使该应用程序已从最近打开的应用程序中清除 目前 该服务仅在后台运行 直到应用程序出现在最近打开的应用程序中 但当应用程序被刷掉 或以其他方式终止 时 该服务会立即停止 我已
  • Numpy sum keepdims 错误

    Python 在矩阵上调用 numpy sum 函数时会抛出错误 probs exp scores np sum exp scores axis 1 keepdims True 错误 probs exp scores np sum exp
  • 奇怪的javascript变量重新赋值问题

    我有一个变量叫做data 它将数组带入函数 然后我决定继续仅使用数组的第一个元素 data 0 如果我执行以下任一操作 会有什么不同吗 重用 替换数组变量名data通过为其分配第一个元素 这将是 data data 0 并继续使用data
  • 如何禁用从移动浏览器上传文件的相机选项?

    我正在使用文件类型输入 它应该接受 pdf doc 和 docx 文件格式 所以我添加了以下输入标签
  • ViewCompat.setOnApplyWindowInsetsListener() 更改系统导航栏的背景

    应用程序通常有这样的导航栏 但是当我添加ViewCompat setOnApplyWindowInsetsListener ViewCompat setOnApplyWindowInsetsListener window decorView
  • 用户访问通讯录时崩溃报告

    在我的应用程序中 Crashlytics 用于收集用户的崩溃报告 这是来自用户的一份崩溃报告 这可能取决于用户的联系信息 我无法重现崩溃 因为我不知道他 她的联系人中有什么 有人对这种情况有想法吗 com apple root defaul
  • MongoDB:如何将嵌套数组分组到一个文档中?

    我有以下收藏 id 23423 dsfsdf 32423 name Proj1 services id sdfs 24423 sdf name P1 Service1 products id sdfs 24jhh sdf name P1 S
  • dart中的完整路径和相对路径有什么区别

    我开发了一个 flutter 应用程序 在 model 包中定义了多个模型 然后我声明一个类Example例如 在 模型 中 模型 示例 dart class Example override String toString return
  • C# 如何在控制台应用程序中制作水平条形图

    我需要制作一个水平条形图来表示直方图字典中数字的出现情况 我尝试过使用 Console BackgroundColor 但是 这显然只会使线条背景色变成蓝色 static void Main string args string Speac
  • 为什么 '\97' ascii 值等于 55

    就像C code include
  • 尝试序列化 avro 记录时,B 无法转换为 java.nio.ByteBuffer

    我编写了一个小型 Java 程序 该程序应该监视目录中的新文件并将它们以 binay Avro 格式发送到 Kafka 主题 我是 Avro 新手 我使用 Avro 文档和在线示例编写了这篇文章 监控部分运行良好 但程序在运行时到达 Avr
  • 使用 jQuery 在网页上突出显示字符串的字符

    我想使用 jQuery 在网页上某个值的索引处突出显示字符串的字符 该值是可变的 一次位于索引 2 下一次位于索引 3 var copy I am learning how to program letter text copy code
  • AttributeError:未知的属性密度[重复]

    这个问题在这里已经有答案了 我试图掌握 SciPy 但我被困住了Unknown property density错误 即使我从官方复制了整个代码SciPy 文档 https docs scipy org doc scipy referenc
  • Javascript - 清除数组对象中的重复项

    你好 我有一个 javascript 数组对象 表示在给定国家 地区销售的商品数量 如下所示 var data c1 USA c2 Item1 c3 100 c1 Canada c2 Item1 c3 120 c1 Italy c2 Ite
  • 日期挑选和寻找差异

    我是使用 Netbeans 进行 Java 编程的新手 我已将 jCalendar 添加到我的 GUI 中以选择日期 我已在 jCalendar 按钮的 事件 gt 属性更改 代码中输入了这一行 Date date jcalendar1 g
  • 显示 scipy 树状图的簇标签

    我正在使用层次聚类来对词向量进行聚类 并且我希望用户能够显示显示聚类的树状图 然而 由于可能有数千个单词 我希望这个树状图被截断为一些合理的有价值的 每个叶子的标签是该簇中最重要的单词的字符串 我的问题是 根据文档 http student