如何在 MATLAB 中测量数据矩阵的成对余弦

How to measure the pairwise cosine for a data matrix in MATLAB

假设有一个数据矩阵(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之间的夹角。

如果您有统计工具箱,请使用 pdist with the 'cosine' option, followed by squareform。注意:

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

所以,您可以使用

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