2013-02-02 100 views
20

Làm cách nào để tính ma trận tương quan trong python? Tôi có một vector n-chiều trong đó mỗi phần tử có 5 chiều. Ví dụ: vectơ của tôi trông giống nhưma trận tương quan trong python

 
[ 
[0.1, .32, .2, 0.4, 0.8], 
[.23, .18, .56, .61, .12], 
[.9, .3, .6, .5, .3], 
[.34, .75, .91, .19, .21] 
] 

Trong trường hợp này của vectơ là 4 và mỗi phần tử của vectơ này có 5 chiều. Làm thế nào để xây dựng ma trận một cách dễ dàng nhất?

Cảm ơn

Trả lời

22

Sử dụng numpy, bạn có thể sử dụng 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.  ]]) 
+0

Cảm ơn. Đối với ứng dụng thực tế của tôi, tôi nhận được lỗi sau AttributeError: đối tượng 'int' không có thuộc tính 'corrcoef' – user1964587

+1

Có vẻ như bạn đã định nghĩa 'np' là một' int'. Ở trên, 'numpy' đã được nhập dưới dạng' np'. Bạn sẽ cần phải phân biệt hai. – unutbu

+0

Làm cách nào để vẽ đồ thị ma trận tương quan. Tôi đã thử với hàm imshow sau đây (corr_matrix, interpolation = 'bilinear') colorbar() show() Nguồn gốc của ma trận hình là (0, n) thay vì (0,0). Làm thế nào tôi có thể làm điều đó. Kích thước của ma trận là 5000X5000 – user1964587

0

Đây là một pretty good example tính một mối tương quan ma trận dạng nhiều chuỗi thời gian sử dụng Python. Mã nguồn bao gồm tính toán ma trận tương quan cho một tập hợp các cặp tiền tệ ngoại hối bằng cách sử dụng Pandas, NumPy và matplotlib để tạo ra biểu đồ tương quan.

Dữ liệu mẫu là tập hợp các tệp dữ liệu lịch sử và đầu ra là một ma trận tương quan đơn và một ô. Mã được viết rất tốt.

8

Bạn cũng có thể sử dụng np.array nếu bạn không muốn viết ma trận của bạn trên một lần nữa.

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 
Các vấn đề liên quan