TransformerProduct¶
Computes interactions between the outputs of a set transformers.
This is for when you want to add interaction terms between groups of features. It may also be used an alternative to feature_extraction.PolynomialExtender
when the latter is overkill.
Parameters¶
-
transformers
Ideally, a list of (name, estimator) tuples. A name is automatically inferred if none is provided.
Examples¶
Let's say we have a certain set of features with two groups. In practice these may be different namespaces, such one for items and the other for users.
x = dict(
a=0, b=1, # group 1
x=2, y=3 # group 2
)
We might want to add interaction terms between groups ('a', 'b')
and ('x', 'y')
, as so:
from pprint import pprint
from river.compose import Select, TransformerProduct
product = TransformerProduct(
Select('a', 'b'),
Select('x', 'y')
)
pprint(product.transform_one(x))
{'a*x': 0, 'a*y': 0, 'b*x': 2, 'b*y': 3}
This can also be done with the following shorthand:
product = Select('a', 'b') * Select('x', 'y')
pprint(product.transform_one(x))
{'a*x': 0, 'a*y': 0, 'b*x': 2, 'b*y': 3}
If you want to include the original terms, you can do something like this:
group_1 = Select('a', 'b')
group_2 = Select('x', 'y')
product = group_1 + group_2 + group_1 * group_2
pprint(product.transform_one(x))
{'a': 0, 'a*x': 0, 'a*y': 0, 'b': 1, 'b*x': 2, 'b*y': 3, 'x': 2, 'y': 3}
Methods¶
learn_many
Update each transformer.
Parameters
- X — 'pd.DataFrame'
- y — 'pd.Series | None' — defaults to
None
learn_one
Update each transformer.
Parameters
- x — 'dict'
- y — defaults to
None
transform_many
Passes the data through each transformer and packs the results together.
Parameters
- X — 'pd.DataFrame'
transform_one
Passes the data through each transformer and packs the results together.
Parameters
- x — 'dict'