3
from fedot.core.data.data import InputData, OutputData
4
from fedot.core.repository.metrics_repository import (
7
ClassificationMetricsEnum,
9
MetricsRepository, TimeSeriesForecastingMetricsEnum
11
from fedot.core.repository.tasks import TaskTypesEnum
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,
22
def get_default_quality_metrics(task_type: TaskTypesEnum) -> List[MetricsEnum]:
23
return [MetricByTask.__metric_by_task.get(task_type)]
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)
32
return round(metric.metric(reference=true, predicted=predicted), round_up_to)
34
return metric.default_value