在scikit-learn的PolynomialFeatures预处理程序中,include_bias有一个选项。这实际上只是在dataframe中添加了一个列。我想知道这是什么意思。当然,您可以将其设置为False。但是从理论上讲,是否有一列列以及生成的多项式特征对回归有何影响。
这是文档中的解释,但我似乎无法从中得到任何有用的信息,比如为什么应该使用它。
include_bias :布尔
如果是真(默认),则包含一个偏置列,即所有多项式幂为零的特征(即一列多项式-在线性模型中充当截距项)。
发布于 2020-02-16 22:27:09
假设您想要执行以下回归:
y ~ a + b x + c x^2其中x是一个通用示例。最优系数a,b,c是用简单的矩阵演算计算出来的。首先,让我们用X = [1 | X | X^2]表示一个N行的矩阵,其中N是样本数。第一列是1s列,第二列是值x_i列,对于所有样本i,第三列是值x_i^2列,对于所有样本i,让我们用B表示以下列向量B=[a b c]^T,如果Y是所有样本I的N个目标值的列向量,我们可以将回归写成
y ~ X B这个方程的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一起使用时,后者在默认情况下会注意添加1s列(因为在LinearRegression中,fit_intercept参数默认为True ),因此不需要在PolynomialFeatures中也添加它。因此,在PolynomialFeatures中,人们通常保留include_bias=False。
如果使用statsmodels.OLS而不是LinearRegression,情况就不一样了。
https://stackoverflow.com/questions/59725907
复制相似问题