我有一个包含’year’和’人均收入(美元)’列的数据框(df)。
plt.scatter(df.year, df['per capita income (US$)'], color='red')plt.xlabel('年份')plt.ylabel('人均收入(美元)')plt.show()reg = linear_model.LinearRegression()reg.fit(df[['year']], df['per capita income (US$)'])reg.predict(2011)
接收到的错误消息:
ValueError: 期望得到2D数组,但得到的是标量数组:array=2011。请使用array.reshape(-1, 1)重塑你的数据,如果你的数据只有一个特征,或者使用array.reshape(1, -1),如果它包含一个样本。
我调整了reg.predict()的调用为:
reg.predict([[2011]])
代码没有错误地执行,但是,.predict()
函数没有返回所需的输出。
print(df.columns)Index(['year', 'per capita income (US$)'], dtype='object')
回答:
你应该将X重塑为2D数组而不是1D数组。拟合模型需要2D数组,即(n_samples, n_features)。
当你使用.reshape(-1,1)
时,它会为数据增加一个维度。
X = df['year'].values.reshape(-1,1)y = df['per capita income (US$)'].valuesreg = linear_model.LinearRegression()reg.fit(X,y)print(reg.predict([[2011]]))