Anu*_*ian 3 regression linear-regression scikit-learn polynomials data-science
在 scikit-learn 的 PolynomialFeatures 预处理器中,有一个 include_bias 选项。这基本上只是向数据框添加一列 1。我想知道这样做有什么意义。当然,您可以将其设置为 False。但从理论上讲,有或没有一列 1 以及生成的多项式特征如何影响回归。
这是文档中的解释,但我似乎无法从中得到任何关于为什么应该使用或不使用它的有用信息。
include_bias : 布尔值
如果为 True(默认),则包括一个偏差列,其中所有多项式幂为零的特征(即一列 - 作为线性模型中的截距项)。
And*_*ldo 11
假设您要执行以下回归:
y ~ a + b x + c x^2
Run Code Online (Sandbox Code Playgroud)
哪里x是通用样本。最好的系数a,b,c是通过简单的矩阵演算计算的。首先,让我们X = [1 | X | X^2]用 N 行矩阵表示,其中 N 是样本数。第一列是一列1,第二列是一列值x_i,对于所有样本i,第三列是一列值x_i^2,对于所有样本i。让我们用 B 表示以下列向量B=[a b c]^T如果 Y 是所有样本 i 的 N 个目标值的列向量,我们可以将回归写为
y ~ X B
Run Code Online (Sandbox Code Playgroud)
i这个方程的第 -th 行是y_i ~ [1 x_i x^2] [a b c]^t = a + b x_i + c x_i^2。
训练回归的目标是找到B=[a b c]这样X B可以尽可能接近到y。
如果您不添加 的列1,则您假设的是先验的a=0,这可能不正确。
在实践中,当你写Python代码,并使用PolynomialFeatures同在一起sklearn.linear_model.LinearRegression,后者则通过增加1秒的一列的默认护理(因为LinearRegression该fit_intercept参数是True默认情况下),所以你不需要添加它,以及在做PolynomialFeatures。因此,在PolynomialFeatures一个通常保持include_bias=False。
如果使用statsmodels.OLS而不是LinearRegression
| 归档时间: |
|
| 查看次数: |
1206 次 |
| 最近记录: |