Пример #1
0
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())
Пример #2
0
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)
Пример #3
0
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()
    )
Пример #5
0
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()