tags: 2021IT
幾何中的夾角餘弦可用來衡量兩個向量方向的差異,當兩個向量的方向重合時夾角餘弦取最大值1,當兩個向量的方向完全相反夾角餘弦取最小值-1,兩個方向正交時夾角餘弦取值為0
二維平面兩點 與 間的夾角餘弦
$\cos{\theta}=\dfrac{x_1x_2+y_1y_2}{\sqrt{x_1^2+y_1^2}\sqrt{x_2^2+y_2^2}}$
兩個 n 維向量 與 間的夾角餘弦
$\cos{\theta} = \dfrac{AB}{|A||B|}$ 即 $\cos{\theta}=\dfrac{\displaystyle\sum_{k=1}^n{x_{1k}x_{2k}}}{\sqrt{\displaystyle\sum_{k=1}^n{x_{1k}^2}}\sqrt{\displaystyle\sum_{k=1}^n{x_{2k}^2}}}$
用python實現夾角餘弦
import numpy as np
def get_cosine(a, b):
a_norm = np.linalg.norm(a)
b_norm = np.linalg.norm(b)
cos = np.dot(a, b) / (a_norm * b_norm)
return cos
if __name__ == '__main__':
a = np.array([1, 2, 5])
b = np.array([7, 2, 4])
print(get_cosine(a, b)) # 0.68135982250898
a = np.array([3, 4, 9])
b = np.array([8, 1, 4]) # 0.6906921687873878
print(get_cosine(a, b))
兩個等長字串s1和s2之間的漢明距離是兩個字符串對應位置的不同字符的個數,就是將一個字符串變換成另外一個字符串所需要替換的字符個數
用python實現
import numpy as np
def get_dist(a, b):
a = np.array(list(a))
b = np.array(list(b))
return np.count_nonzero(a!=b)
if __name__ == '__main__':
a = 'aaaac'
b = 'bbaac'
print(get_dist(a, b)) # 2
a = '1143253'
b = '1155113'
print(get_dist(a, b)) # 4