def test_time_since_last_custom(es): def time_since_last(values, time=None): time_since = time - values.iloc[0] return time_since.total_seconds() TimeSinceLast = make_agg_primitive(time_since_last, [DatetimeTimeIndex], Numeric, name="time_since_last", uses_calc_time=True) f = TimeSinceLast(es["log"]["datetime"], es["customers"]) fm = ft.calculate_feature_matrix([f], entityset=es, instance_ids=[0, 1, 2], cutoff_time=datetime(2015, 6, 8)) correct = [131376600, 131289600, 131287800] # note: must round to nearest second assert all(fm[f.get_name()].round().values == correct) error_text = "'time' is a restricted keyword. Please use a different keyword." with pytest.raises(ValueError, match=error_text): TimeSinceLast = make_agg_primitive(time_since_last, [DatetimeTimeIndex], Numeric, uses_calc_time=False)
def test_custom_primitive_time_as_arg(es): def time_since_last(values, time): time_since = time - values.iloc[0] return time_since.total_seconds() TimeSinceLast = make_agg_primitive(time_since_last, [DatetimeTimeIndex], Numeric, uses_calc_time=True) assert TimeSinceLast.name == "time_since_last" f = TimeSinceLast(es["log"]["datetime"], es["customers"]) fm = ft.calculate_feature_matrix([f], entityset=es, instance_ids=[0, 1, 2], cutoff_time=datetime(2015, 6, 8)) correct = [131376600, 131289600, 131287800] # note: must round to nearest second assert all(fm[f.get_name()].round().values == correct) error_text = "'time' is a restricted keyword. Please use a different keyword." with pytest.raises(ValueError, match=error_text): make_agg_primitive(time_since_last, [DatetimeTimeIndex], Numeric, uses_calc_time=False)
def test_time_since_last_custom(es): def time_since_last(values, time=None): time_since = time - values.iloc[0] return time_since.total_seconds() TimeSinceLast = make_agg_primitive(time_since_last, [DatetimeTimeIndex], Numeric, name="time_since_last", uses_calc_time=True) f = TimeSinceLast(es["log"]["datetime"], es["customers"]) fm = calculate_feature_matrix([f], entityset=es, instance_ids=[0, 1, 2], cutoff_time=datetime(2015, 6, 8)) correct = [131376600, 131289600, 131287800] # note: must round to nearest second assert all(fm[f.get_name()].round().values == correct) with pytest.raises(ValueError): TimeSinceLast = make_agg_primitive(time_since_last, [DatetimeTimeIndex], Numeric, uses_calc_time=False)
def test_custom_primitive_time_as_arg(es): def time_since_last(values, time): time_since = time - values.iloc[0] return time_since.total_seconds() TimeSinceLast = make_agg_primitive(time_since_last, [DatetimeTimeIndex], Numeric, uses_calc_time=True) assert TimeSinceLast.name == "time_since_last" f = TimeSinceLast(es["log"]["datetime"], es["customers"]) fm = calculate_feature_matrix([f], entityset=es, instance_ids=[0, 1, 2], cutoff_time=datetime(2015, 6, 8)) correct = [131376600, 131289600, 131287800] # note: must round to nearest second assert all(fm[f.get_name()].round().values == correct) with pytest.raises(ValueError): make_agg_primitive(time_since_last, [DatetimeTimeIndex], Numeric, uses_calc_time=False)
def test_time_since_last(es): f = TimeSinceLast(es["log"]["datetime"], es["customers"]) fm = calculate_feature_matrix([f], instance_ids=[0, 1, 2], cutoff_time=datetime(2015, 6, 8)) correct = [131376600, 131289600, 131287800] # note: must round to nearest second assert all(fm[f.get_name()].round().values == correct)