我想創建一個距離數據框的加權歐氏距離的距離矩陣。權重將在向量中定義。這裏有一個例子:R中的加權歐幾里德距離
library("cluster")
a <- c(1,2,3,4,5)
b <- c(5,4,3,2,1)
c <- c(5,4,1,2,3)
df <- data.frame(a,b,c)
weighting <- c(1, 2, 3)
dm <- as.matrix(daisy(df, metric = "euclidean", weights = weighting))
我搜索無處不在,聲稱支持加權不能「集羣」包內發現河的「菊花」功能的軟件包或解決方案,這一點,但權重唐似乎沒有被應用,它只是吐出常規的歐幾里得。距離。
任何想法堆棧溢出?
newdf <- sweep(df, 2, weighting, function(x,y) x * sqrt(y))
as.matrix(daisy(newdf, metric="euclidean"))
但是爲了以防萬一,你想有更多的控制和了解:
https://stat.ethz.ch/R-manual/R-devel/library/cluster/html/daisy.html 我可能搞錯了,其實。該文件似乎表示,權重只適用於高爾距離。儘管如此,我的問題仍然存在:是否有支持加權歐幾里德距離的包? – Gary866
我認爲你需要顯示「加權距離」的公式。 –
http://images.slideplayer.com/16/5203007/slides/slide_49.jpg 所以在這個例子中(我已經糾正),如果我們想要第1行和第2行之間的距離,它會計算爲: 距離= 1 *(1-2)^ 2 + 2 *(5-4)^ 2 + 3 *(5-4)^ 2 距離計算應用於大數據集,變量和權重在每次運行中都會有所不同。所以它不是簡單的(或者至少超出我的技能水平)寫我自己的功能,因此我在尋找一個軟件包。 – Gary866