[英]How to calculate distance or similarity between one item and an item set?
我所知道的軟件包中的所有dist /相似性函數均被設計為計算矩陣中“每對行”的距離/相似性。
如果輸入矩陣非常大,則dist矩陣將需要更大的內存,因為n行輸入矩陣將導致* n大小的dist矩陣。
我有一個目標項目x和一個項目集Y,我想計算該目標項目x與Y中每個項目y之間的距離/相似度。我如何在R中做到這一點?
這是使用apply函數的真正好地方。 您要做的是比較目標項目x和y的每個項目。 這可以通過在y的每個項目上應用函數來完成。
假設y是一個矩陣,並且每一列都是一個項目,這很容易建立關聯,因為它可以計算兩個項目之間的關聯:
apply(y, 2, cor, x)
這將為您提供一個向量,其中每個元素對應於x與y的第i個項之間的相關性。
您還可以根據需要更改相關方法:
apply(y, 2, cor, x, method="spearman")
如果您使用dist,則要稍微復雜一點,因為它不需要兩個參數。 它還假定行是項目而不是列:
apply(y, 2, function(y.item, x.item) { dist(rbind(y.item, x.item)) }, x)
同樣,如果您要使用與默認方法不同的距離方法(或將其他參數更改為dist),則始終可以傳遞更多參數:
apply(y, 2, function(y.item, x.item, ...) {
dist(rbind(y.item, x.item), ...)
}, x, method="manhattan")
代理包可以解決問題
x<-rnorm(10)
x<-matrix(x)
y<-matrix(rnorm(10*5),nrow=5)
require( proxy)
dist(t(x),y)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.