Python3 計算相關系數


 1 # -*- coding: utf-8 -*-
 2 """
 3 Created on Mon Jan  8 19:36:48 2018
 4 
 5 @author: markli
 6 """
 7 
 8 import numpy as np;
 9 import math;
10 
11 '''
12 計算矩陣A的相關系數矩陣
13 '''
14 def Correlation(A):
15     #得到A的形狀 m 是行數 n 是列數
16     m,n = A.shape;
17     #存放每一列的均值
18     means = [];
19     #存放每一列的方差
20     var = [];
21     for i in range(n):
22         me = np.mean(A[:,i]);
23         means.append(me);
24         temp = A[:,i] - me;
25         #計算方差,除以m-1 與np.corrcoef有誤差,除以m則基本沒有誤差
26         v = np.sum([p**2 for p in temp]) / m  ;
27         var.append(v);
28         
29     #存放相關系數
30     r = np.ones((n,n));
31     #離差矩陣
32     deviation = A - np.atleast_2d(means);
33     
34     for i in range(n):
35         for j in range(n):
36             cov = np.dot(np.atleast_2d(deviation[:,i]),np.atleast_2d(deviation[:,j]).T)/ (m);
37             va = math.sqrt(var[i] * var[j]);
38             r[i,j] = cov / va;
39             if(i==j):
40                 r[i,j]=1;
41             
42     return r;
43 #coeffs = np.ployfit(X,Y,degree) #得到一組回歸方程的系數 X為一維,Y一般為一維,最多二維 degree指定自變量的次數
44 #np.ploy1d(coeffs) 產生一個多項式 多項式次數由高到低
45 A = np.random.random((10,3));
46 r1 = Correlation(A);
47 r2 = np.corrcoef(A,rowvar=False);
48 print(r1);
49 print('numpy 計算值:');
50 print(r2);
51             
52     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM