曼哈頓距離與歐幾里得距離

一、曼哈頓距離

曼哈頓距離又叫L1距離,它是點在坐標繫上的曼哈頓距離。對於平面上的兩個點(x1, y1)和(x2, y2),它們之間的曼哈頓距離是|x1-x2|+|y1-y2|,也就是橫向和縱向距離各自相加的值。

曼哈頓距離可以用於解決很多實際問題,例如計程車在城市裡行駛的費用問題。在一個網格狀道路的城市中,計程車需要按照交通規則行駛,不能直線行駛,所以到達目的地的最短距離並不一定是直線距離。因此我們可以在城市中以紅綠燈、標誌、路口等為網格,以曼哈頓距離作為距離,來求得計程車到達目的地的最短距離。

def manhattan_distance(point1, point2):
    return abs(point1[0]-point2[0]) + abs(point1[1]-point2[1])

二、歐幾里得距離

歐幾里得距離又叫L2距離,是點在坐標繫上的直線距離。對於平面上的兩個點(x1, y1)和(x2, y2),它們之間的歐式距離是√((x1-x2)²+(y1-y2)²)。

歐幾里得距離可以用於解決很多實際問題,例如機器學習中的KNN(K-Nearest Neighbors)分類演算法。在KNN演算法中,我們需要找到距離輸入數據最近的K個數據點,然後按照這K個數據點所屬的類別,來確定輸入數據的類別。此時我們就可以使用歐幾里得距離來計算數據點之間的距離,以確定哪些數據點是最近的。

import math

def euclidean_distance(point1, point2):
    return math.sqrt((point1[0]-point2[0])**2 + (point1[1]-point2[1])**2)

三、曼哈頓距離與歐幾里得距離的比較

曼哈頓距離和歐幾里得距離都是常用的距離度量。相比之下,曼哈頓距離更適合用於計算網格狀的數據結構,如城市街道,棋盤等;歐幾里得距離更適合用於連續空間的數據結構,如三維坐標、時間序列等。曼哈頓距離更容易計算,但它忽略了直線距離的影響;歐幾里得距離更準確,但計算量相對較大。

def compare_distance(point1, point2):
    manhattan_dis = manhattan_distance(point1, point2)
    euclidean_dis = euclidean_distance(point1, point2)
    if manhattan_dis > euclidean_dis:
        print("歐幾里得距離更優")
    elif manhattan_dis == euclidean_dis:
        print("曼哈頓距離和歐幾里得距離等效")
    else:
        print("曼哈頓距離更優")

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/242786.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:52
下一篇 2024-12-12 12:52

相關推薦

  • 馬氏距離計算實例詳解

    馬氏距離是一種常見的數據分析演算法,主要用於測量兩個樣本集的相似度。相較於歐幾里得距離,馬氏距離考慮了不同特徵之間的相關性,並使用協方差矩陣來對特徵進行權重調整。本文將深入探討如何使…

    編程 2025-04-13
  • 編輯距離詳解

    編輯距離(Levenshtein distance),指的是將一個字元串轉換成另一個字元串所需的最少編輯操作次數,可用於量化兩個字元串之間的相似度。本文將從多個方面對編輯距離進行詳…

    編程 2025-02-24
  • Tomcat-juli.jar全面解析

    一、tomcat-juli.jar是什麼? Tomcat是Apache基金會下的一個開源的Web伺服器,tomcat-juli.jar是Tomcat自帶的日誌庫。 它通過封裝JUL…

    編程 2025-02-05
  • Bray-Curtis距離

    一、什麼是Bray-Curtis距離? Bray-Curtis距離是生態學中常用的一種距離測量方法,用於計算樣本之間的相似性。通常用於對物種組成進行比較,例如不同環境中的動植物群落…

    編程 2025-02-01
  • cad複製距離怎麼設置,cad複製到指定距離

    本文目錄一覽: 1、cad複製平移一定距離 2、CAD把一條直線如何複製移動自己想要的距離? 3、模型雲CAD教程-CAD軟體怎樣等距離複製線條圖形? 4、在CAD里如何複製加移動…

    編程 2025-01-14
  • JS獲取滾動條距離頂部的距離

    JS獲取滾動條距離頂部的距離其實就是獲取瀏覽器滾動條已經滾動的高度。在實際的開發中,我們有時會需要根據滾動條距離頂部的距離,來控制一些元素的顯示和隱藏、載入更多數據等等操作。 一、…

    編程 2025-01-07
  • php時間相差8個小時問題,php時間距離現在

    本文目錄一覽: 1、php date.timezone = Asia/Shanghai ,設置 了,為什麼還是差8個小時 2、php 中的時間為什麼慢8個小時 3、php中time…

    編程 2024-12-25
  • 使用Java計算兩個經緯度之間的距離

    地球經度和緯度的距離在地球表面上並不是簡單的直線距離,而是大圓弧的長度。因此,計算兩個全球位置之間的距離需要使用數學公式。在Java中,有幾種方法可以準確地計算兩點之間的距離,幾乎…

    編程 2024-12-24
  • 深入探討bray-curtis距離

    一、braycurtis距離矩陣 bray-curtis距離是一種廣泛用於生態學、環境科學等領域的距離度量方法。它通過比較兩個樣本中物種組成的差異程度來衡量它們的相似程度。在實際應…

    編程 2024-12-24
  • 使用C++計算兩點之間的距離

    一、計算公式 計算兩點之間的距離需要使用勾股定理,即: d = √((x2-x1)²+(y2-y1)²) 其中,d表示兩點之間的距離,(x1,y1)和(x2,y2)分別表示兩個點的…

    編程 2024-12-23

發表回復

登錄後才能評論