導航:首頁 > 編程語言 > 曼哈頓距離和歐式距離python

曼哈頓距離和歐式距離python

發布時間:2024-10-24 01:39:16

Ⅰ 常見的相似度度量演算法




本文目錄:




  定義在兩個向量(兩個點)上:點x和點y的歐式距離為:

  常利用歐幾里得距離描述相似度時,需要取倒數歸一化,sim = 1.0/(1.0+distance),利用numpy實現如下:

python實現歐式距離

  從名字就可以猜出這種距離的計算方法了。想像你在曼哈頓要從一個十字路口開車到另外一個十字路口,駕駛距離是兩點間的直線距離嗎?顯然不是,除非你能穿越大樓。實際駕駛距離就是這個「曼哈頓距離」。而這也是曼哈頓距離名稱的來源, 曼哈頓距離也稱為城市街區距離(City Block distance)。

  (1)二維平面兩點a(x1,y1)與b(x2,y2)間的曼哈頓距離

  (2)兩個n維向量a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的曼哈頓距離

   python實現曼哈頓距離:


  國際象棋玩過么?國王走一步能夠移動到相鄰的8個方格中的任意一個。那麼國王從格子(x1,y1)走到格子(x2,y2)最少需要多少步?自己走走試試。你會發現最少步數總是max( | x2-x1 | , | y2-y1 | ) 步 。有一種類似的一種距離度量方法叫切比雪夫距離。

  (1)二維平面兩點a(x1,y1)與b(x2,y2)間的切比雪夫距離

  (2)兩個n維向量a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的切比雪夫距離

   python實現切比雪夫距離:


  閔氏距離不是一種距離,而是一組距離的定義。

  兩個n維變數a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的閔可夫斯基距離定義為:

  其中p是一個變參數。

  當p=1時,就是曼哈頓距離

  當p=2時,就是歐氏距離

  當p→∞時,就是切比雪夫距離

  根據變參數的不同,閔氏距離可以表示一類的距離。

  閔氏距離,包括曼哈頓距離、歐氏距離和切比雪夫距離都存在明顯的缺點。

  舉個例子:二維樣本(身高,體重),其中身高范圍是150 190,體重范圍是50 60,有三個樣本:a(180,50),b(190,50),c(180,60)。那麼a與b之間的閔氏距離(無論是曼哈頓距離、歐氏距離或切比雪夫距離)等於a與c之間的閔氏距離,但是身高的10cm真的等價於體重的10kg么?因此用閔氏距離來衡量這些樣本間的相似度很有問題。

  簡單說來,閔氏距離的缺點主要有兩個:

  (1)將各個分量的量綱(scale),也就是「單位」當作相同的看待了。

  (2)沒有考慮各個分量的分布(期望,方差等)可能是不同的。


  標准歐氏距離的定義

  標准化歐氏距離是針對簡單歐氏距離的缺點而作的一種改進方案。標准歐氏距離的思路:既然數據各維分量的分布不一樣,好吧!那我先將各個分量都「標准化」到均值、方差相等吧。均值和方差標准化到多少呢?這里先復習點統計學知識吧,假設樣本集X的均值(mean)為m,標准差(standard deviation)為s,那麼X的「標准化變數」表示為:

  而且標准化變數的數學期望為0,方差為1。因此樣本集的標准化過程(standardization)用公式描述就是:

  標准化後的值 = ( 標准化前的值 - 分量的均值 ) /分量的標准差

  經過簡單的推導就可以得到兩個n維向量a(x11,x12,…,x1n)與 b(x21,x22,…,x2n)間的標准化歐氏距離的公式:

  如果將方差的倒數看成是一個權重,這個公式可以看成是一種加權歐氏距離(Weighted Euclidean distance)。


  有M個樣本向量X1~Xm,協方差矩陣記為S,均值記為向量μ,則其中樣本向量X到u的馬氏距離表示為:

  而其中向量Xi與Xj之間的馬氏距離定義為:

  若協方差矩陣是單位矩陣(各個樣本向量之間獨立同分布),則公式就成了:

  也就是歐氏距離了。

  若協方差矩陣是對角矩陣,公式變成了標准化歐氏距離。

  馬氏距離的優缺點:量綱無關,排除變數之間的相關性的干擾。


  幾何中夾角餘弦可用來衡量兩個向量方向的差異,機器學習中借用這一概念來衡量樣本向量之間的差異。

  在二維空間中向量A(x1,y1)與向量B(x2,y2)的夾角餘弦公式:

  兩個n維樣本點a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夾角餘弦

  類似的,對於兩個n維樣本點a(x11,x12,…,x1n)和b(x21,x22,…,x2n),可以使用類似於夾角餘弦的概念來衡量它們間的相似程度。

  即:

  夾角餘弦取值范圍為[-1,1]。夾角餘弦越大表示兩個向量的夾角越小,夾角餘弦越小表示兩向量的夾角越大。當兩個向量的方向重合時夾角餘弦取最大值1,當兩個向量的方向完全相反夾角餘弦取最小值-1。

python實現餘弦相似度:


  兩個等長字元串s1與s2之間的漢明距離定義為將其中一個變為另外一個所需要作的最小替換次數。例如字元串「1111」與「1001」之間的漢明距離為2。

  應用:信息編碼(為了增強容錯性,應使得編碼間的最小漢明距離盡可能大)。

python實現漢明距離:


  兩個集合A和B的交集元素在A,B的並集中所佔的比例,稱為兩個集合的傑卡德相似系數,用符號J(A,B)表示。

  傑卡德相似系數是衡量兩個集合的相似度一種指標。

  與傑卡德相似系數相反的概念是傑卡德距離(Jaccard distance)。傑卡德距離可用如下公式表示:

  傑卡德距離用兩個集合中不同元素占所有元素的比例來衡量兩個集合的區分度。

  可將傑卡德相似系數用在衡量樣本的相似度上。

  樣本A與樣本B是兩個n維向量,而且所有維度的取值都是0或1。例如:A(0111)和B(1011)。我們將樣本看成是一個集合,1表示集合包含該元素,0表示集合不包含該元素。

  p :樣本A與B都是1的維度的個數

  q :樣本A是1,樣本B是0的維度的個數

  r :樣本A是0,樣本B是1的維度的個數

  s :樣本A與B都是0的維度的個數

  這里p+q+r可理解為A與B的並集的元素個數,而p是A與B的交集的元素個數。

  而樣本A與B的傑卡德距離表示為:


  皮爾遜相關系數即為相關系數 ( Correlation coefficient )與相關距離(Correlation distance)

  相關系數的定義

  相關系數是衡量隨機變數X與Y相關程度的一種方法,相關系數的取值范圍是[-1,1]。相關系數的絕對值越大,則表明X與Y相關度越高。當X與Y線性相關時,相關系數取值為1(正線性相關)或-1(負線性相關)。








1. 機器學習中的相似性度量

2. 推薦演算法入門(1)相似度計算方法大全

3. Python Numpy計算各類距離

4. 皮爾遜積矩相關系數

Ⅱ Python編程題:編程求兩點之間的曼哈頓距離


def My_abs(num):
if num < 0:
num *= -1
return num


print(abs(-5))

x1,y1=eval(input("輸入A點坐標,以逗號分隔:"))
x2,y2=eval(input("輸入B點坐標,以逗號分隔:"))


# 計算曼哈頓距離的函數
def getManhattanDistance(x1, y1, x2, y2):
return My_abs(x1 - x2) + My_abs(y1 - y2)


# 調用並輸出計算的曼哈頓距離
print(getManhattanDistance(x1, y1, x2, y2))



abs在Python中有了,然後我就命名成了My_abs。

備注也都打好了。

折柳成蔭寫的是C,soulofbug寫的是python

閱讀全文

與曼哈頓距離和歐式距離python相關的資料

熱點內容
指南針多空資金源碼 瀏覽:894
菜單上有灰色的命令 瀏覽:119
如何區分原神伺服器 瀏覽:452
php多ip 瀏覽:583
易語言編譯後打開需要dll 瀏覽:301
eos對稱加密技術 瀏覽:16
程序員老公生活 瀏覽:813
mq語言編譯器打不開 瀏覽:378
微信圖片怎麼查看文件夾 瀏覽:763
魔性解壓游戲冒險王者 瀏覽:546
多級壓縮氣體功耗 瀏覽:151
德國大眾空調壓縮機價格 瀏覽:646
伺服器怎麼解決停電問題 瀏覽:673
安卓抖音如何看好友是否在線 瀏覽:442
中國銀行選擇編譯環境 瀏覽:60
3dmax教程pdf 瀏覽:500
手機寫易語言代碼不用編譯 瀏覽:735
app製作開發公司怎麼收費 瀏覽:723
拼網關命令 瀏覽:483
伺服器如何確認有沒有裝系統 瀏覽:492