Корреляционная матрица в python
Как вычислить корреляционную матрицу в python? У меня есть n-мерный вектор, в котором каждый элемент имеет 5 размерностей. Например, мой вектор выглядит как
[
[0.1, .32, .2, 0.4, 0.8],
[.23, .18, .56, .61, .12],
[.9, .3, .6, .5, .3],
[.34, .75, .91, .19, .21]
]
В этом случае размерность вектора равна 4, и каждый элемент этого вектора имеет размерность 5. Как построить матрицу самым простым способом?
Спасибо
Ответы
Ответ 1
Используя numpy, вы можете использовать np.corrcoef:
In [88]: import numpy as np
In [89]: np.corrcoef([[0.1, .32, .2, 0.4, 0.8], [.23, .18, .56, .61, .12], [.9, .3, .6, .5, .3], [.34, .75, .91, .19, .21]])
Out[89]:
array([[ 1. , -0.35153114, -0.74736506, -0.48917666],
[-0.35153114, 1. , 0.23810227, 0.15958285],
[-0.74736506, 0.23810227, 1. , -0.03960706],
[-0.48917666, 0.15958285, -0.03960706, 1. ]])
Ответ 2
Вы также можете использовать np.array, если вы не хотите снова писать свою матрицу.
import numpy as np
a = np.array([ [0.1, .32, .2, 0.4, 0.8], [.23, .18, .56, .61, .12], [.9, .3, .6, .5, .3], [.34, .75, .91, .19, .21]])
b = np.corrcoef(a)
print b
Ответ 3
Вот довольно хороший пример вычисления матрицы корреляций из нескольких временных рядов с использованием Python. Включенный исходный код вычисляет корреляционную матрицу для набора валютных пар Forex, используя Pandas, NumPy и matplotlib для создания графика корреляций.
Примеры данных представляют собой набор файлов исторических данных, а выход представляет собой единую корреляционную матрицу и график. Код очень хорошо документирован.