Евклидово расстояние с весами - PullRequest
5 голосов
/ 14 января 2012

В настоящее время я использую SciPy для расчета евклидова расстояния

dis = scipy.spatial.distance.euclidean(A,B)

где;A, B - 5-мерные битовые векторы.Теперь он работает нормально, но если я добавлю весовые коэффициенты для каждого измерения, можно ли использовать scipy?

Что у меня сейчас: sqrt((a1-b1)^2 + (a2-b2)^2 +...+ (a5-b5)^2)

Что я хочу: sqrt(w1(a1-b1)^2 + w2(a2-b2)^2 +...+ w5(a5-b5)^2)используя scipy или numpy или любой другой эффективный способ сделать это.

Спасибо

Ответы [ 2 ]

8 голосов
/ 14 января 2012

Предложение о написании вашей собственной взвешенной нормы L2 является хорошим, но расчет, приведенный в этот ответ , неверен. Если намерение состоит в том, чтобы рассчитать

enter image description here

тогда это должно сделать работу:

def weightedL2(a,b,w):
    q = a-b
    return np.sqrt((w*q*q).sum())
1 голос
/ 14 января 2012

Просто определите это сами.Нечто подобное должно сработать:

def mynorm(A, B, w):
    import numpy as np
    q = np.matrix(w * (A - B))
    return np.sqrt((q * q.T).sum())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...