def _get_model_training_output( self, graph: Graph, ) -> Optional[np.ndarray]: """Returns training output tuple.""" if self.is_multilabel_prediction_task(): return graph.get_one_hot_encoded_node_types() if self.is_binary_prediction_task(): return graph.get_boolean_node_type_ids() return graph.get_single_label_node_type_ids()
def _evaluate( self, graph: Graph, train: Graph, test: Graph, support: Optional[Graph] = None, node_features: Optional[Union[pd.DataFrame, np.ndarray, List[Union[str, pd.DataFrame, np.ndarray]]]] = None, node_type_features: Optional[Union[pd.DataFrame, np.ndarray, List[Union[str, pd.DataFrame, np.ndarray]]]] = None, edge_features: Optional[Union[pd.DataFrame, np.ndarray, List[Union[str, pd.DataFrame, np.ndarray]]]] = None, subgraph_of_interest: Optional[Graph] = None, random_state: int = 42, verbose: bool = True, ) -> List[Dict[str, Any]]: """Return model evaluation on the provided graphs.""" train_size = train.get_number_of_known_node_types( ) / graph.get_number_of_known_node_types() if self.is_multilabel_prediction_task(): labels = graph.get_one_hot_encoded_node_types() elif self.is_binary_prediction_task(): labels = graph.get_boolean_node_type_ids() else: labels = graph.get_single_label_node_type_ids() performance = [] for evaluation_mode, evaluation_graph in ( ("train", train), ("test", test), ): prediction_probabilities = self.predict_proba( evaluation_graph, support=support, node_features=node_features, node_type_features=node_type_features, edge_features=edge_features) if self.is_binary_prediction_task(): predictions = prediction_probabilities elif self.is_multilabel_prediction_task(): predictions = prediction_probabilities > 0.5 else: predictions = prediction_probabilities.argmax(axis=-1) mask = evaluation_graph.get_known_node_types_mask() prediction_probabilities = prediction_probabilities[mask] predictions = predictions[mask] labels_subset = labels[mask] performance.append({ "evaluation_mode": evaluation_mode, "train_size": train_size, "known_nodes_number": evaluation_graph.get_number_of_known_node_types(), **self.evaluate_predictions( labels_subset, predictions, ), **self.evaluate_prediction_probabilities( labels_subset, prediction_probabilities, ), }) return performance