如果您在scikit learn with linear regression中执行y = a*x1 + b*x2 + c*x3 + intercept,我假设您执行了类似的操作:
# x = array with shape (n_samples, n_features)
# y = array with shape (n_samples)
from sklearn.linear_model import LinearRegression
model = LinearRegression().fit(x, y)
如果您在scikit learn with linear regression中执行
y = a*x1 + b*x2 + c*x3 + intercept
,我假设您执行了类似的操作:自变量x1,x2,x3是特征矩阵的列,系数a,b,c包含在特征矩阵中。
如果需要交互项,请将其添加到特征矩阵中:
现在前三列包含变量,下一列包含交互x1*x2。拟合模型后,你会发现
model.coef_
包含四个系数a,b,c,d。请注意,无论x1和x2之间的相关性如何,这将始终为您提供一个具有交互作用的模型(理论上可以是0)。当然,您可以预先测量相关性,并使用它来决定要拟合哪个模型。
为了生成多项式特征,我假设您正在使用sklearn.preprocessing.PolynomialFeatures
这个方法中有一个论点只考虑相互作用。所以,你可以这样写:
现在只考虑你的交互项,更高的程度被忽略。新的功能空间变成了[x1,x2,x3,x1*x2,x1*x3,x2*x3]
你可以把你的回归模型放在上面
生成结果公式
y = a*x1 + b*x2 + c*x3 + d*x1*x + e*x2*x3 + f*x3*x1
注意:如果具有高维特征空间,则这将导致curse of dimensionality这可能导致诸如过度拟合/高方差等问题
使用patsy构造设计矩阵,如下所示:
其中
your_data
是例如具有响应列y
和输入列x1
、x2
和x3
的数据帧。然后调用估计器的
fit
方法,例如LinearRegression().fit(X,y)
。为了生成多项式特征,我假设您正在使用sklearn.preprocessing.PolynomialFeatures
这个方法中有一个论点只考虑相互作用。所以,你可以这样写:
现在只考虑你的交互条件,更高的程度被忽略。新的功能空间变成了[x1,x2,x3,x1*x2,x1*x3,x2*x3]
你可以把你的回归模型放在上面
生成结果公式
y = a*x1 + b*x2 + c*x3 + d*x1*x + e*x2*x3 + f*x3*x1
注意:如果具有高维特征空间,则这将导致curse of dimensionality这可能导致诸如过度拟合/高方差等问题
相关问题 更多 >
编程相关推荐