我只是好奇,我想我会问这个问题。当我手动计算一组数据的协方差矩阵时,为什么我的值与 numpy 的值略有不同?
我有两组X数据Y
data = io.loadmat("datafile.mat")['data']
X = data[:,0]
Y = data[:,1]
Run Code Online (Sandbox Code Playgroud)
协方差矩阵可以这样计算(通过查看 X 和 X、X 和 Y、Y 和 X 等之间的相关性)
n = len(X)
corXX = np.var(X)
corXY = (1/n)*np.dot(X - np.mean(X), Y - np.mean(Y))
corYY = np.var(Y)
covariance = np.array([[corXX, corXY], [corXY, corYY] ])
Run Code Online (Sandbox Code Playgroud)
对于我的数据集,这给了我:
array([[ 1.722105 , 5.34104265],
[ 5.34104265, 17.72717759]])
Run Code Online (Sandbox Code Playgroud)
而使用 numpy 的协方差函数covariance = np.cov(X,Y)给了我
array([[ 1.7395 , 5.39499258],
[ 5.39499258, 17.90623999]])
Run Code Online (Sandbox Code Playgroud)
类似,但不完全相同...
| 归档时间: |
|
| 查看次数: |
3303 次 |
| 最近记录: |