如何在 Sklearn.preprocessing 中使用 .reshape() 进行 PolynomialFeatures 以获得 Multinomial 多项式回归的正确输入数量?

问题描述 投票:0回答:1

我正在学习 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()
函数,但是在尝试了不同维度的数据之后,我不知道如何确定预期的特征数量。谢谢!

python numpy machine-learning scikit-learn polynomials
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.