【发布时间】:2021-08-02 20:52:32
【问题描述】:
我已经计算了推文的余弦相似度,我已经将其放入 my_matrix。现在我想获得最高的相似度分数。
cos = cosine(my_matrix)
cos
cos 给了我一个包含所有值的矩阵数组。输出如下所示:
1 2 3 4 5 6 7 8
1 1.0000000 0.5568073 0.3901539 0.5621206 0.2816833 0.2160066 0.2605051 0.2115766
2 0.5568073 1.0000000 0.6526458 0.7140950 0.4307470 0.3033117 0.2941557 0.3437280
3 0.3901539 0.6526458 1.0000000 0.5650099 0.3252116 0.2494666 0.2453746 0.3903765
4 0.5621206 0.7140950 0.5650099 1.0000000 0.4033797 0.2911018 0.3459270 0.3239339
5 0.2816833 0.4307470 0.3252116 0.4033797 1.0000000 0.2501818 0.1925585 0.1905618
6 0.2160066 0.3033117 0.2494666 0.2911018 0.2501818 1.0000000 0.1378479 0.2054312
7 0.2605051 0.2941557 0.2453746 0.3459270 0.1925585 0.1378479 1.0000000 0.1320529
8 0.2115766 0.3437280 0.3903765 0.3239339 0.1905618 0.2054312 0.1320529 1.0000000
9 0.4836184 0.6940823 0.5820808 0.7131646 0.4122365 0.2808218 0.3132991 0.3311042
10 0.3097645 0.3486836 0.2695222 0.3268555 0.1954665 0.1239200 0.1436308 0.1333930
现在我想遍历这个矩阵并从这个矩阵中得到最大值,除了 1(因为第 1 行和第 1 列 = 1,第 2 行和第 2 列 = 2...)。
我想在这个例子中得到的输出是第 4 行和第 2 列中的0.7140950,因为它是 1 之后的第二大值。到目前为止,我已经尝试了一个双 for 循环,以遍历行和列,但这根本不起作用,我不知道该怎么做。
biggest_value = 0
for(row in 1:nrow(party_m)) {
for(col in 1:ncol(party_m)) {
if(my_matrix[row, col] > biggest_value ){
biggest_value = my_matriy[row,col]
}
}
}
有人对此有解决方案吗?
【问题讨论】:
-
对角线设置为 0 并使用最大值。
diag(party_m) = 0然后max(party_m)。 -
@GregorThomas 非常感谢!这很好用! :)
-
还有没有办法在矩阵中找到最大值的位置?
标签: r matrix cosine-similarity