如何从单个特征重塑 'year'?

How to reshape 'year' from a single feature?

我有一个包含列 'year' 和 'per capita income (US$)' 的 df。

plt.scatter(df.year, df['per capita income (US$)'], color='red')
plt.xlabel('Year')
plt.ylabel('Per Capita Income (US$)')
plt.show()

reg = linear_model.LinearRegression()
reg.fit(df[['year']], df['per capita income (US$)'])

reg.predict(2011) 

收到错误消息:

ValueError: Expected 2D array, got scalar array instead:
array=2011.
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

我将 reg.predict() 的调用调整为:

reg.predict([[2011]])

代码执行没有错误,但是,.predict() 函数没有 return 期望的输出。

print(df.columns)

Index(['year', 'per capita income (US$)'], dtype='object')

您应该将 X 重塑为二维数组而不是一维数组。拟合模型需要一个二维数组。即(n_samples、n_features)。
当您使用 .reshape(-1,1) 时,它会向数据添加一维。

X = df['year'].values.reshape(-1,1)
y = df['per capita income (US$)'].values
reg = linear_model.LinearRegression()
reg.fit(X,y)
print(reg.predict([[2011]]))