Source code for intelelm.utils.evaluator

#!/usr/bin/env python
# Created by "Thieu" at 06:52, 10/08/2023 ----------%
#       Email: nguyenthieu2102@gmail.com            %                                                    
#       Github: https://github.com/thieu1995        %                         
# --------------------------------------------------%

from sklearn.model_selection import cross_val_score
from sklearn.model_selection import cross_val_predict
from sklearn.model_selection import cross_validate
from sklearn.model_selection import learning_curve
from sklearn.model_selection import permutation_test_score
from sklearn.model_selection import validation_curve
from permetrics.regression import RegressionMetric
from permetrics.classification import ClassificationMetric


[docs]def get_metrics(problem, y_true, y_pred, metrics=None, testcase="test"): if problem == "regression": evaluator = RegressionMetric(y_true, y_pred) paras = [{}, ] * len(metrics) else: evaluator = ClassificationMetric(y_true, y_pred) paras = [{"average": "weighted"}, ] * len(metrics) if type(metrics) is dict: result = evaluator.get_metrics_by_dict(metrics) elif type(metrics) in (tuple, list): result = evaluator.get_metrics_by_list_names(metrics, paras) else: raise ValueError("metrics parameter should be a list or dict") final_result = {} for key, value in result.items(): if testcase is None or testcase == "": final_result[f"{key}"] = value else: final_result[f"{key}_{testcase}"] = value return final_result
[docs]def get_all_regression_metrics(): UNUSED_METRICS = ("RE", "RB", "AE", "SE", "SLE") dict_results = {} for key, value in RegressionMetric.SUPPORT.items(): if (key not in UNUSED_METRICS) and (value["type"] in ("min", "max")): dict_results[key] = value["type"] return dict_results
[docs]def get_all_classification_metrics(): dict_results = {} for key, value in ClassificationMetric.SUPPORT.items(): if value["type"] in ("min", "max"): dict_results[key] = value["type"] return dict_results