У меня есть две матрицы: T1 и T2 каждый размером mxn. Я хочу найти коэффициент корреляции между двумя матрицами
До сих пор я не использовал встроенную библиотечную функцию. Я делаю следующие шаги для этого:
Сначала я вычислить среднее из двух матриц, как:В python Как найти Коэффициент корреляции между двумя матрицами?
M1 = T1.mean()
M2 = T2.mean()
, а затем я вычесть среднее из соответствующих матриц, как:
A = np.subtract(T1, M1)
B = np.subtract(T2, M2)
где н.п. является библиотекой 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:
Это формула, что я намерен рассчитать:
В этом изображении, С является одним из матриц и Т является еще одним.
'u' - средний символ.
Может кто-нибудь сказать мне, где на самом деле я делаю ошибку.
Вы хотите, чтобы корреляция между той же строкой в каждой матрице? – gauteh
Или вы хотите просто получить корреляцию между всеми значениями в 'A' и всеми значениями в' B'? Если это так, просто сгладьте обе матрицы в векторы и вычислите правильный коэффициент корреляции – Simon
См. Edit1, чтобы дать больше информации о проблеме. –