2016-12-01 51 views
1

我有兩個矩陣說,T1和T2每個大小爲mxn。我想找到兩個矩陣之間的相關係數
到目前爲止,我還沒有使用任何內置的庫函數。我做以下步驟吧:
首先,我計算兩個矩陣作爲的意思是:在python中,我們如何找到兩個矩陣之間的相關係數?

M1 = T1.mean() 
M2 = T2.mean() 

,然後我從相應的矩陣減去平均值爲:

A = np.subtract(T1, M1) 
B = np.subtract(T2, M2) 

其中NP是numpy庫,A和B是減法後得到的矩陣。
現在,我計算相關係數中爲:

alpha = np.sum(A*B)/(np.sqrt((np.sum(A))*np.sum(B))) 

但是,我得到的價值遠遠大於1,在沒有意義的。應該在0到1之間才能從中獲得一些意義。
我也試圖使用矩陣A和B的絕對值,但那也沒有工作。
我還試圖用:

np.sum(np.dot(A,B.T)) instead of np.sum(A*B) 

在分子,但也沒有工作。
EDIT1:
這是我打算計算下式:
This image shows the actual formula to be calculated

在該圖像中,C是矩陣中的一個,而T是另一個。 ''''是平均符號。

有人可以告訴我,我在哪裏做錯了。

+0

你想在每個矩陣同一行之間的相關性? – gauteh

+1

或者你想只是得到'A'中所有值和'B'中所有值之間的相關性?如果是這樣,只需將兩個矩陣平滑到矢量中並計算常規相關係數 – Simon

+0

請參閱edit1以更深入地瞭解問題 –

回答

0

你可以試試這個:

import numpy as np 
x = np.array([[0.1, .32, .2, 0.4, 0.8], [.23, .18, .56, .61, .12]]) 
y = np.array([[2,4,0.1, .32, .2],[1,3,.23, .18, .56]]) 
pearson = np.corrcoef(x,y) 
print(pearson) 
+0

它給出了一個矩陣,但我需要一個數字,一個標量值。 –

0

嗯,我覺得這個功能是做什麼的,我打算爲:

def correlation_coefficient(T1, T2): 
    numerator = np.mean((T1 - T1.mean()) * (T2 - T2.mean())) 
    denominator = T1.std() * T2.std() 
    if denominator == 0: 
     return 0 
    else: 
     result = numerator/denominator 
     return result 

分子的計算似乎是棘手這裏不準確地反映上圖和分母中顯示的公式只是兩幅圖像標準差的乘積。
但是,結果確實讓現在感覺作爲結果只在於0和1之間

相關問題