Scipy 學習第3篇:數字向量的距離計算


計算兩個數字向量u和v之間的距離函數

1,歐氏距離(Euclidean distance)

在數學中,歐幾里得距離或歐幾里得度量是歐幾里得空間中兩點間“普通”(即直線)距離。使用這個距離,歐氏空間成為度量空間。計算公式為

二維空間中的歐氏距離:

三維空間中的歐式距離:

n維空間中的歐式距離:

x = [1, 0, 0]
y = [0, 1, 0] dis = distance.euclidean(x, y)

2,曼哈頓距離(Manhattan/cityblock distance)

曼哈頓距離(Manhattan Distance)用以標明兩個點在標准坐標系上的絕對軸距總和。曼哈頓距離的命名原因是從規划為方型建築區塊的城市(如曼哈頓)間,最短的行車路徑而來(忽略曼哈頓的單向車道以及只存在於3、14大道的斜向車道)。任何往東三區塊、往北六區塊的的路徑一定最少要走九區塊,沒有其他捷徑。計算公式為:

如下圖所示,紅色表示曼哈頓距離,藍色和黃色代表等價的曼哈頓距離。

x = [5, 3, 9]
y = [0, 1, 6] dis = distance.cityblock(x, y)

3,坎貝拉距離(Canberra distance)

Canberra 距離是用來衡量兩個向量空間的居間,是Manhattan 距離的加權版本,Canberra 距離已被用作比較排名列表和計算機安全中的入侵檢測的測量。

x = [1, 2, 0]
y = [0, 1, 0]
dis = distance.canberra(x, y)

4,切比雪夫距離(Chebyshev distance)

切比雪夫距離(Chebyshev distance)是向量空間中的一種度量,二個點之間的距離定義是其各坐標數值差絕對值的最大值。以數學的觀點來看,切比雪夫距離是由一致范數(uniform norm)(或稱為上確界范數)所衍生的度量,也是超凸度量(injective metric space)的一種。計算公式為

x = [5, 3, 9]
y = [0, 1, 6]
dis = distance.chebyshev(x, y)

5,相關系數距離(Correlation distance)

相關系數距離是1與相關系數的差,相關系數的定義為

 常見的Pearson相關性系數即為

Pearson相關距離為

x = [5, 3, 9]
y = [0, 1, 6]
dis = distance.correlation(x, y)

6,余弦相似度距離(Cosine distance)

余弦相似性通過測量兩個向量的夾角的余弦值來度量它們之間的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大於1;並且其最小值是-1。從而兩個向量之間的角度的余弦值確定兩個向量是否大致指向相同的方向。兩個向量有相同的指向時,余弦相似度的值為1;兩個向量夾角為90°時,余弦相似度的值為0;兩個向量指向完全相反的方向時,余弦相似度的值為-1。這結果是與向量的長度無關的,僅僅與向量的指向方向相關。余弦相似度通常用於正空間,因此給出的值為0到1之間。

余弦相似度定義來自於歐幾里得點積,點積定義如下

余弦相似度為:

余弦相似度距離為1與余弦相似度的差

x = [5, 3, 9]
y = [0, 1, 6]
dis = distance.cosine(x, y)

8,閔可夫斯基距離(Minkowski distance)

閔氏距離不是一種距離,而是一組距離的定義,將以下形式的距離都定義為Minkowski distance。

 或 

當 [公式] 時,就是曼哈頓距離 當 [公式] 時,就是歐氏距離 當 [公式] 時,就是切比雪夫距離

x = [2, 0, 0]
y = [0, 1, 0]
dis = distance.minkowski(x, y, 2)

9,標准歐式距離(standardized Euclidean distance)

標准化歐氏距離是針對簡單歐氏距離的缺點(量綱差異)而作的一種改進方案,標准化方法為

變換后標准歐式距離為

x = [1, 0, 0]
y = [0, 1, 0]
s = [0.1, 0.1, 0.1]
dis = distance.seuclidean(x, y, s)

10,平方歐式距離(squared Euclidean distance)

平方歐式距離是簡單歐式距離每一項的平方,公式如下

x = [1, 0, 0]
y = [0, 1, 0]
dis = distance.sqeuclidean(x, y)

11,加權閔可夫斯基距離(Minkowski distance)

x = [1, 0, 0]
y = [0, 1, 0]
dis = distance.wminkowski(x, y, 2, np.ones(3))

12,Bray-Curtis 相異度

Bray-Curtis 相異度(Bray-Curtis dissimilarity)是生態學中用來衡量不同樣地物種組成差異的測度,計算公式為:

x = [1, 2, 0]
y = [0, 1, 0] dis = distance.braycurtis(x, y)

 

參考文檔:

scipy.spatial.distance

機器學習常用距離的定義和計算


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM