我正在学习 sklearn 特别是多项式模型拟合。 将
PolynomialFeatures
函数用于 2nd 次多项式,我不明白 LinearRegression()
功能如何根据数据帧维度读取数据。这是我不断收到的错误消息,后面是要复制的代码:
ValueError: X 有 4 个特征,但 LinearRegression 期望 14 个特征作为输入。
这是要复制的代码:
# Create dataframes
Dum_data = pd.DataFrame([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
Dum_data_y = pd.DataFrame([[13],[14],[15]])
#Fit to 2 degree polynomial
poly_fit = PolynomialFeatures(degree = 2, include_bias = False)
Dum_poly = poly_fit.fit_transform(Dum_data)
print(Dum_data.shape, Dum_data_y.shape)
# #Fit the linear model to this
modl = LinearRegression()
modl.fit(Dum_poly, Dum_data_y)
# #Now get the predictions
Dum_y_pred = modl.predict(Dum_data)
我在这里看到类似的问题,转换为 numpy 数组并重塑,但在指南中,我尝试使用 多项式回归...使用 scikit-learn 和 使用 Python 进行多元回归,它们似乎正在传递数据帧。我知道我需要以某种方式使用
.reshape()
函数,但是在尝试了不同维度的数据之后,我不知道如何确定预期的特征数量。谢谢!
您可以修改代码的最后一行,如下所示:
Dum_y_pred = modl.predict(Dum_poly)
原始数据包含4个特征:x1、x2、x3和x4。
当您应用 PolynomialFeatures 的二阶时,它会添加 10 个以上特征:x1x1、x1x2、x1x3、x1x4、x2x2、x2x3、x2x4、x3x3、x3x4 和 x4x4。
总共会产生 14 个用于训练模型的特征。 因此,你的模型只能接受具有这 14 个特征的数据。