多项式特征变换

polynomial feature transformation

在为我的特征集做一些多项式变换时,我正在阅读 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 属于另一种特征,我们只对不同类型的特征之间的交互感兴趣。

因此,所需的输出将只包含原始特征和不同类型特征之间的相互作用。当然,通过设置 interaction_only=True,您只需获得 "real interactions" 并避免使用 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 learn 提供的转换器获得您所说的转换,但您可以构建自己的转换器来点它

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