与大熊猫np.corrcoef行为dataframes
问题描述:
我遵守以下,使用一些脚本我为计算每组系列款项:与大熊猫np.corrcoef行为dataframes
In [291]: sums_per_group2
Out[291]:
test_group control_group
one 4551.658544 4449.3
three 3770.712771 3430.5
two 9328.171538 8673.9
In [292]: sums_per_group2.shape
Out[292]: (3, 2)
In [293]: np.corrcoef(sums_per_group2)
Out[293]:
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])
In [294]: np.corrcoef(sums_per_group2.values)
Out[294]:
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])
In [295]: sums_per_group2.values.shape
Out[295]: (3, 2)
In [296]: np.corrcoef(sums_per_group2.iloc[:,0],sums_per_group2.iloc[:,1])
Out[296]:
array([[ 1. , 0.99853641],
[ 0.99853641, 1. ]])
In [296]: sums_per_group2.iloc[:,0].shape
Out[296]: (3,)
In [297]: sums_per_group2.iloc[:,1].shape
Out[297]: (3,)
正如你可以看到形状的任何输入到NP之间严格准确。 corrcoef()。
有人可以帮我理解这个吗?
答
你需要转sum_per_group2
变量,如果你想要把它当作二维数组:
np.corrcoef(sum_per_group2.T)
# array([[ 1. , 0.99853641],
# [ 0.99853641, 1. ]])
这里是文档约x
参数:
X:array_like 1- D或二维数组包含多个变量和观察值。
x
的每一行代表一个变量,并且每一列都有一个单独的 观察所有这些变量。下面请参阅rowvar
。
当您传入2d数组时,请确保该列是观察值且行是变量或特征;相关性是在行之间计算的。或者设置rowvar=0
:
np.corrcoef(sum_per_group2, rowvar=0)
#array([[ 1. , 0.99853641],
# [ 0.99853641, 1. ]])
如果不转的二维数组,该方法解释行作为载体,所以在你的第一个少数情况下,它计算行的所有组合的相关系数,因为每一行都是长度为2的矢量,所以你得到全部为1的系数,当你尝试用两点拟合一条线时(总是完美适合),会发生这种情况。
感谢您对函数工作的澄清,我错过了作为矢量事物的行。因此,现在有道理,我想知道为什么这个错误将能够系统地产生1个相关因子。但我没有想到我的形状。现在我应该尝试改变它来更好地测试函数行为。 –