【问题标题】:How to measure the pairwise cosine for a data matrix in MATLAB如何在 MATLAB 中测量数据矩阵的成对余弦
【发布时间】:2018-09-14 13:14:06
【问题描述】:

假设有一个数据矩阵 (MATLAB)

X = [0.8147, 0.9134, 0.2785, 0.9649, 0.9572;
     0.9058, 0.6324, 0.5469, 0.1576, 0.4854;
     0.1270, 0.0975, 0.9575, 0.9706, 0.8003]

每一列代表一个样本的特征向量。 在MATLAB 中获得X 中的成对余弦相似度度量的最快方法是什么?比如我们要计算对称的S5X5矩阵,S(3,4)中的元素是第三列和第四列的余弦。

注意:余弦测量cos(a,b) 表示向量ab 之间的角度。

【问题讨论】:

  • 请告诉我们您是如何定义余弦相似度的,并给出一个示例结果。如果你有统计工具箱,1-squareform(pdist(X.','cosine')) 可能会做你想做的事
  • 我添加了注释。谢谢。
  • 这很难说清楚:-/您提出的输入的输出是什么?你检查我的代码了吗?
  • 我正在检查并会看到。谢谢
  • 1-squareform(pdist(X.','cosine')) 有效。

标签: matlab performance matrix cosine-similarity


【解决方案1】:

如果您有统计工具箱,请使用 pdist'cosine' 选项,然后是 squareform。请注意:

  • pdist 而非列视为观察结果。所以你需要转置输入。
  • 输出为 1 减去余弦相似度。所以你需要从 1 中减去结果。
  • 要以对称矩阵的形式获取结果,请应用squareform

所以,你可以使用

S = 1 - squareform(pdist(X.', 'cosine'));

【讨论】:

    猜你喜欢
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 2021-08-20
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 2020-12-20
    相关资源
    最近更新 更多