【问题标题】:How to calculate a single cross correlation coefficient of matrices A with other matrices B python?python - 如何计算矩阵A与其他矩阵B python的单个互相关系数?
【发布时间】:2018-11-08 21:50:25
【问题描述】:

我有三个矩阵 A B 和 C。我想找出哪个矩阵 (B & C) 与矩阵 A 的互相关系数最好。

A=np.array([[1, 2, 4],[3, 4, 5],[1, 4, 5]])  
B=np.array([[1, 1, 1], [1, 2, 4],[1, 4, 5]])   
C=np.array([[1, 2, 4], [1, 1, 1],[1, 4, 5]]) 

scipy.correlate2d 和 numpy.corrcoef 将矩阵作为输出。我只需要单个相关系数值,这样我就可以找到与 A 更相似的矩阵。
提前感谢您的回答。

【问题讨论】:

    标签: python python-3.x python-2.7 numpy scipy


    【解决方案1】:

    您正在寻找输出的最大值和 argmax:

    corr=scipy.correlate2d(A,B)
    maxCorr=corr.max()
    indexmaxCorr=np.argmax(corr)
    

    这是由于 correlate 基本上是一个卷积,然后你有不同“移位”的相似值。

    【讨论】:

    • 我的矩阵实际上是 2048 x 2048。所以它需要很长时间来计算。中心像素将给出相关性而不会发生偏移。但是我浪费了太多时间计算资源。我可以在不移位的情况下获得相关系数吗?
    • 所以你不应该做互相关 en.wikipedia.org/wiki/Cross-correlation 。只是相似度的度量en.wikipedia.org/wiki/Similarity_measure。有很多不同的方法可以做到这一点。我想最基本/最常用的一个是均方误差,如果你安装了 scikit,你可以这样做:from sklearn.metrics import mean_squared_error mse = mean_squared_error(A, B) 你在 sklearn.metrics 中实现了其他指标。 mse 也可以仅使用 numpy 进行编码 np.square(np.subtract(A, B)).mean()
    • 我有来自图像文件的矩阵..所以我不能使用 mean_squared_error(A, B) 或相似性我很抱歉..我还是会尝试
    • 我不明白矩阵来自图像文件的变化。如有必要,您始终可以对矩阵进行矢量化。图像上使用了许多相似性测量...
    【解决方案2】:

    根据this answer,可以对输入矩阵进行向量化处理,从向量数据中计算相关系数:

    import numpy as np
    
    A = np.array([[1, 2, 4], [3, 4, 5], [1, 4, 5]])
    B = np.array([[1, 1, 1], [1, 2, 4], [1, 4, 5]])
    C = np.array([[1, 2, 4], [1, 1, 1], [1, 4, 5]])
    CC_AB = np.corrcoef(A.ravel(), B.ravel())
    CC_AC = np.corrcoef(A.ravel(), C.ravel())
    print('Correlation between A and B:', CC_AB[0, 1])
    print('Correlation between A and C:', CC_AC[0, 1])
    

    如您所见,np.corrcoef() 的输出是一个 2 x 2 对称矩阵,其对角线上有一个(自相关)。您感兴趣的相关系数是非对角的。在您的情况下,结果是:

    Correlation between A and B: 0.7576538541439333
    Correlation between A and C: 0.5141222581690976
    

    【讨论】:

      猜你喜欢
      • 2017-09-26
      • 1970-01-01
      • 2020-10-20
      • 2018-10-19
      • 2012-10-01
      • 1970-01-01
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多