ValueError:在python中,x和y在线性回归中必须具有相同的第一维度
我用一个变量编写了一个线性回归模型,但是在运行下面的代码后,它会产生一个值错误ValueError:在python中,x和y在线性回归中必须具有相同的第一维度,python,numpy,linear-regression,Python,Numpy,Linear Regression,我用一个变量编写了一个线性回归模型,但是在运行下面的代码后,它会产生一个值错误 import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression as lr import numpy as np x=np.array([0,1,2,3,4,5,6,7,8,9]) y=np.array([1,3,2,5,7,8,8,9,10,12]) reg=lr().fit(x.reshape(10,1),y
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression as lr
import numpy as np
x=np.array([0,1,2,3,4,5,6,7,8,9])
y=np.array([1,3,2,5,7,8,8,9,10,12])
reg=lr().fit(x.reshape(10,1),y.reshape(10,1))
y_l = reg.intercept_ + reg.coef_ *x
plt.plot(x,y_l)
plt.show()
我通过使用线性方程中的x.Reformate(10,1)对numpy数组x进行了整形。然后它没有引发任何值错误。但我不知道这背后的原因
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression as lr
import numpy as np
x=np.array([0,1,2,3,4,5,6,7,8,9])
y=np.array([1,3,2,5,7,8,8,9,10,12])
reg=lr().fit(x.reshape(10,1),y.reshape(10,1))
y_l = reg.intercept_ + reg.coef_ *x.reshape(10,1)
plt.plot(x,y_l)
plt.show()
有人能帮我吗?提前谢谢
reg.coef\uu
是一个二维数组-在本例中,其形状为(1,1)
。当使用多元线性回归时,为了考虑多个系数,它总是2D
广播规则使表达式reg.coef_*x
返回一个2D数组,从而导致您看到的错误
在你的情况下,我认为解决这个问题的最简洁的表达是:
y_l = reg.intercept_ + reg.coef_.reshape(1) * x
这是因为将
np.array
与2D arrayreg.coef\u
与长度(n\u特征)相乘。为了将这些元素相乘,您需要重塑np.array或以类似方式重塑2D arrayreg.coef\uuz
这也应该起作用:
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression as lr
import numpy as np
x=np.array([0,1,2,3,4,5,6,7,8,9])
y=np.array([1,3,2,5,7,8,8,9,10,12])
reg=lr().fit(x.reshape(10,1),y.reshape(10,1))
y_l = reg.intercept_ + reg.coef_.reshape(1)*x
plt.plot(x,y_l)
plt.show()
print(reg.coef_.shape)