如何使用 scikit-learn 仅删除多项式回归中的交互项?

Posted

技术标签:

【中文标题】如何使用 scikit-learn 仅删除多项式回归中的交互项?【英文标题】:How can you remove only the interaction terms in a polynomial regression using scikit-learn? 【发布时间】:2016-12-08 16:31:12 【问题描述】:

我正在使用 scikit-learn 运行 polynomial regression。我有大量变量(准确地说是 23 个),我试图使用 2 次多项式回归对其进行回归。

interaction_only = True,只保留X1*Y1、X2*Y2 等等。

我只想要其他术语,即 X1、X12、Y1、Y 12,以此类推。

有没有函数可以得到这个?

【问题讨论】:

奇怪的是 sklearn 仍然没有这个。很多时候我们想在没有交互的情况下尝试多项式特征。 【参考方案1】:

没有这样的功能,因为用numpy本身可以很容易地表达变换。

X = ... 
new_X = np.hstack((X, X**2))

类似地,如果您想将所有内容添加到学位k

new_X = np.hstack((X**(i+1) for i in range(k)))

【讨论】:

我正在使用以下内容。 poly = PolynomialFeatures(degree=2) X_new = poly.fit_trnasform(X) 由于 X 是 100 个大小为 23 的奇数列表的列表,因此 X_new 将是一个矩阵,每一行对应于导致 2 级的所有组合。因此,根据您的回答,我需要手动创建这个矩阵遍历 X 并使用 np.hstack 和 np.vstack 我的推论是否正确? 我会给你一个更好的:np.power(x, np.arange(k))【参考方案2】:

我知道这个帖子太老了。但是对于像我这样刚入门的人来说,可以使用 petsy。查看此处讨论的答案-> how to the remove interaction-only columns from sklearn.preprocessing.PolynomialFeatures

【讨论】:

请考虑下次发表评论,而不是正确答案:)

以上是关于如何使用 scikit-learn 仅删除多项式回归中的交互项?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 scikit-learn 将多项式曲线拟合到数据中?

如何在 scikit-learn 中实现多项式逻辑回归?

在 scikit-learn 中使用具有多项式内核的支持向量分类器

使用 Scikit-Learn 在 Python 中绘制多项式回归

线性回归 scikit-learn LinearRegression最小二乘法梯度下降SDG多项式回归学习曲线岭回归Lasso回归

机器学习系列6 使用Scikit-learn构建回归模型:简单线性回归多项式回归与多元线性回归