多项式特征变换

Posted

技术标签:

【中文标题】多项式特征变换【英文标题】:polynomial feature transformation 【发布时间】:2019-11-16 23:22:19 【问题描述】:

在为我的一组特征进行多项式变换时,我正在阅读 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等组合

【问题讨论】:

【参考方案1】:

似乎没有任何方法可以使用 scikit learn 提供的转换器获得您所说的转换,但您可以构建自己的转换器来点它

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

【讨论】:

以上是关于多项式特征变换的主要内容,如果未能解决你的问题,请参考以下文章

如何求解一个矩阵的特征向量?

如何用 Python 和 sklearn 编写多元对数回归?

快速傅立叶变换(FFT)相关内容汇总

机器学习笔记非线性变换

数字图像处理基本运算

我们如何使用带有多项朴素贝叶斯的 TFIDF 向量?