from d3m import index from d3m.metadata.base import ArgumentType from d3m.metadata.pipeline import Pipeline, PrimitiveStep from d3m.metadata import hyperparams # Creating pipeline pipeline_description = Pipeline() pipeline_description.add_input(name='inputs') # Step 0: dataset_to_dataframe primitive_0 = index.get_primitive('d3m.primitives.tods.data_processing.dataset_to_dataframe') step_0 = PrimitiveStep(primitive=primitive_0) step_0.add_argument(name='inputs', argument_type=ArgumentType.CONTAINER, data_reference='inputs.0') step_0.add_output('produce') pipeline_description.add_step(step_0) # # Step 1: column_parser primitive_1 = index.get_primitive('d3m.primitives.data_transformation.column_parser.Common') step_1 = PrimitiveStep(primitive=primitive_1) step_1.add_argument(name='inputs', argument_type=ArgumentType.CONTAINER, data_reference='steps.0.produce') step_1.add_output('produce') pipeline_description.add_step(step_1) # Step 2: extract_columns_by_semantic_types(attributes) step_2 = PrimitiveStep(primitive=index.get_primitive('d3m.primitives.data_transformation.extract_columns_by_semantic_types.Common')) step_2.add_argument(name='inputs', argument_type=ArgumentType.CONTAINER, data_reference='steps.1.produce') step_2.add_output('produce') step_2.add_hyperparameter(name='semantic_types', argument_type=ArgumentType.VALUE, data=['https://metadata.datadrivendiscovery.org/types/Attribute']) pipeline_description.add_step(step_2) # Step 3: extract_columns_by_semantic_types(targets) step_3 = PrimitiveStep(primitive=index.get_primitive('d3m.primitives.data_transformation.extract_columns_by_semantic_types.Common')) step_3.add_argument(name='inputs', argument_type=ArgumentType.CONTAINER, data_reference='steps.0.produce') step_3.add_output('produce') step_3.add_hyperparameter(name='semantic_types', argument_type=ArgumentType.VALUE, data=['https://metadata.datadrivendiscovery.org/types/TrueTarget']) pipeline_description.add_step(step_3) attributes = 'steps.2.produce' targets = 'steps.3.produce' # Step 4: Power transformation primitive_4 = index.get_primitive('d3m.primitives.tods.timeseries_processing.transformation.power_transformer') step_4 = PrimitiveStep(primitive=primitive_4) step_4.add_hyperparameter(name='return_result', argument_type=ArgumentType.VALUE, data='new') step_4.add_argument(name='inputs', argument_type=ArgumentType.CONTAINER, data_reference=attributes) step_4.add_output('produce') pipeline_description.add_step(step_4) # Step 5: Axiswise scaling primitive_5 = index.get_primitive('d3m.primitives.tods.timeseries_processing.transformation.axiswise_scaler') step_5 = PrimitiveStep(primitive=primitive_5) step_5.add_hyperparameter(name='return_result', argument_type=ArgumentType.VALUE, data='new') step_5.add_argument(name='inputs', argument_type=ArgumentType.CONTAINER, data_reference='steps.4.produce') step_5.add_output('produce') pipeline_description.add_step(step_5) # Step 6: Standarization primitive_6 = index.get_primitive('d3m.primitives.tods.timeseries_processing.transformation.standard_scaler') step_6 = PrimitiveStep(primitive=primitive_6) step_6.add_hyperparameter(name='return_result', argument_type=ArgumentType.VALUE, data='new') step_6.add_argument(name='inputs', argument_type=ArgumentType.CONTAINER, data_reference='steps.5.produce') step_6.add_output('produce') pipeline_description.add_step(step_6) # Step 7: Quantile transformation primitive_7 = index.get_primitive('d3m.primitives.tods.timeseries_processing.transformation.quantile_transformer') step_7 = PrimitiveStep(primitive=primitive_7) step_7.add_hyperparameter(name='return_result', argument_type=ArgumentType.VALUE, data='new') step_7.add_argument(name='inputs', argument_type=ArgumentType.CONTAINER, data_reference='steps.6.produce') step_7.add_output('produce') pipeline_description.add_step(step_7) # Step 4: Isolation Forest primitive_8 = index.get_primitive('d3m.primitives.tods.detection_algorithm.pyod_iforest') step_8 = PrimitiveStep(primitive=primitive_8) step_8.add_hyperparameter(name='contamination', argument_type=ArgumentType.VALUE, data=0.1) step_8.add_argument(name='inputs', argument_type=ArgumentType.CONTAINER, data_reference='steps.7.produce') # step_8.add_output('produce_score') step_8.add_output('produce') pipeline_description.add_step(step_8) # Step 5: Predictions step_9 = PrimitiveStep(primitive=index.get_primitive('d3m.primitives.data_transformation.construct_predictions.Common')) step_9.add_argument(name='inputs', argument_type=ArgumentType.CONTAINER, data_reference='steps.8.produce') step_9.add_argument(name='reference', argument_type=ArgumentType.CONTAINER, data_reference='steps.1.produce') step_9.add_output('produce') pipeline_description.add_step(step_9) # Final Output pipeline_description.add_output(name='output predictions', data_reference='steps.9.produce') # Output to json data = pipeline_description.to_json() with open('example_pipeline.json', 'w') as f: f.write(data) print(data) ## Output to YAML #yaml = pipeline_description.to_yaml() #with open('pipeline.yml', 'w') as f: # f.write(yaml) #print(yaml)