我正在学习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-learn和Multivariate regression with Python的指南中,它们似乎在传入嵌套。我知道我需要使用.reshape()
函数,但是在玩弄了不同维度的数据之后,我无法确定如何确定期望的特征数量。谢谢你,谢谢
1条答案
按热度按时间hujrc8aj1#
你可以修改代码的最后一行,如下所示:
原始数据包含4个特征:x1,x2,x3和x4。
当您应用PolynomialFeatures的第二阶时,它会添加10个特征:x1x1、x1x2、x1x3、x1x4、x2x2、x2x3、x2x4、x3x3、x3x4和x4x4。
这总共会产生14个特征来训练模型。因此,模型只能接受具有这14个特征的数据。