我如何显示最佳匹配的汽车名称和余弦相似度值并将它们显示在两个单独的列中? (需要提取第二大的值)

How do i show best matching car name and cosine similarity value and show them on two separate columns? (need to extract the second largest value)

我正在使用 mtcars 数据来计算每对汽车之间的余弦相似度。有 11 个变量和 32 个观察值。我创建了一个矩阵来存储计算结果,但不知道如何为每辆汽车找到最相似的汽车(只有一辆就可以)。

如何在两个单独的列中显示最匹配的汽车名称和相似度值? (我实际上需要提取第二大值,因为最大值 1.0 与汽车本身相匹配。)谢谢

我的矩阵显示如下: 3.1 我想让结果看起来像这样 3.2

这应该可以解决问题:

data <- matrix(rbinom(40, 20, 0.5), 8, 8)
rownames(data) <- LETTERS[1:8]
m <- apply(data, 2, max)
wm <- apply(data, 2, which.max)
data[cbind(wm, 1:nrow(data))]
out <- data.frame(Cars = rownames(data), 
  Most_Simiar = rownames(data[wm,],), 
  Cosine_Similarity = m)

您需要将 1 重新编码为 0,所以请执行以下操作:

data[which(data == 1, arr.ind = TRUE)] <- 0