Python:创建 n 次多项式

Moh*_*hit 5 python algorithm

我有一个功能集

[x1,x2....xm]
Run Code Online (Sandbox Code Playgroud)

现在我想创建多项式特征集这意味着如果度数是二,那么我就有了特征集

[x1.... xm,x1^2,x2^2...xm^2, x1x2, x1x3....x1,xm......xm-1x1....xm-1xm]
Run Code Online (Sandbox Code Playgroud)

所以它只包含 2 阶的项.. 同样是如果阶是 3.. 那么你也会有三次项..

这该怎么做?

编辑 1:我正在做一个机器学习项目,我有接近 7 个特征......并且对这个线性特征的非线性回归给出了不错的结果......因此我认为我可以得到更多的特征将这些特征映射到更高的维度.. 所以一种方法是考虑特征向量的多项式阶数...生成 x1*x1 也很容易.. :) 但是获得其余的组合有点棘手..

如果订单是 3,组合可以给我 x1x2x3 结果吗?

Dat*_*ist 5

itertools.combinations(list, r)
Run Code Online (Sandbox Code Playgroud)

其中list是特征集,r 是所需多项式特征的阶数。然后将上面给出的子列表的元素相乘。那应该给你{x1*x2, x1*x3, ...}。您需要构建其他部分,然后合并所有部分。

[编辑] 更好:itertools.combinations_with_replacement(list, r)将很好地提供允许重复元素的排序长度-r 元组。

  • 这不应该是 itertools.combinations_with_replacement 吗?2阶特征是x1^2、x1x2、x2^2而不是(就像组合会给你)只是x1x2。 (2认同)