python - 多项式特征变换

标签 python scikit-learn feature-selection

在对我的一组特征进行一些多项式转换时,我正在阅读 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,您只会获得“真正的交互”,并避免使用 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

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

相关文章:

python-3.x - kmeans群集中节点与质心之间的距离?

r - 使用卡方检验在文档特征矩阵中进行特征选择

python - 从 gridsearchCV 内的 RFECV 检索选定的特征

python - 将 Combobox 的选定值绑定(bind)到子程序

python - 通过 curl 在 ubuntu 中安装 Google Cloud SDK 时出错

python - List.remove(x) : x not in list, 使用迭代

python - 计算最多具有m个偶数元素的不同子数组的数量

python - sklearn CalibratedClassifierCV 和 SVM 出错

python - 如何手动创建 scikit-learn 树?

r - 使用插入符包 (varImp) 计算分类变量的变量重要性时出错