scipy 成对距离和 X.X+Y.Y - X.Y^t 之间的差异

2023-12-28

假设我们的数据为

d1 = np.random.uniform(low=0, high=2, size=(3,2))
d2 = np.random.uniform(low=3, high=5, size=(3,2))
X = np.vstack((d1,d2))

X
array([[ 1.4930674 ,  1.64890721],
       [ 0.40456265,  0.62262546],
       [ 0.86893397,  1.3590808 ],
       [ 4.04177045,  4.40938126],
       [ 3.01396153,  4.60005842],
       [ 3.2144552 ,  4.65539323]])

我想比较两种生成成对距离的方法:

假设 X 和 Y 相同:

(X-Y)^2 = X.X + Y.Y - 2*X.Y^t

这是第一种方法,因为它在 scikit-learn 中用于计算成对距离,后来用于计算核矩阵。

import numpy as np
def cal_pdist1(X):
       Y = X
       XX = np.einsum('ij,ij->i', X, X)[np.newaxis, :]
       YY = XX.T
       distances = -2*np.dot(X, Y.T)
       distances += XX
       distances += YY
       return(distances)

cal_pdist1(X)
array([[  0.        ,   2.2380968 ,   0.47354188,  14.11610424,
         11.02241244,  12.00213414],
       [  2.2380968 ,   0.        ,   0.75800718,  27.56880003,
         22.62893544,  24.15871196],
       [  0.47354188,   0.75800718,   0.        ,  19.37122424,
         15.1050792 ,  16.36714548],
       [ 14.11610424,  27.56880003,  19.37122424,   0.        ,
          1.09274896,   0.74497242],
       [ 11.02241244,  22.62893544,  15.1050792 ,   1.09274896,
          0.        ,   0.04325965],
       [ 12.00213414,  24.15871196,  16.36714548,   0.74497242,
          0.04325965,   0.        ]])

现在,如果我使用如下所示的 scipy 成对距离函数,我得到

import scipy, scipy.spatial
pd_sparse = scipy.spatial.distance.pdist(X, metric='seuclidean')
scipy.spatial.distance.squareform(pd_sparse)
array([[ 0.        ,  0.92916653,  0.45646989,  2.29444795,  1.89740167,
         2.00059442],
       [ 0.92916653,  0.        ,  0.50798432,  3.22211357,  2.78788236,
         2.90062103],
       [ 0.45646989,  0.50798432,  0.        ,  2.72720831,  2.28001564,
         2.39338343],
       [ 2.29444795,  3.22211357,  2.72720831,  0.        ,  0.71411943,
         0.58399694],
       [ 1.89740167,  2.78788236,  2.28001564,  0.71411943,  0.        ,
         0.14102567],
       [ 2.00059442,  2.90062103,  2.39338343,  0.58399694,  0.14102567,
         0.        ]])

结果完全不同!它们不应该是一样的吗?


pdist(..., metric='seuclidean')计算标准化欧氏距离,不是squared欧几里得距离(即cal_pdist返回)。

From the docs http://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.spatial.distance.pdist.html:

Y = pdist(X, 'seuclidean', V=None)

计算标准化欧几里德距离。两个 n 向量之间的标准化欧氏距离u and v is

   __________________
  √∑(ui−vi)^2 / V[xi]

V是方差向量;V[i]是计算所有的方差i点的第 ' 个分量。如果没有通过,则自动计算。

尝试通过metric='sqeuclidean',您将看到两个函数在舍入误差范围内返回相同的结果。

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

scipy 成对距离和 X.X+Y.Y - X.Y^t 之间的差异 的相关文章

  • 在 Python 中使用 Selenium 处理“接受 Cookie”弹出窗口

    我一直在尝试用硒抓取这个房地产网站的一些信息 但是 当我访问该网站时 我需要接受 cookie 才能继续 这仅在机器人访问网站时发生 而不是在我手动执行时发生 当我尝试通过 xpath 或 id 查找相应的元素时 正如我在手动检查页面时找到
  • 从正在运行的 python 脚本检测优化标志是否为 -O 或 -OO

    有时我想生成一个子进程 其优化标志与启动父进程时使用的优 化标志相同 我可以使用类似的东西 optimize not debug 但这样我就可以匹配两者 O and OO flags 是否有一些 python 内部状态包含该信息 经过一番深
  • 行未从树视图复制

    该行未在树视图中复制 我在按行并复制并粘贴到未粘贴的任何地方后制作了弹出复制 The code popup tk Menu tree opportunity tearoff 0 def row copy item tree opportun
  • 在Python3.6中调用C#代码

    由于完全不了解 C 编码 我希望在我的 python 代码中调用 C 函数 我知道有很多关于同一问题的问答 但由于一些奇怪的原因 我无法从示例 python 模块导入简单的 c 类库 以下是我所做的事情 C 类库设置 我使用的是 VS 20
  • 一次将Python dict的内容分配给多个变量?

    我想做这样的事情 def f return a 1 b 2 c 3 a b f or a b f IE 这样 a 被分配为 1 b 被分配为 2 并且 c 是未定义的 这与此类似 def f return 1 2 a b f 依赖于变量名称
  • on_delete=models.PROTECT 和 on_delete=models.CASCADE 在 Django 模型上有什么作用?

    我对 Django 很熟悉 但最近注意到有一个on delete models CASCADE and on delete models PROTECT模型的选项 on delete models CASCADE and on delete
  • Tensorflow 可变图像输入大小(自动编码器、放大......)

    Edit WARNING不建议使用不同图像大小的图像 因为张量需要具有相同的大小才能实现并行化 我一直在寻找解决方案 了解如何使用不同大小的图像作为神经网络的输入 Numpy 第一个想法是使用numpy 然而 由于每个图像的大小不同 我无法
  • python 中分割字符串以获得一个值?

    需要帮助 假设我在名为 input 的变量中有一个字符串 Sam Person name kind input split 通过执行上述操作 我得到两个具有不同字符串 Sam 和 Person 的变量 有没有办法只获取第一个值 name S
  • 优化 Keras 以使用所有可用的 CPU 资源

    好吧 我真的不知道我在说什么 所以请耐心听我说 我正在使用 Theano 后端运行 Keras 以在 MNIST 图像上运行基本的神经网络 目前只是一个教程 过去 我一直使用我的旧 HP 笔记本电脑 因为我有 Windows 和 Ubunt
  • Python - 用逗号分割,跳过括号内的内容

    我需要用逗号分隔字符串 但我对这种情况有一个问题 TEXT EXAMPLE THIS IS A EXAMPLE BUT NOT WORKS FOR ME SECOND THIRD 我想拆分并得到 var 0 TEXT EXAMPLE THI
  • Pandas重置索引未生效[重复]

    这个问题在这里已经有答案了 我不确定我在哪里误入歧途 但我似乎无法重置数据帧上的索引 当我跑步时test head 我得到以下输出 正如您所看到的 数据帧是一个切片 因此索引超出范围 我想做的是重置该数据帧的索引 所以我跑test rese
  • Python igraph:从图中删除顶点

    我正在使用安然电子邮件数据集 并尝试删除没有 enron com 的电子邮件地址 即我只想拥有安然电子邮件 当我尝试删除那些没有 enron com 的地址时 一些电子邮件由于某些原因被跳过 下面显示了一个小图 其中顶点是电子邮件地址 这是
  • 无法打开 Python。错误 0xc000007b

    我最近一直在学习 Python 3 我在我的上网本 32 位 Windows 7 上创建简单的小程序没有任何问题 当我将它安装在我的上网本上时 我没有遇到任何问题 但现在我已经开始使用它了 我想将它安装在我的台式机上 并且我有一个 我的桌面
  • matplotlib matshow 标签

    我一个月前开始使用 matplotlib 所以我仍在学习 我正在尝试用 matshow 制作热图 我的代码如下 data numpy array a reshape 4 4 cax ax matshow data interpolation
  • Python:计算数据帧列中所有行中特定字符的实例数

    我有一个包含列 toaddress ccaddress body 的数据框 df 我想迭代数据帧的索引 以获取 toaddress 和 ccaddress 字段中电子邮件地址的最小 最大和平均数量 这是通过计算这两列中每个字段中的 和 的实
  • 在 MacO 和 Linux 上安装 win32com [重复]

    这个问题在这里已经有答案了 我的问题很简单 我可以安装吗win32com蟒蛇API pywin32特别是 在非 Windows 操作系统上 我一直在Mac上尝试多个版本pip install pywin32 都失败了 下面是一个例子 如果你
  • Airflow Python 单元测试?

    我想为我们的 DAG 添加一些单元测试 但找不到任何单元测试 有 DAG 单元测试框架吗 有一个端到端的测试框架存在 但我猜它已经死了 https issues apache org jira browse AIRFLOW 79 https
  • 张量流:注册 numpy bfloat16 扩展

    正如我所见 tensorflow 中有 bfloat16 的 numpy 扩展 https github com tensorflow tensorflow blob 24ffe9f729160a095a5cab8f592392018280
  • Python 3.2 中 **kwargs 和 dict 有什么区别?

    看起来Python的很多方面都只是功能的重复 除了我在 Python 中的 kwargs 和 dict 中看到的冗余之外 还有什么区别吗 参数解包存在差异 许多人使用kwargs 并通过dict作为论据之一 使用参数解包 Prepare f
  • TypeError:无法使用抽象方法实例化抽象类 <...>

    这是我的代码 from abc import ABC from abc import abstractmethod class Mamifiero ABC docstring for Mamifiero def init self self

随机推荐

  • JobIntentService 与 JobService 有何关系?

    的情况下Service and IntentService主要区别是Service在主线程上运行 同时IntentService不是 当工作完成时后者会自行完成 而我们必须调用stopService or stopSelf 停止一个Serv
  • mysql 获取一天的总工作时间

    我有一个 MySQL 表 其中记录了员工登录和注销时间 这里的in out列中1 代表登录 0 代表注销 id User id Date time in out 1 1 2011 01 20 09 30 03 1 2 1 2011 01 2
  • Mapbox 决定重叠顺序

    I have some features on the map displayed as icons I want to decide which icons should be hidden and which should be dis
  • 不同函数中同名的静态变量如何被系统识别?

    AFAIK 我们可以在不同的函数中有两个同名的静态变量吗 编译器和符号表如何管理它们 他们的身份如何单独管理 编译器不会将静态变量的名称存储在链接符号表中 就链接器而言 它们只是模块的一部分的一些内存 这可能不是在所有情况下 100 正确
  • Spring Security:根据实体不同的身份验证方法

    第一篇文章在这里 希望我做得对 在一个项目中 我们有一个场景 其中有一个具有多个实体的 Web 应用程序 目前 登录是通过默认的 JDBC Spring Security 提供程序进行管理的 工作正常 对于新的需求 我们需要每个实体都可以有
  • 通过 Z3 C++ API 使用浮点运算

    我正在尝试使用 Z3 解决非线性实数问题 我需要 Z3 来生成多个解决方案 在问题域中 精度并不是关键问题 我只需要小数点后一位或两位小数 因此 我需要设置 Z3 不探索实数的所有搜索空间 以最大限度地减少找到多个解决方案的时间 我正在尝试
  • `git rebase` 不更新分支?

    我有这个 master foo v v bar A B C D v E F G 我要这个 master foo v v bar A B C D v E F G so I我认为我需要做 git checkout bar git rebase
  • 如果通常的“t()”不起作用,如何转置 r 中的矩阵?

    我有一个矩阵 我试图在 R 中转置 但 t 函数没有返回正确的答案 如何转置矩阵 gt xx matrix c 3 7 4 8 2 byrow TRUE gt xx 1 2 1 3 7 2 4 8 gt t xx 1 0 7071068 0
  • 如何在Delphi中检查素数

    我想将 1 到 10000 之间的所有素数读入一个动态数组 将所有非素数读入另一个动态数组 然后将素数数组读入richedit1到目前为止我有 procedure primearrays var j k l i m integer k is
  • 如何使用仅在运行时已知的值来初始化对象值?

    假设我正在尝试编写一个简单的井字游戏 它有一个 M x N 字段 游戏只有一个字段 因此它可能应该用单例来表示object 像这样 object Field val height Int 20 val width Int 15 但我不想对高
  • CTE 到底如何发挥作用?

    我碰到这个用于连接行元素的 CTE 解决方案 http www simple talk com sql t sql programming concatenating row values in transact sql 我觉得这太棒了 我
  • 以某种方式在列表中注册我的课程

    我希望能够在一段时间内注册我的课程std map或向量 现在不要考虑重复等 但我不想在类构造函数调用或类的任何函数内注册它 以某种方式在类外部进行注册 所以即使我从未实例化它 我也能够知道它存在 Example Somehow from o
  • 如何让三星智能电视模拟器查看我的应用程序?

    我刚刚开始开发三星智能电视 到目前为止 我的第一步是一个巨大的失败 我正在运行 Linux 并且因为我已经安装并配置了 Eclipse 以进行 Android 开发 所以我尚未成功安装和运行智能电视 SDK 然而 受到鼓励如何在没有 IDE
  • gwt 中的 Window.alert() 事件

    我有一个疑问 如果我们在 gwt 的 Window alert 中按 OK 按钮会发生什么 如果我们按下 确定 按钮 背面是否会发生任何事件 Window alert 是一个阻塞调用 所以点击后OK代码恢复运行 Window alert O
  • 在 WiX 3.6 中设置 WebSite 元素的 AppPool

    我有一个 WiX 安装程序 它设置了几个根 IIS 网站 每个网站都有许多 Web 应用程序 我们为每个根都有一个单独的应用程序池 并将每个 Web 应用程序放入该应用程序池中 不幸的是 我找不到一种方法来确保网站进入其所需的应用程序池 而
  • 管理手动 URL 导航上的用户身份验证状态

    我将 Angular2 与 ASP NET Core MVC 结合使用 并且管理手动 URL 导航工作正常 服务器正在使用 Angular2 成功加载我的主页视图 在用户身份验证上 我设置一个会话变量 如下所示 HttpHelper Htt
  • 在VS2005上使用“--layout=system”时Boost链接错误

    我是 boost 新手 我想尝试一下 dll 的一些实际部署场景 因此我使用以下命令来编译 安装库 bjam install layout system variant debug runtime link shared link shar
  • 设置子进程中共享 c_char_p 中字符串的值?

    我有这样的情况 主进程生成一些子进程 它们应该将结果写入字符串和数字类型的共享对象中 对于数字类型没有问题 但对于字符串 值将丢失 import multiprocessing as mp from ctypes import Struct
  • 如何获取项目中所有功能的列表?

    我想以编程方式提取 Google Apps 项目中所有功能的列表 任何服务中似乎都没有一种方法可以轻松提取它们 除非它似乎以某种方式存储在 this 函数中 最好的方法是什么 您想要检索函数列表 您希望使用 Google Apps 脚本来实
  • scipy 成对距离和 X.X+Y.Y - X.Y^t 之间的差异

    假设我们的数据为 d1 np random uniform low 0 high 2 size 3 2 d2 np random uniform low 3 high 5 size 3 2 X np vstack d1 d2 X array