преобразование полиномиального признака - PullRequest
1 голос
/ 07 июля 2019

При выполнении некоторого полиномиального преобразования для моего набора функций я читал преобразователь 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 принадлежит типу объекта, а ZWX - другому, и нас просто интересуют взаимодействиямежду объектами разных типов.

Таким образом, требуемый вывод будет содержать только оригинальные объекты и взаимодействия между объектами различных типов.Конечно, установив Interaction_only = True, вы просто получаете «реальные взаимодействия» и избегаете таких функций, как ^ 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

1 Ответ

2 голосов
/ 07 июля 2019

Похоже, нет никакого способа получить преобразование, о котором вы говорите, с помощью преобразователя, предоставляемого Scikit Learn, но вы можете создать свой собственный преобразователь, чтобы разбить его

  • Вы можете удалить интересующее вас взаимодействие после преобразования с помощью специального преобразователя см. Здесь
  • создайте свой собственный преобразователь полиномиального элемента, как объяснено здесь
...