def test_different_pipelines(): random_seed = 1233 X_train, y_train = load_gunpoint(return_X_y=True) steps = [ ('segment', RandomIntervalSegmenter(n_intervals='sqrt')), ('transform', FeatureUnion([ ('mean', RowwiseTransformer( FunctionTransformer(func=np.mean, validate=False))), ('std', RowwiseTransformer( FunctionTransformer(func=np.std, validate=False))), ('slope', RowwiseTransformer( FunctionTransformer(func=time_series_slope, validate=False))), ])), ] pipe = Pipeline(steps, random_state=random_seed) a = pipe.fit_transform(X_train) tran = RandomIntervalFeatureExtractor( n_intervals='sqrt', features=[np.mean, np.std, time_series_slope], random_state=random_seed) b = tran.fit_transform(X_train) np.testing.assert_array_equal(a, b) np.testing.assert_array_equal(pipe.steps[0][1].intervals_, tran.intervals_)
def test_different_implementations(): random_seed = 1233 X_train, y_train = load_gunpoint(return_X_y=True) # Compare with chained transformations. tran1 = RandomIntervalSegmenter(n_intervals='sqrt', random_state=random_seed) tran2 = RowwiseTransformer( FunctionTransformer(func=np.mean, validate=False)) A = tran2.fit_transform(tran1.fit_transform(X_train)) tran = RandomIntervalFeatureExtractor(n_intervals='sqrt', features=[np.mean], random_state=random_seed) B = tran.fit_transform(X_train) np.testing.assert_array_equal(A, B) # Compare with transformer pipeline using TSFeatureUnion. steps = [ ('segment', RandomIntervalSegmenter(n_intervals='sqrt', check_input=False)), ('transform', FeatureUnion([ ('mean', RowwiseTransformer( FunctionTransformer(func=np.mean, validate=False))), ('std', RowwiseTransformer( FunctionTransformer(func=np.std, validate=False))), ])), ] pipe = Pipeline(steps, random_state=random_seed) a = pipe.fit_transform(X_train) n_ints = a.shape[1] // 2 # Rename columns for comparing re-ordered arrays. a.columns = [ *a.columns[:n_ints] + '_mean', *a.columns[n_ints:n_ints * 2] + '_std' ] a = a.reindex(np.sort(a.columns), axis=1) tran = RandomIntervalFeatureExtractor(n_intervals='sqrt', features=[np.mean, np.std], random_state=random_seed) b = tran.fit_transform(X_train) b = b.reindex(np.sort(b.columns), axis=1) np.testing.assert_array_equal(a, b)