# 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 (pandas.core.frame.DataFrame)
• y (pandas.core.series.Series) – 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)