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 array
reg.coef\u
与长度(n\u特征)相乘。为了将这些元素相乘,您需要重塑np.array或以类似方式重塑2D array
reg.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)