在对我的一组功能进行多项式变换时,我正在阅读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*c
或Z*X
之类的组合 最佳答案
似乎没有任何方法可以获取您使用scikit learning提供的转换器讨论的转换,但是您可以构建自己的转换器对其进行点缀
您可以使用自定义转换器see here删除转换后不感兴趣的交互
按照here的说明创建自定义多项式特征转换器
关于python - 多项式特征变换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56918065/