问题标签 [pdist]

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 投票
3 回答
180 浏览

matlab - MATLAB 中复杂向量的高效分类

我正在尝试优化这段代码并摆脱实现的嵌套循环。我发现将矩阵应用于 pdist 函数有困难

例如,1+j // -1+j // -1+j // -1-j 是初始点,我试图通过最小距离方法检测 0.5+0.7j 到它所属的点。
任何帮助表示赞赏

0 投票
0 回答
547 浏览

r - 在 R 中遇到 pdist 问题

我有两个矩阵:

features.dataf[,2:4] 这是一个数据框:

和 my_list[[1]] (里面有一个矩阵):

当我用这条线接受他们的 pdist 时:

结果输出如上所示。这似乎是完全错误的。在过去,pdist 总是给出一个输出,使得 dv[i,j] 应该具有第一个矩阵的第 i 个行向量和第二个矩阵的第 j 个行向量之间的欧几里德距离的输出。然而,上面的结果似乎只是给出了两个矩阵的行号。在我之前运行相同代码的过程中,它给出了正确的输出,即大小为 iXj 的矩阵,但这次似乎有些事情发生了翻天覆地的变化。有人可以帮我检测问题吗?

0 投票
1 回答
3651 浏览

python - pandas DataFrame 上的 scipy pdist()

我有一个大数据框(例如 15k 个对象),其中每一行是一个对象,列是数字对象特征。它的形式是:

我想计算所有对象(行)的成对距离并读到scipy 的 pdist()函数由于其计算效率是一个很好的解决方案。我可以简单地调用:

并看到该res数组包含以下顺序的距离:[first-second, first-third, second-third].

我的问题是如何以矩阵、数据框或(不太理想的)dict 格式获取它,以便我确切知道每个距离值属于哪对,如下所示:

最终,我认为将距离矩阵作为 pandas DataFrame 可能会很方便,因为我可以对每行应用一些排名和排序操作(例如,找到最接近 object 的前 N ​​个对象first)。

0 投票
1 回答
309 浏览

matlab - 了解 pdist 与 mdscale 结合使用

我正在解决一个混乱的问题。

我有一套 100 observatons。每个观察由 3 个特征描述。我必须将这些观察分为两组(每个观察都有一个标签)。

在对观察结果进行聚类之前,我首先计算观察结果之间的pdist值,然后使用 MATLAB 中的 mdscale 函数返回到 3 维。如果与使用原始观测值相比,我使用transformed_observationkmean 聚类算法作为输入,以获得更好的聚类结果(即聚类与标签匹配)。谁能解释我为什么???我刚试过...

在这里你可以找到我的步骤...

0 投票
1 回答
1043 浏览

matlab - pdist 和 pdist2 的不同行为

在 MATLAB 代码中,我使用了kullback_leibler_divergence可以在此处找到的相异函数。

我有一个矩阵A,我使用下载的函数计算相异矩阵。

理论上,如果我计算

我应该得到square_diss_mat等于的第一行one_dist,但我不是。

如果我使用欧几里得距离,我得到它:

你能告诉我为什么吗?

0 投票
3 回答
1685 浏览

python-2.7 - 在大型 numpy 三维数组上计算二维成对距离

我有一个 300 万个点的 numpy 数组,格式为[pt_id, x, y, z]. 目标是返回具有欧几里得距离两个数字min_d和的所有点对max_d

欧几里得距离在x和之间y,不在 上z。但是,我想用pt_id_from, pt_id_to,distance属性来保存数组。

我正在使用 scipy 的 dist 来计算距离:

我应该怎么做才能返回一个表单数组:[pt_id_from, pt_id_to, distance]

0 投票
1 回答
744 浏览

matlab - MATLAB - passing parameters to pdist custom distance function

I've implemented a custom distance function for k-medoids algorithm in Matlab, following the directions found in pdist.

Basically it compares two vectors, say A and B (which can also have different lengths) and checks if their elements "co-occur with tolerance": A(i) and B(j) co-occur with tolerance tol if

Without going into details, the distance is large if there are few "co-occurrences with tolerance".

Everything works as I expect if I define tol as a constant inside the function, but now I would like to pass it as a parameter whenever I call k-medoids. pdist documentation does not mention this possibility:

A distance function specified using @: D = pdist(X,@distfun). A distance function must be of form d2 = distfun(XI,XJ), taking as arguments a 1-by-n vector XI, corresponding to a single row of X, and an m2-by-n matrix XJ, corresponding to multiple rows of X. distfun must accept a matrix XJ with an arbitrary number of rows. distfun must return an m2-by-1 vector of distances d2, whose kth element is the distance between XI and XJ(k,:).

So, is it possible to pass parameters in some way to a custom distance function in Matlab? If not, which alternatives should I consider?

0 投票
1 回答
90 浏览

matlab - 在 pdist MATLAB 中实现扩展的 Jaccard 相似性

我想pdist()在 MATLAB 中使用并使用定义如下的自定义函数“Extended Jaccard”:

其中表示向量和||X_a . X_b之间的内积 ||^2 是给定向量的 norm_2。X_aX_b

强烈建议利用它,bsxfun()因为它基于多线程。当然,如果这是可能的。

你有什么想法:

提前感谢您的意见。

0 投票
1 回答
2356 浏览

python - 如何直接得到成对距离的压缩形式?

我有一个非常大的 scipy 稀疏 csr 矩阵。它是一个 100,000x2,000,000 维矩阵。让我们称之为X。每行是 2,000,000 维空间中的样本向量。

我需要非常有效地计算每对样本之间的余弦距离。我一直在使用sklearn pairwise_distances带有向量子集的函数,X其中给了我一个密集矩阵 D:包含冗余​​条目的成对距离的平方形式。如何使用sklearn pairwise_distances直接获取压缩形式?请参阅http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.pdist.html以了解压缩形式是什么。它是scipy pdist函数的输出。

我有内存限制,我无法计算平方形式,然后得到压缩形式。由于内存限制,我也不能使用scipy pdist它,因为它需要一个密集的矩阵X,它不再适合内存。我想过循环遍历不同的块X并计算每个块的压缩形式并将它们连接在一起以获得完整的压缩形式,但这相对繁琐。有更好的想法吗?

非常感谢任何帮助。提前致谢。

下面是一个可重现的例子(当然为了演示目的X要小得多):

如您所见dist2,它是压缩形式,是一个 499500 维向量。但是dist1是对称的正方形,是一个 1000x1000 的矩阵。

0 投票
1 回答
689 浏览

python - 对于某些特定索引,scipy 的 pdist 函数是否有特定用途?

我的问题是关于 scipy.spatial.distance 的 pdist 函数的使用。尽管我必须计算 1x64 向量与存储在 2D 数组中的其他数百万个 1x64 向量中的每一个之间的汉明距离,但我无法使用 pdist。因为它返回同一二维数组内任意两个向量之间的汉明距离。我想知道是否有任何方法可以让它计算特定索引向量与所有其他向量之间的汉明距离。

这是我当前的代码,我现在使用 1000x64,因为大数组会出现内存错误。

输出是

little.npy 有一个 1000x64 数组。例如,如果我只想查看 31. vector 和所有其他的汉明距离。我应该怎么办?