def test_list_of_funcs(): def f(x): return {"f": 1} def g(x): return {"g": 2} def times_2(x): return {k: v * 2 for k, v in x.items()} expected = {"f": 2, "g": 4} assert compose.Pipeline([f, g], times_2).transform_one(None) == expected assert ([f, g] | compose.FuncTransformer(times_2)).transform_one(None) == expected
def test_pipeline_funcs(): def a(x): pass def b(x): pass pipelines = [ compose.FuncTransformer(a) | b, compose.FuncTransformer(a) | ('b', b), compose.FuncTransformer(a) | ('b', compose.FuncTransformer(b)), a | compose.FuncTransformer(b), ('a', a) | compose.FuncTransformer(b), ('a', compose.FuncTransformer(a)) | compose.FuncTransformer(b) ] for pipeline in pipelines: assert str(pipeline) == 'a | b'
def test_pipeline_funcs(): def a(x): pass def b(x): pass pipelines = [ compose.FuncTransformer(a) | b, compose.FuncTransformer(a) | ("b", b), compose.FuncTransformer(a) | ("b", compose.FuncTransformer(b)), a | compose.FuncTransformer(b), ("a", a) | compose.FuncTransformer(b), ("a", compose.FuncTransformer(a)) | compose.FuncTransformer(b), ] for pipeline in pipelines: assert str(pipeline) == "a | b"
def test_union_funcs(): def a(x): pass def b(x): pass pipelines = [ compose.FuncTransformer(a) + b, compose.FuncTransformer(a) + ('b', b), compose.FuncTransformer(a) + ('b', compose.FuncTransformer(b)), a + compose.FuncTransformer(b), ('a', a) + compose.FuncTransformer(b), ('a', compose.FuncTransformer(a)) + compose.FuncTransformer(b) ] for i, pipeline in enumerate(pipelines): print(i, str(pipeline)) assert str(pipeline) == 'a + b'
task=datasets.base.REG, n_features=1, n_samples=1440) def __iter__(self): return stream.iter_csv(self.path, target='interval_qps', converters={'interval_qps': int}) def get_ordinal_date(x): return {'ordinal_date': int(x['secs_elapsed'])} model = compose.Pipeline( ('ordinal_date', compose.FuncTransformer(get_ordinal_date)), ('scale', preprocessing.MinMaxScaler()), ('lin_reg', linear_model.LinearRegression())) from river import metrics import matplotlib.pyplot as plt # target_data = "../log_traces/Mixgraph/1000_0.0000073_45000/report.csv" target_data = "../log_traces/StorageMaterial.NVMeSSD/12CPU/64MB/report.csv_1180" import os target_data = os.path.abspath(target_data) def evaluate_model(model): metric = metrics.Rolling(metrics.MAE(), 12)
def get_ordinal_data(x): return {'ordinal_data': x['month'].toordinal()} def get_month(x): return { calendar.month_name[month]: month == x['month'].month for month in range(1, 13) } # To monthly trend by one-hot encoding the month name model = compose.Pipeline( ('features', compose.TransformerUnion( ('ordinal_date', compose.FuncTransformer(get_ordinal_data)), ('month', compose.FuncTransformer(get_month)), )), ('scale', preprocessing.StandardScaler), ('lin_reg', linear_model.LinearRegression(intercept_lr=0, optimizer=optim.SGD(0.05)))) model = time_series.Detrender(regressor=model, window_size=12) dates = [] dates_pred = [] y_trues = [] y_preds = [] images = []