【问题标题】:NP Arrays Used in Calculating R-Squared from Linear Regression用于从线性回归计算 R 平方的 NP 数组
【发布时间】:2020-06-04 04:28:57
【问题描述】:

我没有清楚地看到这一点。假设我有以下函数,其中每个函数的 X 和 Y 形状为 (366,1) 的数组(函数中需要)。

 def rsquared(X, Y): #arrays
     """ Return R^2 where x and y are array-like."""

     slope, intercept, r_value, p_value, std_err = sp.stats.linregress(X, Y)
     return r_value**2

 print(rsquared(X,Y))

我正在尝试打印 r 平方值,但我不断收到此错误:

Traceback (most recent call last):

File "<ipython-input-912-af88c88367fe>", line 6, in <module>
print(rsquared(X,Y))

File "<ipython-input-912-af88c88367fe>", line 4, in rsquared
slope, intercept, r_value, p_value, std_err = sp.stats.linregress(X, Y)

File "C:\Users\U321103\AppData\Local\Continuum\anaconda3\envs\Stats\lib\site- 
packages\scipy\stats\_stats_mstats_common.py", line 116, in linregress
ssxm, ssxym, ssyxm, ssym = np.cov(x, y, bias=1).flat

ValueError: too many values to unpack (expected 4)

看起来代码期望 X 和 Y 的形状为 (366, ) 与 (366,1)。如果是,那么我如何删除不需要的列?

这里是 X 数组变量的前 4 行和 Y 变量看起来相似。感谢您的帮助。

X
array([[ 3.06833333],
       [ 7.93583333],
       [ 8.00458333],
       [11.06458333],

【问题讨论】:

    标签: python arrays numpy scipy correlation


    【解决方案1】:

    使用它传递单个维度XY 以避免错误:

    print(rsquared(X[:,0],Y[:,0]))
    

    【讨论】:

    • 太棒了 - 谢谢你的洞察力 - 非常感谢。
    【解决方案2】:

    和sklearn有点不同,所以一种解决方法是在函数中转置:

    import scipy as sp
    import numpy as np 
    def rsquared(X, Y): #arrays
         slope, intercept, r_value, p_value, std_err = sp.stats.linregress(X.T,Y.T)
         return r_value**2
    
    np.random.seed(111)
    X = np.random.uniform(0,1,(50,1))
    Y = np.random.uniform(0,1,(50,1))
    print(rsquared(X,Y))
    
    0.07042849841609072
    

    【讨论】:

      猜你喜欢
      • 2018-08-20
      • 2020-09-20
      • 1970-01-01
      • 2020-12-14
      • 2018-03-16
      • 2017-10-23
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多