【问题标题】:Howto calculate distance between two groups of data如何计算两组数据之间的距离
【发布时间】:2023-04-09 00:50:02
【问题描述】:

我有 2 个数据框 - 学习 L 行数据和测试 T 行数据。

我想计算一个 L*T 矩阵,其中包含相应元素之间的距离(欧几里得、曼哈顿、余弦...)。

这是我的看法:

distance2 <- function (x1, x2) {
            temp <- x1 - x2
            sum(temp * temp)
}

m <- matrix(0,nrow(learnData),nrow(testData))
for(td in 1:nrow(testData)) {
    for(ld in 1:nrow(learnData)) {
        m[ld,td] <- distance2(testData[td,],learnData[ld,])                 
    }
}

我认为这可以以更紧凑的“R”方式完成。有任何想法吗? 谢谢。

【问题讨论】:

  • 对于欧几里得,您最好使用 fields 包中的 rdist。它比dist 更快,更适合您的要求(两个数据帧)。见stackoverflow.com/a/10220868/1201032
  • 谢谢,我试过了,它完全符合我的要求。我选择了代理包,它做同样的事情,但已经实施了许多不同的措施。

标签: r dataframe distance


【解决方案1】:

我想到了两个选项:

  1. 使用 proxy 包,其中有许多已编码的相异系数,可以分别为两个数据帧计算此值
  2. analogue 包,它具有函数 distance(),它可以为您计算两个数据帧上的欧几里得和曼哈顿测量值(但不是余弦距离)。

【讨论】:

  • 代理包很棒,真的有很多距离和相似性度量。它可以满足我的要求,谢谢。
猜你喜欢
  • 2015-02-25
  • 2013-06-26
  • 1970-01-01
  • 1970-01-01
  • 2018-09-21
  • 1970-01-01
  • 2010-10-30
相关资源
最近更新 更多