def _input_from_parents(self, input_data: InputData, parent_operation: str, max_tune_time: Optional[timedelta] = None, verbose=False) -> InputData: if len(self.nodes_from) == 0: raise ValueError() if verbose: self.log.info(f'Fit all parent nodes in secondary node with model: {self.model}') parent_nodes = self._nodes_from_with_fixed_order() are_prev_nodes_affect_target = \ ['affects_target' in parent_node.model_tags for parent_node in parent_nodes] if any(are_prev_nodes_affect_target): # is the previous model is the model that changes target parent_results, target = _combine_parents_that_affects_target(parent_nodes, input_data, parent_operation) else: parent_results, target = _combine_parents_simple(parent_nodes, input_data, parent_operation, max_tune_time) secondary_input = InputData.from_predictions(outputs=parent_results, target=target) return secondary_input
def test_data_from_predictions(output_dataset): data_1 = output_dataset data_2 = output_dataset data_3 = output_dataset target = output_dataset.predict new_input_data = InputData.from_predictions( outputs=[data_1, data_2, data_3]) assert new_input_data.features.all() == np.array( [data_1.predict, data_2.predict, data_3.predict]).all()
def _input_from_parents(self, input_data: InputData, parent_operation: str) -> InputData: if len(self.nodes_from) == 0: raise ValueError('No parent nodes found') self.log.ext_debug(f'Fit all parent nodes in secondary node with operation: {self.operation}') parent_nodes = self._nodes_from_with_fixed_order() parent_results, target = _combine_parents(parent_nodes, input_data, parent_operation) secondary_input = InputData.from_predictions(outputs=parent_results) return secondary_input