Create Nested Pipelines in Neuraxle

You can create pipelines within pipelines using the composition design pattern.

This demonstrates how to create pipelines within pipelines, and how to access the steps and their attributes in the nested pipelines.

For more info, see the thread here.

import numpy as np
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

from neuraxle.base import Identity
from neuraxle.pipeline import Pipeline


def main():
    np.random.seed(42)
    X = np.random.randint(5, size=(100, 5))

    # Create and fit the pipeline:
    pipeline = Pipeline([
        StandardScaler(),
        Identity(),
        Pipeline([
            Identity(),
            Identity(),  # Note: an Identity step is a step that does nothing.
            Identity(),  # We use it here for demonstration purposes.
            Pipeline([
                Identity(),
                PCA(n_components=2)
            ])
        ])
    ])
    pipeline, X_t = pipeline.fit_transform(X)

    # Get the components:
    pca_components = pipeline["Pipeline"]["Pipeline"][-1].get_wrapped_sklearn_predictor().components_
    assert pca_components.shape == (2, 5)

    # Discussion:
    # https://stackoverflow.com/questions/28822756/getting-model-attributes-from-scikit-learn-pipeline/58359509#58359509


if __name__ == "__main__":
    main()

Total running time of the script: ( 0 minutes 0.056 seconds)

Gallery generated by Sphinx-Gallery