python求各種距離公式

2021-07-22 21:07:18 字數 1710 閱讀 6404

今天乙個偶然的機會體會到了python資料運算的強大。求乙個陣列各樣本之間的距離僅簡單的幾句**就行。看來真的技術改變世界啊。廢話不多說,記下來怕以後忘記。
from scipy.spatial.distance import pdist, squareform
下面結合api文件標註一下具體用法:
1.x = pdist(x, 'euclidean')
計算陣列x樣本之間的歐式距離 返回值為 y 為壓縮距離元組或矩陣(以下等同)
2. x = pdist(x, 'minkowski', p)
計算陣列樣本之間的明氏距離

3. y = pdist(x, 'cityblock')
計算陣列樣本之間的曼哈頓距離

4. x = pdist(x, 'seuclidean', v=none)
計算陣列樣本之間的標準化歐式距離 ,v是方差向量,表示 v[i]表示第i個分量的方差,如果缺失。預設自動計算。

5. x = pdist(x, 'sqeuclidean')
計算陣列樣本之間歐式距離的平方
6. x = pdist(x, 'cosine')
計算陣列樣本之間余弦距離 公式為:

7. x = pdist(x, 'correlation')
計算陣列樣本之間的相關距離。
8.x = pdist(x, 'hamming')
計算資料樣本之間的漢明距離

9. x = pdist(x, 'jaccard')
計算資料樣本之間的傑卡德距離
10. x = pdist(x, 'chebyshev')
計算陣列樣本之間的切比雪夫距離
11. x = pdist(x, 'canberra')
計算陣列樣本之間的坎培拉距離
12. x = pdist(x, 'mahalanobis', vi=none)
計算資料樣本之間的馬氏距離
還有好多不常用的距離就不一一寫出了,如果想查閱可以點

點我,點我

除了對指定的距離計算該函式還可以穿lmbda表示式進行計算,如下
dm = pdist(x, lambda u, v: np.sqrt(((u-v)**2).sum()))
y=scipy.spatial.distance.squareform(x, force='no', checks=true)
其中,x就是上文提到的壓縮矩陣y,force 如同matlab一樣,如果force等於『tovector』 or 『tomatrix』,輸入就會被當做距離矩陣或距離向量。
cheak當x-x.t比較小或diag(x)接近於零,是是有必要設成true的,返回值y為乙個距離矩陣y[i,j]表示樣本i與樣本j的距離。

python求球面距離

今天我們用python 寫乙個求球面距離的公式,可以通過經緯度,計算球面間兩點的距離。如下 def geodistance lng1,lat1,lng2,lat2 lng1,lat1,lng2,lat2 map radians,float lng1 float lat1 float lng2 flo...

ED距離 使用Python求編輯距離

編輯距離 edit distance 又稱levenshtein距離,是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字元。一般來說,編輯距離越小,兩個串的相似度越大。俄羅斯科學家vladimir levenshtein在...

python求投影距離 Python的優缺點

很多小夥伴們會問學習python難學嗎?python就是以他簡單易學出名的。幾乎是現在最簡單,卻可塑性最高的語言了。一般有其它程式語言基礎的,自學,三小時左右就能學會。現在python都有給小朋友的教程,簡單程度可見一般。所以python並不難學,而是非常簡單的。python的定位是 優雅 明確 簡...