Source code for cleanlab.datalab.internal.task

# Copyright (C) 2017-2024  Cleanlab Inc.
# This file is part of cleanlab.
#
# cleanlab is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# cleanlab is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with cleanlab.  If not, see <https://www.gnu.org/licenses/>.
"""
This module contains the Task enum, which internally represents the tasks
supported by Datalab, so that the appropriate task-specific logic can be applied.
This class and associated naming conventions are subject to change and is not meant
to be used by users.
"""
from enum import Enum


[docs]class Task(Enum): """ Represents a task supported by Datalab. Datalab supports the following tasks: * **Classification**: for predicting discrete class labels. * **Regression**: for predicting continuous numerical values. * **Multilabel**: for predicting multiple binary labels simultaneously. Example ------- >>> task = Task.CLASSIFICATION >>> task <Task.CLASSIFICATION: 'classification'> """ CLASSIFICATION = "classification" """Classification task.""" REGRESSION = "regression" """Regression task.""" MULTILABEL = "multilabel" """Multilabel task.""" def __str__(self): """ Returns the string representation of the task. Returns: str: The string representation of the task. """ return self.value
[docs] @classmethod def from_str(cls, task_str: str) -> "Task": """ Converts a string representation of a task to a Task enum value. Parameters ---------- task_str : The string representation of the task. Returns ------- Task : The corresponding Task enum value. Raises ------ ValueError : If the provided task_str is not a valid task supported by Datalab. Examples -------- >>> Task.from_str("classification") <Task.CLASSIFICATION: 'classification'> >>> print(Task.from_str("regression")) regression """ _value_to_enum = {task.value: task for task in Task} try: return _value_to_enum[task_str] except KeyError: valid_tasks = list(_value_to_enum.keys()) raise ValueError(f"Invalid task: {task_str}. Datalab only supports {valid_tasks}.")
@property def is_classification(self): """ Checks if the task is classification. Returns ------- bool : True if the task is classification, False otherwise. Examples -------- >>> task = Task.CLASSIFICATION >>> print(task.is_classification) True """ return self == Task.CLASSIFICATION @property def is_regression(self): """ Checks if the task is regression. Returns ------- bool : True if the task is regression, False otherwise. Examples -------- >>> task = Task.CLASSIFICATION >>> print(task.is_regression) False """ return self == Task.REGRESSION @property def is_multilabel(self): """ Checks if the task is multilabel. Returns ------- bool : True if the task is multilabel, False otherwise. Examples -------- >>> task = Task.CLASSIFICATION >>> print(task.is_multilabel) False """ return self == Task.MULTILABEL