다음은 벡터 사이의 유클리드 거리 및 변환 된 데이터 세트 (벡터) 스 니펫을 계산하는 코드입니다. 벡터 사이벡터 간의 유클리드 거리를 유사성 점수로 변환하는 방법
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) 즉 Euclidean distance의 역행렬 = 유사성 점수. 제안 사항이 있습니까? 덕분에
제안이 작동하지 않습니까? – sihrc
그것은 나에게 의미가 있지만 아직 시도하지 않았습니다. 저 밖에 더 좋은 아이디어가 있기를 바랄뿐입니다. – Tiger1
정말 유사성을 정의하는 방법에 달려 있습니다. '(-1, -1)'이'(5, 2)'와 ((1000, 0)'이 (1007, 0)'보다 더 유사해야합니까? 그렇다면 거리 정보가 충분하지 않습니다. 또한이 정보를 사용하려는 대상과 규모 요구 사항에 따라 다릅니다. – user2357112