code: def main():
      p = Pipeline(
          [
              ("step1", MultiplyByN()),
              ("step2", MultiplyByN()),
              Pipeline([Identity(), Identity(), PCA(n_components=4)]),
          ]
      )
  
      p.set_hyperparams_space(
          {
              "step1__multiply_by": RandInt(42, 50),
              "step2__multiply_by": RandInt(-10, 0),
              "Pipeline__PCA__n_components": RandInt(2, 3),
          }
      )
  
      samples = p.get_hyperparams_space().rvs()
      p.set_hyperparams(samples)
  
      samples = p.get_hyperparams()
      assert 42 <= samples["step1__multiply_by"] <= 50
      assert -10 <= samples["step2__multiply_by"] <= 0
      assert samples["Pipeline__PCA__n_components"] in [2, 3]
      assert p["Pipeline"][
          "PCA"
      ].get_wrapped_sklearn_predictor().n_components in [2, 3]
  
imports: from sklearn.decomposition import PCA
  from neuraxle.base import Identity
  from neuraxle.hyperparams.distributions import RandInt
  from neuraxle.hyperparams.space import HyperparameterSpace
  from neuraxle.pipeline import Pipeline
  from neuraxle.steps.numpy import MultiplyByN
label_desc: Use image node_id 1 for calling a global function with example usage: main() without return types