使用多项式回归时如何解释从 LinearRegression().coef_ 返回的系数
How to interpret coefficients returned from `LinearRegression().coef_` when using polynomial regression
我有一组训练数据 x_train
,其中 6 features/variables 和目标 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 which was unanswered. Another similar question 未正确回答。
您忘记了 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
.
那不是编程问题,但这里有解释:
有 6 个特征,所以 a1*x1 + a2*x2 .. + a6*x6 将得到 6 个 theta。
现在它们的平方作为特征,所以 a7*x1^2 + a8*x2^2 + .. + a12*x6^2 将产生另一个 6 thetas。
现在 x1*x2 等组合将使 6C2 thetas 即 15。
另外,最后,原点移动 theta a0,
因此总计:1 + 12 + 15 = 28 thetas
我有一组训练数据 x_train
,其中 6 features/variables 和目标 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 which was unanswered. Another similar question 未正确回答。
您忘记了 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
.
那不是编程问题,但这里有解释:
有 6 个特征,所以 a1*x1 + a2*x2 .. + a6*x6 将得到 6 个 theta。 现在它们的平方作为特征,所以 a7*x1^2 + a8*x2^2 + .. + a12*x6^2 将产生另一个 6 thetas。 现在 x1*x2 等组合将使 6C2 thetas 即 15。 另外,最后,原点移动 theta a0, 因此总计:1 + 12 + 15 = 28 thetas