使用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
我正在使用 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