python - 使用 np.random.rand 的 PIL 逊相关失败

标签 python numpy

我有以下代码来使用两种不同的方式生成数字系列来计算相关系数。它无法用于第一种方式(corr_coeff_pearson),但适用于第二种方式(corr_coeff_pearson_1)。为什么会这样呢?在这两种情况下,变量都属于“numpy.ndarray”类

import numpy as np

np.random.seed(1000)

inp_vct_lngt = 5

X = 2*np.random.rand(inp_vct_lngt,1)
y=4+3*X+np.random.randn(inp_vct_lngt,1)
print(type(X))

corr_coeff_pearson=0
corr_coeff_pearson = np.corrcoef(X,y)
print("Pearson Correlation:")
print(corr_coeff_pearson)

X_1 = np.random.randint(0,50,5)
y_1 = X_1 + np.random.normal(0,10,5)
print(type(X_1))

corr_coeff_pearson_1 = np.corrcoef(X_1,y_1)
print("Pearson Correlation:")
print(corr_coeff_pearson_1)

是否有某种方法可以“转换”生成我缺少的系列的第一种方式中的数字?

最佳答案

问题是 Xy 是二维的:

>>> X
array([[1.9330627 ],
       [0.19204405],
       [0.21168505],
       [0.65018234],
       [0.83079548]])
>>> y
array([[8.60619212],
       [6.09210226],
       [5.33097283],
       [5.71649684],
       [5.18771916]])

所以corrcoef正在思考

Each row of x represents a variable, and each column a single observation of all those variables

(引自docs)

您可以做的是将二维展平为一维:

>>> np.corrcoef(X.flatten(),y.flatten())
array([[1.        , 0.84196446],
       [0.84196446, 1.        ]])

或者使用rowvar=False:

>>> np.corrcoef(X,y,rowvar=False)
array([[1.        , 0.84196446],
       [0.84196446, 1.        ]])

关于python - 使用 np.random.rand 的 PIL 逊相关失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52260838/

相关文章:

python - 在字典中搜索元组作为具有未知部分的键

python - aws 实例上的 Randint

python - 如何在测试运行时类型检查期间模拟 Python 类?

python - OpenCV 光流断言

python - Pandas 的 pd.NA 与 np.nan

python - 从 numpy digitize 计算 bin 的百分位数?

python - 性能问题 : big numpy array and system call

python - Matplotlib - 添加与轴底部对齐的标签

python - 准备张量分配时出现意外失败 : tensorflow/lite/kernels/reshape. cc :85 num_input_elements ! = num_output_elements (1200 != 0)

python - 从 scipy.linalg.lstsq 获取 R^2 值