在对我的一组功能进行多项式变换时,我正在阅读sklearn.preprocessing PolynomialFeatures变压器,但是我意识到即使使用interaction_only=True参数,该变换也包括所有可能的组合。我想知道是否有一种方法可以指定仅需要某些交互(组合)。例如,

给定以下数据框:

    a   b   c  Z   X   W
0   1   2   3  0   1   0
1   1   2   3  1   0   1
2   1   2   3  0   0   1


假设a,b,c属于一种要素,而Z W X属于另一种要素,我们只是对不同类型的要素之间的交互感兴趣。

因此,所需的输出将仅包含原始特征以及不同类型特征之间的交互。当然,通过设置interact_only = True,您将获得“真实的交互”,并避免使用诸如a ^ 2,Z ^ 2等功能。

         a   b   c   Z  X   W  a*Z  a*X   a*W   b*Z  b*X  b*W  c*Z  c*X  c*W
 0       0   1   2   3  0   1   0    0     1     0    0    2    0    0    3
 3       1   1   2   3  1   0   1    1     0     1    2    0    2    3    0
 3       2   1   2   3  0   0   1    0     0     1    0    0    2    0    0


我只想执行列a,b,c和Z,X,W之间的交互
并避免使用a*cZ*X之类的组合

最佳答案

似乎没有任何方法可以获取您使用scikit learning提供的转换器讨论的转换,但是您可以构建自己的转换器对其进行点缀


您可以使用自定义转换器see here删除转换后不感兴趣的交互
按照here的说明创建自定义多项式特征转换器

关于python - 多项式特征变换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56918065/

10-13 06:51