featuretools.primitives.make_trans_primitive

featuretools.primitives.make_trans_primitive(function, input_types, return_type, name=None, description=None, cls_attributes=None, uses_calc_time=False, commutative=False, number_output_features=1)[source]

Returns a new transform primitive class

Parameters
  • function (function) – Function that takes in a series and applies some transformation to it.

  • input_types (list[ColumnSchema]) – ColumnSchema of the inputs.

  • return_type (ColumnSchema) – ColumnSchema of returned feature.

  • name (str) – Name of the primitive. If no name is provided, the name of function will be used.

  • description (str) – Description of primitive.

  • cls_attributes (dict[str -> anytype]) – Custom attributes to be added to class. Key is attribute name, value is the attribute value.

  • uses_calc_time (bool) – If True, the cutoff time the feature is being calculated at will be passed to the function as the keyword argument ‘time’.

  • commutative (bool) – If True, will only make one feature per unique set of base features.

  • number_output_features (int) – The number of output features (columns in the matrix) associated with this feature.

Example

In [1]: from featuretools.primitives import make_trans_primitive

In [2]: from woodwork.column_schema import ColumnSchema

In [3]: from woodwork.logical_types import Boolean

In [4]: def pd_is_in(array, list_of_outputs=None):
   ...:     if list_of_outputs is None:
   ...:         list_of_outputs = []
   ...:     return pd.Series(array).isin(list_of_outputs)
   ...: 

In [5]: def isin_generate_name(self):
   ...:     return u"%s.isin(%s)" % (self.base_features[0].get_name(),
   ...:                              str(self.kwargs['list_of_outputs']))
   ...: 

In [6]: IsIn = make_trans_primitive(
   ...:     function=pd_is_in,
   ...:     input_types=[ColumnSchema()],
   ...:     return_type=ColumnSchema(logical_type=Boolean),
   ...:     name="is_in",
   ...:     description="For each value of the base feature, checks "
   ...:     "whether it is in a list that provided.",
   ...:     cls_attributes={"generate_name": isin_generate_name})
   ...: