如何指定聚类的距离函数?

2024-05-16

我想对给定距离的点进行聚类,奇怪的是,似乎 scipy 和 sklearn 聚类方法都不允许指定距离函数。

例如,在sklearn.cluster.AgglomerativeClustering,我唯一可以做的就是输入一个亲和力矩阵(这将非常占用内存)。为了构建这个矩阵,建议使用sklearn.neighbors.kneighbors_graph,但我不明白如何指定两点之间的距离函数。有人可以启发我吗?


所有 scipy 层次聚类例程都将接受自定义距离函数,该函数接受指定一对点的两个一维向量并返回一个标量。例如,使用fclusterdata https://docs.scipy.org/doc/scipy/reference/generated/scipy.cluster.hierarchy.fclusterdata.html#scipy.cluster.hierarchy.fclusterdata:

import numpy as np
from scipy.cluster.hierarchy import fclusterdata

# a custom function that just computes Euclidean distance
def mydist(p1, p2):
    diff = p1 - p2
    return np.vdot(diff, diff) ** 0.5

X = np.random.randn(100, 2)

fclust1 = fclusterdata(X, 1.0, metric=mydist)
fclust2 = fclusterdata(X, 1.0, metric='euclidean')

print(np.allclose(fclust1, fclust2))
# True

的有效输入metric=kwarg 与相同scipy.spatial.distance.pdist http://docs.scipy.org/doc/scipy-0.16.0/reference/generated/scipy.spatial.distance.pdist.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何指定聚类的距离函数? 的相关文章

随机推荐

  • 使用 BGTaskScheduler 进行后台获取与调试模拟完美配合,但在实践中却不起作用

    我在 appDelegate 的 didFinishLaunchingWithOptions 中注册后台获取任务 BGTaskScheduler shared register forTaskWithIdentifier Backgroun
  • Qt:测量事件处理时间

    我想测量我的应用程序中的哪些事件在主线程中需要很长时间才能执行 阻塞 GUI 或者至少是否有任何事件花费的时间超过 比如说 10 毫秒 显然 我对需要很长时间的任务使用线程和并发 但有时很难在其他线程中放入的内容和可以保留在 GUI 中的内
  • C++ 中求幂的函数是什么?

    如何计算一个数的幂 2 1 2 2 2 3 etc cmath 库中的 pow 更多信息here http en cppreference com w cpp numeric math pow 别忘了放 include
  • 需要使用 iFrame API 隐藏 YouTube 品牌

    我正在使用 YouTube iFrame API 在我的自定义播放器 javascript 播放器 中加载视频 我需要隐藏 Youtube 品牌 但是在 iOS 设备上 它显示带有以下参数的徽标 playerVars fs 1 autopl
  • 游戏GUI框架

    我目前正在重新修改游戏的用户界面 OpenLieroX http www openlierox net即 我正在寻找一个可以轻松创建 GUI 的库 框架 具体来说 这是我的要求 开源 游戏是 LGPL 的 遇到许可问题是我们最不想关心的事情
  • Google reCAPTCHA v2 在幕后如何工作?

    本文引用的是 Google ReCaptcha v2 不是最新版本 最近谷歌推出了简化的 验证码 验证系统 video https www youtube com watch v jwslDn3ImM0 使用户只需单击即可通过 验证码 但它
  • 如何从 Internet Explorer 获取与 cookie 关联的过期日期和标志?

    我可以得到 cookie 的值互联网获取Cookie http msdn microsoft com en us library windows desktop aa384710 28v vs 85 29 aspx or InternetG
  • SQL Server 大小写/排序规则问题

    今天我在客户数据库中遇到了一个奇怪的情况 SQL Server 2005 数据库排序规则不区分大小写 因此我可以使用任何大小写编写 SQL 查询 没有任何问题 除了一个 一张特定表中的一个特定列称为 DeadZone 如果我这样查询 从表名
  • 使用 zip 实用程序从工作区目录中压缩多个文件/文件夹

    我们有一个 Jenkins 管道 我想压缩位于工作区中多个目录中的多个文件 py 和 cfg 有没有一种方法可以将多个值传递给dirzip 方法的选项 zip zipFile package zip dir WORKSPACE infra
  • Django + nginx + uwsgi 无法登录

    我有非常简单的登录逻辑 类似于官方 Django 解决方案 class Login FormView template name login html form class AuthenticationForm def get self a
  • 以有效的方式在循环中附加字符串

    很长一段时间 我总是按以下方式附加字符串 例如 如果我想获取用某个符号分隔的所有员工姓名 在下面的示例中我选择了管道符号 字符串最终 字符串 Empty foreach Employee emp in EmployeeList final
  • 通过纯 JavaScript 获取 div 的第 n 个子元素

    我有一个名为 myDiv 的 div 元素 我怎样才能得到 myDiv 的第n个孩子DOM https en wikipedia org wiki Document Object Model操纵 Markup function reveal
  • SVG 文本无法在 Chrome 或 Safari 中呈现

    我有一些 SVG 文本在 Firefox 上运行良好 但在 Chrome 和 Safari 中却没有出现 我努力了 向 svg 容器添加填充 以防文本被隔断 从文本中删除 xml space preserve 添加内联填充颜色
  • 在 C# 中使用“C”dll [重复]

    这个问题在这里已经有答案了 可能的重复 如何从 C ASP NET 网页调用非托管 C C 代码 https stackoverflow com questions 720004 how do i call unmanaged c c co
  • Chrome 扩展程序可以相互通信吗?

    我正在编写一个Chrome扩展程序 并且想要实现一个接口或api 以便我将来制作的其他扩展程序可以使用它 最终的效果可能如下 分机 B 呼叫extensionA someMethod someParameters 并向分机A发送一些数据 分
  • AOSP 中 android.Build.SERIAL 何时何地生成?

    我知道android Build SERIAL是在第一次设备启动时生成的 但我无法准确定位位置和时间 我正在建造AOSP Jelly Bean Android平板电脑 nosdcard 第二个问题 这个是序列号吗 really对所有人来说都
  • Swift:协议、结构、类

    我开始学习 Swift 语言 但在理解协议 结构和类方面遇到了困难 我来自 Android 方面的编程 所以我相信 Swift 协议基本上是 Java 接口 其中每一个的正确用例是什么 这些类比并不 完全 正确 但这就是我所理解的要点 是的
  • Postgres < 9.0 的 DO 块相当于什么

    Postgres 8 4 8 相当于什么 DO BEGIN IF NOT EXISTS THEN EXECUTE END IF END create function f returns void as BEGIN IF NOT EXIST
  • Bootstrap 标签栏平滑移动导航按钮

    我有一个用于切换块的普通引导选项卡面板 在导航中切换块时 活动选项卡会突出显示 但现在 当我单击活动选项卡的背景时 它会立即发生变化 是否可以使切换选项卡时背景不会立即改变 而是根据需要哪个选项卡而平滑地左右移动 这可以用以下方法完成吗cs
  • 如何指定聚类的距离函数?

    我想对给定距离的点进行聚类 奇怪的是 似乎 scipy 和 sklearn 聚类方法都不允许指定距离函数 例如 在sklearn cluster AgglomerativeClustering 我唯一可以做的就是输入一个亲和力矩阵 这将非常