问题标签 [pairwise-distance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
232 浏览

r - R中的成对栅格比较:替代for循环?

如何有效地比较成对的分布栅格(raster仅包含 0 和 1 的图层)?我需要衡量约 6500 个单独的全球栅格之间的相似性。IstatSDMTools应该做的工作。

这是我的代码:

创建可重现的示例数据:值为 0 和 1 的栅格

列出栅格

创建空矩阵以填充来自循环的数据

循环比较所有可能的矩阵/栅格对

检查最终矩阵

将栅格转换为矩阵as.matrix可以显着减少计算时间,并且生成的最终表格是我所需要的,但是为数千个栅格执行此操作需要永远完成。如何优化代码以便以更有效的方式比较栅格?

0 投票
4 回答
6287 浏览

python - PyTorch中一组向量之间的成对相似度矩阵

假设我们有一个 3D PyTorch 张量,其中第一个维度表示batch_size,如下所示:

也就是说,对于每个ix[i]是一组 100 个 25 维向量。我想为每个批次项目计算这些向量的相似度(例如,余弦相似度——但通常是任何这样的成对距离/相似度矩阵)。

也就是说,对于每个x[i]我需要计算一个[100, 100]矩阵,该矩阵将包含上述向量的成对相似性。更具体地说,该矩阵的第 (i,j) 元素应包含 (100x25) 的第 i 行和第 j 行之间的相似性(或距离)x[t],对于所有t=1, ..., batch_size

如果我使用torch.nn.CosineSimilarity(),无论dim我使用什么,结果都是[100, 25](dim=0)[32, 25]( dim=1) ,我需要一个大小的张量[32, 100, 100]。我希望torch.nn.CosineSimilarity()以这种方式工作(因为,至少对我来说,它看起来更直观) ,但事实并非如此。

可以使用下面的方法来完成吗?

我想这可以给出一个距离矩阵,但是如果我需要一个任意的成对操作怎么办?我应该使用上述方法构建此操作吗?

或者也许我应该x以某种方式重复,以便我可以使用内置的torch.nn.CosineSimilarity()

谢谢你。

0 投票
1 回答
509 浏览

python - docker 中的 Python 代码未使用所有可用的 CPU 内核(仅使用一个)

我正在使用 AWS Batch 运行一个带有几个并行运行的模块的 python 脚本(在 AWS ECR 上的 docker 容器中)。当我在 Linux 16 核机器上手动调用脚本时,我看到 16 个 python 进程并行执行代码。

为了进一步加快运行速度,我想使用 AWS Batch 通过自动缩放到 64 个内核来运行相同的脚本。但是,这种方法只是启动了一个 python 进程——这显然比我最初的方法慢。

其他详细信息:我正在运行的并行 python 方法是pairwise_distances(基于joblib库构建)我在 Windows 10 机器上构建了 docker 映像,将其推送到 ECR 并使用 AWS Batch 调用它的运行。

我是否缺少调用 python 并行后端的关键内容,或者是否有任何我未配置的 docker 配置设置。非常感谢您提前提供的帮助。

示例 Python 代码:script.py

Dockerfile:

要求.txt:

0 投票
1 回答
123 浏览

python - 任何人都知道一种更有效的方法来对数百条轨迹进行成对比较?

所以我有两个不同的文件,其中包含一个正方形地图(512x512 像素)中的多个轨迹。每个文件都包含有关每个粒子在轨迹/轨迹(X 和 Y 坐标)内的空间位置以及该点所属的轨迹/轨迹 (TRACK_ID) 的信息。我的目标是找到一种方法在两个文件之间聚集相似的轨迹。我找到了一个很好的方法(距离聚类比较),但是代码太慢了。我只是想知道是否有人有一些建议可以让它更快。

我的文件看起来像这样:

在此处输入图像描述

我实施的方法根据称为 Fréchet 距离的东西(可能与此处无关)找到了类似的轨迹。您可以在下面找到我编写的函数,但简而言之,这是基本原理:

  • pandas.groupby使用file1 ( growth_xml) 和 file2 ( shrinkage_xml)的函数按轨道对所有点进行分组
  • 对于growth_xml(循环)中的每个轨迹,我与中的每个轨迹进行比较growth_xml
  • 如果他们通过了我定义的 Fréchet 距离标准(一个 if 语句),我将两个轨道都保存在一个新表中。您可以看到我调用的附加过滤条件delay,但我想在这里解释并不重要。

非常简单:

主要问题是大多数时候我有超过 2000 首曲目(!!),而且这种成对组合需要很长时间。我想知道是否有一种简单有效的方法来做到这一点。也许通过在多个小区域而不是整个地图中进行成对组合?没有把握...

0 投票
1 回答
55 浏览

r - 两组观察值之间的成对差异

我的数据集中有两个治疗组,我正在寻找一种快速方法来计算第一组和第二组观察结果之间的成对差异。

我怎样才能快速创建所有观察组合并找出它们的差异?

我想我可以像这样使用expand.grid来获得主题ID的组合......

然后我可以根据主题 ID 加入结果值并获取它们的差异。我想要一种更通用的方法,但如果它可用的话。

我基本上是在尝试从头开始计算 Mann-Whitney U 统计量,因此我需要确定活性治疗组的结果值是否大于安慰剂组的结果值(Y_a - Y_p > 0)。换句话说,我需要将活性治疗组的每个反应与安慰剂治疗组的每个反应进行比较。

所以如果我有一些看起来像这样的数据......

我想计算差分矩阵...

以下是一些真实数据:

我通过以下方式得到了我想要的结果:

但是那种。。糟透了。。

0 投票
1 回答
40 浏览

python - 2 因子近似的 2 组点的最大距离

给定一组 n 个点,我随机取 k 个点。我需要以最有效的方式计算k点与n点的最大距离系数为 2 近似(以某种方式利用三角不等式)。我的第一个想法是使用曼哈顿距离而不是欧几里得距离,但这并没有降低复杂性,因为它仍然是O(n*k)。可能有什么想法?

编辑:如果我首先计算 k 个点中的 2 个最远点,然后计算 2 个点与所有 n 个点的距离怎么办?

0 投票
0 回答
87 浏览

java - Java - 计算多向量的所有对位置距离

假设我有 5 个包含位置(2D 点)的不同长度的列表。我需要计算这 5 个列表之间所有可能的点对的距离,以便过滤距离小于阈值的对,例如 10。

一种天真的方法是在每个列表的每个点上进行循环,并验证是否有一对距离小于 10。

当我添加更多新的位置列表时,这种方法具有指数复杂性。

另一种方法不是创建一个包含 5 个列表的循环,而是创建所有可能的 2 个列表的 10 个循环(5 个列表的 2 个组合)。因此,如果我添加更多新列表,复杂性会随着组合数量(不是指数)而增加,但我仍然对此不满意。

有没有办法以线性复杂度计算多列表的所有对距离?谢谢

0 投票
1 回答
356 浏览

python - Calculating pairwise distances from external file

I have data in a text file of the following format:

I would like to be able to calculate pairwise distances for all of the coordinates I have, but somehow retain the atomic species identity (i.e. attach a string describing with t values were used in the calculation). The pairwise distance formula I am using is just the Euclidean distance matrix:

Where ri/rj are the coordinates in 3D space.

I can easily find the values of r_ij using this method (and reformatting the data so it a 3xN numpy array of just coordinate data):

But I can't seem to find a way to tag atom types with it (i.e. refactor the output to an array of tuples, with each tuple being the value of r_ij attached to a string of both atom types (i.e. 'Pb-S').

Thank you!

0 投票
0 回答
104 浏览

r - 在r中找到水道周围两点之间的最短距离

寻找有关解决此问题的最佳方法的一些建议。我需要在每对点之间制作一个成对的 OVER LAND 最短距离矩阵,共 309 个点(见下图)。

我正在考虑遵循的一种方法是创建整个相关区域的 shapefile 并将其栅格化,并使用 gdistance 库以某种方式将水道转换为“高成本”障碍物并将土地转换为“低成本”,然后找到成本最低的路径。然后找到一种方法将其转换为矩阵形式。或者是否有办法通过告诉 R 留在 shapefile 中来做到这一点?

任何建议都会非常有帮助!谢谢

两点之间最短距离的例子

0 投票
0 回答
80 浏览

python - 如何在python中获得两个向量列表的成对距离

假设我有两个向量列表:

我知道使用 scipy 我可以在一个列表中获得成对的距离,但是我如何为两个做到这一点,以便结果看起来像这样:

以最有效的方式?最好避免循环。