用于从线性回归计算 R 平方的 NP 数组
NP Arrays Used in Calculating R-Squared from Linear Regression
我没看清楚。假设我有以下函数,每个函数的 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, ) vs (366,1)。如果是,那么如何删除不需要的列?
这是 X 数组变量的前 4 行,Y 变量看起来很相似。感谢您的帮助。
X
array([[ 3.06833333],
[ 7.93583333],
[ 8.00458333],
[11.06458333],
使用这个来传递单一维度 X
和 Y
以避免错误:
print(rsquared(X[:,0],Y[:,0]))
它与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
我没看清楚。假设我有以下函数,每个函数的 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, ) vs (366,1)。如果是,那么如何删除不需要的列?
这是 X 数组变量的前 4 行,Y 变量看起来很相似。感谢您的帮助。
X
array([[ 3.06833333],
[ 7.93583333],
[ 8.00458333],
[11.06458333],
使用这个来传递单一维度 X
和 Y
以避免错误:
print(rsquared(X[:,0],Y[:,0]))
它与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