K means真的不能使用曼哈頓距離嗎?

2022-03-25 09:28:23 字數 1114 閱讀 5522

1.問題   

說到k-means聚類演算法,想必大家已經對它很熟悉了,它是基於距離計算的經典無監督演算法,但是有一次在我接受面試時,面試官問了我乙個問題:「k-means為什麼不能使用曼哈頓距離計算,而使用歐式距離進行計算?」,當時我頓時懵了,心想:『難道不都可以嗎?』,我只能說都可以,然後面試官給了我乙個眼神,「你回去查查吧,看看到底為什麼」,然後我就回家啦。這是我後來在網上找到的回答,如下圖:

1.在樣本資料中隨機設定n個聚類中心(xi,yi),假設資料只有二維;

2.計算樣本資料距離聚類中心(xi,yi)距離di,並各自歸屬到距離自己最近的中心點;

3.各個匯聚到一起的簇計算各自的平均值,將新的平均值作為新的中心點;

4.然後重複2、3兩步,直到中心點的移動範圍小於閾值或達到迴圈最大次數。

歐式距離也叫歐幾里得距離,也是最廣泛使用的距離計算公式,指n維空間中兩點間的直線距離

曼哈頓距離指同一座標系下兩點差的絕對值之和

多說乙個,余弦距離指空間中原點與兩點連線所夾角度的大小

那到底k-means、knn能不能用曼哈頓計算呢,如第一張所示,這是別人的答案,表示曼哈頓具有維度限制,真的是這樣嗎,我認為並不是這樣的,大家都知道曼哈頓距離可以計算二維空間兩點距離,那麼嘗試在三維空間進行計算,由此可以推廣到高維空間,如下手畫圖所示:

乙個2x2x2的立方體,坐落在三維座標軸上,點a(2,2,0),點c(0,0,2),求ac的曼哈頓距離,根據曼哈頓公式計算得:

|0-2|+|0-2|+|2-0|=6,顯而易見,實際距離也是6,路線有很多條,但結果都是一樣的。

綜上所述,曼哈頓距離適合k-means,只是各種距離演算法可能需要在不同業務場景或資料下選擇使用。

pdfcrop不能使用

最近,用到了pdfcrop,用來去除pdf中空白的邊。但是使用pdfcrop margins 0 pdf 後,給出了錯誤 error pdfcrop cannot call ghostscript 但是我已經安裝了ctex,裡面已經包含ghostscript,所以就不知道什麼錯誤。在網上針對這個問題...

CGRect CGFloat 不能使用

筆者還在照著別人 敲東西的階段 汗顏哪 言歸正傳,今天敲 的時候發現只要是繼承nsobject的類 都不能使用cgrect cgfloat 會報 unknown type name cgrect did you mean rect or unknown type name cgfloat 糾結了一下...

oracle 不能使用for update

select from table name for update 造成oracle資料庫卡死 1 首先查詢出問題表的session id select session id from v locked object l join dba objects o on l.object id o.obj...