gpt4 book ai didi

python - 如何将向量之间的欧氏距离转换为相似度分数

转载 作者:行者123 更新时间:2023-11-28 18:47:19 25 4
gpt4 key购买 nike

下面是我计算向量之间欧氏距离的代码,以及我转换后的数据集(向量)的片段。

import itertools
import numpy as np

vect=[[2, 1, 1, 1, 1, 3, 4, 2, 5, 1],
[1, 5, 2, 1, 1, 1, 1, 1, 1, 2],
[2, 1, 1, 1, 2, 1, 1, 1, 1, 1]]

for u1, u2 in itertools.combinations(vect, 2):
x = np.array(u1)
y = np.array(u2)
space = np.linalg.norm(y - x)
print space

向量之间的欧氏距离为:

7.0
5.56776436283
4.472135955

我的目标是计算向量之间的相似度并为每次比较输出相似度分数。典型的相似度分数介于 0 和 1 之间,0 表示不相似,1 表示完全相似。这里的问题是如何将欧几里德距离转换为相似度分数?有人建议这个公式:1/1+d(P1, P2) 即欧氏距离的倒数=相似度分数。有什么建议吗?谢谢

最佳答案

那里有很多相似性度量。正如 user2357112 所说,最好的 取决于您的应用程序。我建议看看这里列出的一些内核:

http://crsouza.blogspot.co.uk/2010/03/kernel-functions-for-machine-learning.html

我发现卡方核在我的应用程序中是一个很好的默认选择 - 特别是当向量是直方图时。

如果你有一个数据子集,你已经知道哪些数据是你想要彼此相似的,我会建议尝试一些不同的内核并绘制这些样本的结果相似性矩阵(如果你有 100 个测试样本,你会得到一个 100x100 的相似矩阵,您可以使用 matplotlib.pyplot 中的 imshow 方法将其简单地绘制为热图)。

关于python - 如何将向量之间的欧氏距离转换为相似度分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18045321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com