簡體   English   中英

如何計算一個項目和一個項目集之間的距離或相似度?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM