使用sklearn修正多项式回归公式

Correct polynomial regression formula using sklearn

我正在使用 sklearn 执行多项式回归。我无法理解的是如何获得完整的多项式公式?打印出来的coef_顺序对吗?我正在尝试建立一个正确的回归方程,但没有任何效果。

我这里有一个代码,我可以在其中获取预测值、系数和截距。

from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures

Y = df['Y']
X = df[['X1', 'X2']]

poly = PolynomialFeatures(degree=2)
X_poly = poly.fit_transform(X)
poly.fit(X_poly, Y)

lin2 = LinearRegression()
model = lin2.fit(X_poly, Y)
y_pred = model_3.predict(X_poly)

print(y_pred)

print('Regression coefficients: ', model.coef_)
print('Intercept: ', model_3.intercept_)

Regression coefficients: [0.0 -3.9407245056806457 63.36152983871869 -0.0073134316780316105 0.28728821270355437 -1.8955885488237727 -317.773937549386]
Intercept:  40.587981548779965

假设 X1 = 167.8 和 X2 = 22.348595,回归后预测值为 361.67,但方程版本的 none 未给出 361.67 的结果。

我发现 coef_ 打印 [1, a, b, c, a^2, b^2, c^2, ab, bc, ca],所以在这种情况下 [1, a, b, a^2, b^2, ab],但我不确定这里的顺序是否正确。我得到的不是 361.67,而是 370.56:

y =  0.0 + -3.94 * X1 +  63.36  * X2 + -0.007  * X1^2 +  0.2872  * X1 * X2 +  -1.895  *  X2^2 + -317.77

我不认为公式或顺序有任何问题,只是小数点四舍五入会使您的预测与预期的差异更大。

如果您按照原来的顺序输入回归系数中的所有小数位,我相信您会得到正确的预测值 361.67。

如果有任何错误或者我误解了问题,请告诉我。

例如:


X1 = 167.8
X2 = 22.348595

y =  0.0 + -3.9407245056806457 * X1 +  63.36152983871869  * X2 + -0.0073134316780316105 * X1**2 +  0.28728821270355437  * X1 * X2 +  -1.8955885488237727 *  X2**2 -317.773937549386


print(y)

输出:

361.67832067451957