numpy 如何在Sklearn.预处理中使用.reshape()for PolynomialFeatures来获得多项式回归的正确输入数量?

sbtkgmzw  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(94)

我正在学习sklearn,特别是多项式模型拟合。将PolynomialFeatures函数用于二次多项式,对于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数组并重新整形,但在我试图使用polynomial regression...using scikit-learnMultivariate regression with Python的指南中,它们似乎在传入嵌套。我知道我需要使用.reshape()函数,但是在玩弄了不同维度的数据之后,我无法确定如何确定期望的特征数量。谢谢你,谢谢

hujrc8aj

hujrc8aj1#

你可以修改代码的最后一行,如下所示:

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个特征的数据。

相关问题