我一直对 scipy.spatial.distance.pdist(...)
的用法感兴趣在 python 中,它对于我一直在处理的一些应用程序来说已经变得有用且快速。
我需要使用自定义的成对距离函数,而不是度量定义的标准默认距离度量。让我们做一个简单的例子,假设我不想使用 euclidean
距离函数如下:
Y = pdist(X, 'euclidean')
相反,我想自己定义欧氏函数并将其作为函数或参数传递给 pdist()
。如何将 euclidean
距离函数的实现传递给此函数以获得完全相同的结果。这个问题的答案,将帮助我以我感兴趣的方式使用该功能。
在 MATLAB 中,我知道如何使用 pdist()
,在 Python 中我还不知道。谢谢你的建议
最佳答案
documentation for pdist
中有一个示例:
import numpy as np
from scipy.spatial.distance import pdist
dm = pdist(X, lambda u, v: np.sqrt(((u-v)**2).sum()))
如果你想使用常规函数而不是 lambda 函数,则等价物是
import numpy as np
from scipy.spatial.distance import pdist
def dfun(u, v):
return np.sqrt(((u-v)**2).sum())
dm = pdist(X, dfun)
关于python - 在 python 中使用 pdist() 和您定义的自定义距离函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36422949/