def test_serialization(es): value = ft.IdentityFeature(es['products']['rating']) direct = ft.DirectFeature(value, es['log']) log_to_products = next(r for r in es.get_forward_relationships('log') if r.parent_entity.id == 'products') dictionary = { 'name': None, 'base_feature': value.unique_name(), 'relationship': log_to_products.to_dictionary(), } assert dictionary == direct.get_arguments() assert direct == \ ft.DirectFeature.from_dictionary(dictionary, es, {value.unique_name(): value}, PrimitivesDeserializer())
def test_serialization(es): primitives_deserializer = PrimitivesDeserializer() value = ft.IdentityFeature(es['log'].ww['value']) primitive = ft.primitives.Max() max1 = ft.AggregationFeature(value, 'customers', primitive) path = next(es.find_backward_paths('customers', 'log')) dictionary = { 'name': None, 'base_features': [value.unique_name()], 'relationship_path': [r.to_dictionary() for r in path], 'primitive': serialize_primitive(primitive), 'where': None, 'use_previous': None, } assert dictionary == max1.get_arguments() deserialized = ft.AggregationFeature.from_dictionary( dictionary, es, {value.unique_name(): value}, primitives_deserializer) _assert_agg_feats_equal(max1, deserialized) is_purchased = ft.IdentityFeature(es['log'].ww['purchased']) use_previous = ft.Timedelta(3, 'd') max2 = ft.AggregationFeature(value, 'customers', primitive, where=is_purchased, use_previous=use_previous) dictionary = { 'name': None, 'base_features': [value.unique_name()], 'relationship_path': [r.to_dictionary() for r in path], 'primitive': serialize_primitive(primitive), 'where': is_purchased.unique_name(), 'use_previous': use_previous.get_arguments(), } assert dictionary == max2.get_arguments() dependencies = { value.unique_name(): value, is_purchased.unique_name(): is_purchased } deserialized = ft.AggregationFeature.from_dictionary( dictionary, es, dependencies, primitives_deserializer) _assert_agg_feats_equal(max2, deserialized)
def test_serialization(es): primitives_deserializer = PrimitivesDeserializer() value = ft.IdentityFeature(es['log']['value']) primitive = ft.primitives.Max() max1 = ft.AggregationFeature(value, es['sessions'], primitive) dictionary = { 'base_features': [value.unique_name()], 'parent_entity_id': 'sessions', 'primitive': serialize_primitive(primitive), 'where': None, 'use_previous': None, } assert dictionary == max1.get_arguments() assert max1 == \ ft.AggregationFeature.from_dictionary(dictionary, es, {value.unique_name(): value}, primitives_deserializer) is_purchased = ft.IdentityFeature(es['log']['purchased']) use_previous = ft.Timedelta(3, 'd') max2 = ft.AggregationFeature(value, es['sessions'], primitive, where=is_purchased, use_previous=use_previous) dictionary = { 'base_features': [value.unique_name()], 'parent_entity_id': 'sessions', 'primitive': serialize_primitive(primitive), 'where': is_purchased.unique_name(), 'use_previous': use_previous.get_arguments(), } assert dictionary == max2.get_arguments() dependencies = { value.unique_name(): value, is_purchased.unique_name(): is_purchased } assert max2 == \ ft.AggregationFeature.from_dictionary(dictionary, es, dependencies, primitives_deserializer)
def test_serialization(pd_es): value = ft.IdentityFeature(pd_es["log"].ww["value"]) zipcode = ft.IdentityFeature(pd_es["log"].ww["zipcode"]) primitive = CumSum() groupby = ft.feature_base.GroupByTransformFeature(value, primitive, zipcode) dictionary = { "name": None, "base_features": [value.unique_name()], "primitive": serialize_primitive(primitive), "groupby": zipcode.unique_name(), } assert dictionary == groupby.get_arguments() dependencies = { value.unique_name(): value, zipcode.unique_name(): zipcode, } assert groupby == ft.feature_base.GroupByTransformFeature.from_dictionary( dictionary, pd_es, dependencies, PrimitivesDeserializer() )
def test_serialization(es): value = ft.IdentityFeature(es['log']['value']) zipcode = ft.IdentityFeature(es['log']['zipcode']) primitive = CumSum() groupby = ft.feature_base.GroupByTransformFeature(value, primitive, zipcode) dictionary = { 'base_features': [value.unique_name()], 'primitive': serialize_primitive(primitive), 'groupby': zipcode.unique_name(), } assert dictionary == groupby.get_arguments() dependencies = { value.unique_name(): value, zipcode.unique_name(): zipcode, } assert groupby == \ ft.feature_base.GroupByTransformFeature.from_dictionary(dictionary, es, dependencies, PrimitivesDeserializer())
def __init__(self, features_dict): self.features_dict = features_dict self._check_schema_version() self.entityset = deserialize_es(features_dict["entityset"]) self._deserialized_features = {} # name -> feature self._primitives_deserializer = PrimitivesDeserializer()