It is important to first note that the tasks/task.py appears to be slightly different from the version obtainable through pip install "openml==0.15.1", which would've elevated the priority while reducing the effort had the GitHub version not experienced the same bug.
The create_task() function requires an estimation_procedure_id parameter despite it having a default value in all cases, which all funnel towards the same OpenMLTask class where the handling of estimation procedure appears to break*.
It was tested without publication on the main server, as well as with publication on a local docker instance (test server does not have any procedures), where in both cases the create_task() function creates a task with Estimation Procedure equal to None and no data split (errors follow).
import openml
from openml.tasks import TaskType
openml.config.server = "..."
openml.config.apikey = "..."
did = 128 # iris
try:
my_task = openml.tasks.create_task(
task_type=TaskType.SUPERVISED_CLASSIFICATION,
dataset_id=did,
target_name="class",
evaluation_measure="predictive_accuracy",
estimation_procedure_id=1,
)
my_task.publish()
except openml.exceptions.OpenMLServerException as e:
# Error code for 'task already exists'
if e.code == 614:
# Lookup task
tasks = openml.tasks.list_tasks(data_id=did, output_format='dataframe')
tasks = tasks.query(
'task_type == "Supervised Classification" '
'and estimation_procedure == "10-fold Crossvalidation" '
'and evaluation_measures == "predictive_accuracy"'
)
display(tasks)
task_id = tasks.loc[:, "tid"].values[0]
print("Task already exists. Task ID is", task_id)
print(my_task)
print(my_task.estimation_procedure)
print(my_task.get_split_dimensions())
* Unconfirmed, however it is a good starting point.
It is important to first note that the tasks/task.py appears to be slightly different from the version obtainable through pip install "openml==0.15.1", which would've elevated the priority while reducing the effort had the GitHub version not experienced the same bug.
The create_task() function requires an estimation_procedure_id parameter despite it having a default value in all cases, which all funnel towards the same OpenMLTask class where the handling of estimation procedure appears to break*.
It was tested without publication on the main server, as well as with publication on a local docker instance (test server does not have any procedures), where in both cases the create_task() function creates a task with Estimation Procedure equal to None and no data split (errors follow).
* Unconfirmed, however it is a good starting point.