如何像余弦相似度一样将欧氏距离转换为 0 和 1 的范围?

How to convert Euclidean distance to range 0 and 1 like Cosine Similarity?

想将欧氏距离映射到范围 [0, 1],有点像向量的余弦相似度。

例如

input  output
  0      1.0
  1      0.9  approximate
  2      0.8 to 0.9 somewhere
 inf     0.0

我尝试了公式 1/(1+d),但它很快就会偏离 1.0。

您似乎希望分数的分母增长得更慢(分母是底部的部分,目前为 (d+1))。有多种方法可以处理这个问题。例如,为 d 尝试较低的幂,例如

1 / (1 + d**(0.25))

...或者分母呈指数衰减,比如

1 / (1.1 ** d)

...或使用三角函数调整您的映射,例如

1 - tanh(d)

这些家庭中的某一个对你有用吗?