FEDOT

Форк
0
/
define_metric_by_task.py 
34 строки · 1.4 Кб
1
from typing import List
2

3
from fedot.core.data.data import InputData, OutputData
4
from fedot.core.repository.metrics_repository import (
5
    MetricsEnum,
6
    RegressionMetricsEnum,
7
    ClassificationMetricsEnum,
8
    ClusteringMetricsEnum,
9
    MetricsRepository, TimeSeriesForecastingMetricsEnum
10
)
11
from fedot.core.repository.tasks import TaskTypesEnum
12

13

14
class MetricByTask:
15
    __metric_by_task = {TaskTypesEnum.regression: RegressionMetricsEnum.RMSE,
16
                        TaskTypesEnum.classification: ClassificationMetricsEnum.ROCAUC_penalty,
17
                        TaskTypesEnum.clustering: ClusteringMetricsEnum.silhouette,
18
                        TaskTypesEnum.ts_forecasting: TimeSeriesForecastingMetricsEnum.RMSE,
19
                        }
20

21
    @staticmethod
22
    def get_default_quality_metrics(task_type: TaskTypesEnum) -> List[MetricsEnum]:
23
        return [MetricByTask.__metric_by_task.get(task_type)]
24

25
    @staticmethod
26
    def compute_default_metric(task_type: TaskTypesEnum, true: InputData, predicted: OutputData,
27
                               round_up_to: int = 6) -> float:
28
        """Returns the value of metric defined by task"""
29
        metric_id = MetricByTask.get_default_quality_metrics(task_type)[0]
30
        metric = MetricsRepository.get_metric_class(metric_id)
31
        try:
32
            return round(metric.metric(reference=true, predicted=predicted), round_up_to)
33
        except ValueError:
34
            return metric.default_value
35

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.