在sklearn中,如何获得多项式线性回归中与哪个参数相对应的系数?

时间:2019-05-07 13:10:35

标签: python-3.x scikit-learn linear-regression polynomials

我正在使用Python3中的scikit-learn进行线性回归。我有一个xy数据数组,并希望使用三阶多项式实现线性回归(然后将拟合线应用于我的数据)。之后,我想弄清楚该多项式的实际方程是什么。但是,当我使用model.coeff_命令时,我不知道结果的顺序。

顺便说一句,我只有一个自变量x。假设我需要的方程式为y = a*x + b*x^2 + c*x^3 + intercept。我尝试使用model.coeff_命令,但不确定打印结果的顺序。

    # The data
    ----------------------
    utility = np.array([100, 96.64, 43.94, 24.48, 0, 0.05])
    windiness = np.array([0, 2.5, 6.7, 12.3, 15.5, 19, 20])
    windiness = windiness[:, np.newaxis]
    utility = utility[:, np.newaxis]

    # Regression
    -----------------------
    polynomial_features= PolynomialFeatures(degree=3)
    x_poly = polynomial_features.fit_transform(windiness)
    model = LinearRegression()
    model.fit(x_poly, utility)
    y_poly_pred = model.predict(x_poly)

因此,运行print(model.coef_)输出

[[ 0.        , -6.78066221, -0.19310896,  0.01361347]]

但是哪个数字是a,哪个数字是b,等等?

1 个答案:

答案 0 :(得分:1)

首先,您的windiness变量包含一个额外的值,因此您需要删除一个值,并确保变量输入和输出都具有长度。现在,让我们继续更新的代码。为了简单起见,我删除了0。

utility = np.array([100, 96.64, 43.94, 24.48, 0, 0.05])
windiness = np.array([2.5, 6.7, 12.3, 15.5, 19, 20])
windiness = windiness[:, np.newaxis]
utility = utility[:, np.newaxis]

polynomial_features= PolynomialFeatures(degree=3)
x_poly = polynomial_features.fit_transform(windiness)
model = LinearRegression()
model.fit(x_poly, utility)
y_poly_pred = model.predict(x_poly)

现在,让我们打印新的变换特征向量

print(x_poly)

您应该获得与此类似的输出

[[1.000000e+00 2.500000e+00 6.250000e+00 1.562500e+01]
 [1.000000e+00 6.700000e+00 4.489000e+01 3.007630e+02]
 [1.000000e+00 1.230000e+01 1.512900e+02 1.860867e+03]
 [1.000000e+00 1.550000e+01 2.402500e+02 3.723875e+03]
 [1.000000e+00 1.900000e+01 3.610000e+02 6.859000e+03]
 [1.000000e+00 2.000000e+01 4.000000e+02 8.000000e+03]]

在这里,我们可以看到第一个特征是X ^ 0,第二个特征是X ^ 1,第三个特征是X ^ 2,第四个特征是X ^ 3。现在,它已从多项式变为等效的线性模型。

print(model.coef_)可以显示您的模型系数。您得到这个[[ 0.0 11.125 -1.718 0.047]]

现在,让我们如下模拟三阶多项式 y[0] = model.intercept_ + 0.0 * X[0]^0 + 11.125 * X[0]^1 + (-1.718) * X[0]^2 + 0.047*X[0]^3

长话短说,系数如下 a = 11.125 b = -1.718 c = 0.047