有人可以帮助我了解我在这里做错了什么(附代码的图像)?当我做点积的时候,我得到的几乎是0,除了np。corcoef返回显著的负相关值。
eigenvectors_sorted[0:2]
> array([[-0.4252893 , 0.42100611, 0.71434339, 0.36276216],
[ 0.14612219, 0.90470509, -0.33510219, -0.21877734]])
np.corrcoef(eigenvectors_sorted[0], eigenvectors_sorted[1])
> array([[ 1. , -0.16304091],
[-0.16304091, 1. ]])
np.dot(eigenvectors_sorted[0], eigenvectors_sorted[1])
> 5.551115123125783e-17
我在等np。corcoef也返回0值,而不是-0.163,我无法理解我做错了什么。
我认为这不是衡量同一件事,(最好问stats.stackexchange.com的数学解释)。
通过使用np.repeat
多次重复数据,快速证明相关性与点的数量无关,而点积则不是:
eigenvectors_sorted = np.repeat(eigenvectors_sorted, 100, axis=1)
np.corrcoef(eigenvectors_sorted[0], eigenvectors_sorted[1])
# array([[ 1. , -0.16304092],
# [-0.16304092, 1. ]])
np.dot(eigenvectors_sorted[0], eigenvectors_sorted[1])
# -8.079945611472183e-07
有更多的点:
eigenvectors_sorted = np.repeat(eigenvectors_sorted, 1_000_000, axis=1)
np.corrcoef(eigenvectors_sorted[0], eigenvectors_sorted[1])
# array([[ 1. , -0.16304092],
# [-0.16304092, 1. ]])
np.dot(eigenvectors_sorted[0], eigenvectors_sorted[1])
# -0.008079939827439375