为什么 sklearn LinearRegression 模型不接受一维数据?

why sklearn LinearRegression model does not accept one dimensional data?

我正在尝试学习线性回归的基础知识。

我尝试用最简单的数据为入门者构建最简单的模型。

我拥有的数据:

## Data (Apple stock prices)
   apple = np.array([155, 160, 165])
   days = np.array([1, 2, 3])

X 是天数,y 是苹果股票价格。

我尝试用单线构建模型:

model = LinearRegression().fit(X=days,y=apple)

然后我收到错误消息,该模型需要 2d 数据作为输入。 但为什么” ? X 和 y(在本例中为苹果的天数和股票价格)都是一维的。为什么要转换成二维数组?

输入是一个大小为 (nxm) 的数组,其中 m 是 x 变量的数量。 在您的情况下 m=1,因此您需要一个 (3x1) 数组。您当前的输入是 (3,)。 尝试:

days = np.array([1, 2, 3]).reshape(-1,1)

创建模型以同时支持一维和二维数据,如果输入形状为一维,则不支持二维,但当输入形状为二维时,只需重塑一维即可同时支持二维和一维数组到二维数组。这就是构建模型以接受二维数组以提高灵活性的原因。因此,只需重塑您的数据,您的模型就会正常运行。试试这个:

apple = np.array([155, 160, 165]).reshape(-1,1)
days = np.array([1, 2, 3]).reshape(-1,1)

model = LinearRegression().fit(X=days,y=apple)