我有一个功能集
[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 结果吗?
用
itertools.combinations(list, r)
Run Code Online (Sandbox Code Playgroud)
其中list是特征集,r 是所需多项式特征的阶数。然后将上面给出的子列表的元素相乘。那应该给你{x1*x2, x1*x3, ...}。您需要构建其他部分,然后合并所有部分。
[编辑] 更好:itertools.combinations_with_replacement(list, r)将很好地提供允许重复元素的排序长度-r 元组。