【问题标题】:How to interpret coefficients returned from `LinearRegression().coef_` when using polynomial regression使用多项式回归时如何解释从`LinearRegression().coef_`返回的系数
【发布时间】:2020-05-16 02:37:24
【问题描述】:

我有一个训练数据集x_train,包含 6 个特征/变量和目标 y_train。这些存储在pandas 数据帧中。

我对此进行了线性回归以获得y = b + m_1*x_1 + m_2*x_2 + ... + m_6*x_6 形式的模型。当我打印LinearRegression().coef_ 时,我得到一个如下所示的numpy 数组:[[m_1, m_2, m_3, m_4, m_5, m_6]]。由此,我可以很好地提取系数mi。

现在我正在尝试对这些数据进行二次回归。我希望这能给我一个y = b + m_{11}*x_1 + m_{12}*x_1^2 + m_{21}*x_2 + m_{22}*x_2^2 + ... + m_{62}*x_6^2 形式的模型。所以我希望我应该得到 12 个系数,m_11, m_12, m_21, m_22, m_31, m_32, m_41, m_42, m_51, m_52, m_61, m_62。相反,当我打印 qm.coef_ 时,如下面的代码所示,我得到一个长度为 28 的 numpy 数组:

>>> print(qm.coef_)
[ 5.23243620e-08 -4.52818442e+01 -1.69803868e-02  1.23876223e+00
 -1.31251424e+01  6.34950041e+01 -5.65064601e-02 -3.04164916e+00
  1.22800976e-03 -1.81908736e-02 -1.38319879e+00 -1.88468027e+00
  8.98960781e-03 -5.10163574e-07  5.60756672e-04 -8.52068126e-04
 -5.09033748e-03  2.67482109e-06  1.10815787e-01 -7.45059709e-01
 -1.05108447e+00  6.37628573e-05 -9.12589844e-01 -1.22173903e+00
 -5.47228030e-04  6.34950042e+01 -5.39225901e-03  2.21487661e-06]

我的问题是,为什么我得到 28?我要查找的 12 个系数在哪里,其他 16 个系数是什么?


这是我的代码:

poly = PolynomialFeatures(degree=2)
X_poly = poly.fit_transform(x_train)
poly.fit(X_poly, y_train)
qm = LinearRegression()
qm.fit(X_poly, y_train)
print(qm.coef_)

A similar question 未得到答复。 Another similar question 未正确回答。

【问题讨论】:

    标签: python scikit-learn non-linear-regression quadratic


    【解决方案1】:

    这不是编程问题,但这里是解释:

    有 6 个特征,所以 a1*x1 + a2*x2 .. + a6*x6 将产生 6 个 theta。 现在它们的平方作为特征,所以 a7*x1^2 + a8*x2^2 + .. + a12*x6^2 将产生另外 6 个 theta。 现在,像 x1*x2 等组合将使 6C2 thetas 即 15。 此外,最后,原点移动 theta a0, 因此总计:1 + 12 + 15 = 28 个θ

    【讨论】:

    • 啊,是的,我忘记了这些。好的,数组中哪个是哪个?它们是如何排序的?例如,如果模型是y = a0 + a1 x1 + a2 x2 + a11 x1^2 + a22 x2^2 + a12 x1 x2,那么a0, a1, a2, a11, a22, a12 的显示顺序是什么?
    • @JohnDoe Idk,但为什么顺序很重要?您将始终需要所有这些 theta。
    • 因为我想用系数的实际值写出函数,这样我就可以绘制一些图表。但是,我现在认为它可能在不知道系数值的情况下完成 - 而是使用 .predict() 方法。
    【解决方案2】:

    您忘记了Polynomial regression 在变量之间也使用叉积,而不仅仅是变量的平方。当您对多项式使用fit 时,您不仅使用grade 1 和grade 2 变量,还使用叉积:

    在两个变量回归 (X1, X2) 的情况下,您将期望有 5 个系数:

    Y = m1 * x1 + m2 * x2 + m3 * x1 ** 2 + m4 * x2 ** x2 + m5 * x1 * x2
    

    此外,在您的 6 个变量的情况下,变量之间有 16 种可能的组合。考虑到您有6 1 级变量、6 2 级变量和它们之间的15 组合,加上基本参数:6 + 6 + 15 + 1 = 28。

    【讨论】:

    • 啊,是的,我忘记了这些。好的,数组中哪个是哪个?它们是如何排序的?例如,如果模型是y = a0 + a1 x1 + a2 x2 + a11 x1^2 + a22 x2^2 + a12 x1 x2,那么a0, a1, a2, a11, a22, a12 的显示顺序是什么?
    猜你喜欢
    • 2018-10-06
    • 2020-05-28
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    相关资源
    最近更新 更多