Note
Click here to download the full example code
Flows and Runs¶
How to train/run a model and how to upload the results.
import openml
from pprint import pprint
from sklearn import ensemble, neighbors, preprocessing, pipeline, tree
Train machine learning models¶
Train a scikit-learn model on the data manually.
Warning
This example uploads data. For that reason, this example connects to the test server at test.openml.org. This prevents the main server from crowding with example datasets, tasks, runs, and so on.
openml.config.start_using_configuration_for_example()
# NOTE: We are using dataset 68 from the test server: https://test.openml.org/d/68
dataset = openml.datasets.get_dataset(68)
X, y, categorical_indicator, attribute_names = dataset.get_data(
dataset_format='array',
target=dataset.default_target_attribute
)
clf = neighbors.KNeighborsClassifier(n_neighbors=1)
clf.fit(X, y)
You can also ask for meta-data to automatically preprocess the data.
e.g. categorical features -> do feature encoding
dataset = openml.datasets.get_dataset(17)
X, y, categorical_indicator, attribute_names = dataset.get_data(
dataset_format='array',
target=dataset.default_target_attribute
)
print("Categorical features: {}".format(categorical_indicator))
enc = preprocessing.OneHotEncoder(categorical_features=categorical_indicator)
X = enc.fit_transform(X)
clf.fit(X, y)
Out:
Categorical features: [True, False, True, True, False, True, True, False, True, True, False, True, False, True, True, False, True, False, True, True]
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/preprocessing/_encoders.py:363: FutureWarning: The handling of integer data will change in version 0.22. Currently, the categories are determined based on the range [0, max(values)], while in the future they will be determined based on the unique values.
If you want the future behaviour and silence this warning, you can specify "categories='auto'".
In case you used a LabelEncoder before this OneHotEncoder to convert the categories to integers, then you can now use the OneHotEncoder directly.
warnings.warn(msg, FutureWarning)
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/preprocessing/_encoders.py:385: DeprecationWarning: The 'categorical_features' keyword is deprecated in version 0.20 and will be removed in 0.22. You can use the ColumnTransformer instead.
"use the ColumnTransformer instead.", DeprecationWarning)
Runs: Easily explore models¶
We can run (many) scikit-learn algorithms on (many) OpenML tasks.
# Get a task
task = openml.tasks.get_task(403)
# Build any classifier or pipeline
clf = tree.ExtraTreeClassifier()
# Run the flow
run = openml.runs.run_model_on_task(clf, task)
# pprint(vars(run), depth=2)
Out:
I0703 12:38:20.394696 139733218952960 functions.py:432] Going to execute flow 'sklearn.tree.tree.ExtraTreeClassifier' on task 403 for repeat 0 fold 0 sample 0.
I0703 12:38:20.425461 139733218952960 functions.py:432] Going to execute flow 'sklearn.tree.tree.ExtraTreeClassifier' on task 403 for repeat 0 fold 1 sample 0.
I0703 12:38:20.455220 139733218952960 functions.py:432] Going to execute flow 'sklearn.tree.tree.ExtraTreeClassifier' on task 403 for repeat 0 fold 2 sample 0.
I0703 12:38:20.484881 139733218952960 functions.py:432] Going to execute flow 'sklearn.tree.tree.ExtraTreeClassifier' on task 403 for repeat 0 fold 3 sample 0.
I0703 12:38:20.513942 139733218952960 functions.py:432] Going to execute flow 'sklearn.tree.tree.ExtraTreeClassifier' on task 403 for repeat 0 fold 4 sample 0.
I0703 12:38:20.543859 139733218952960 functions.py:432] Going to execute flow 'sklearn.tree.tree.ExtraTreeClassifier' on task 403 for repeat 0 fold 5 sample 0.
I0703 12:38:20.574167 139733218952960 functions.py:432] Going to execute flow 'sklearn.tree.tree.ExtraTreeClassifier' on task 403 for repeat 0 fold 6 sample 0.
I0703 12:38:20.603417 139733218952960 functions.py:432] Going to execute flow 'sklearn.tree.tree.ExtraTreeClassifier' on task 403 for repeat 0 fold 7 sample 0.
I0703 12:38:20.634449 139733218952960 functions.py:432] Going to execute flow 'sklearn.tree.tree.ExtraTreeClassifier' on task 403 for repeat 0 fold 8 sample 0.
I0703 12:38:20.664230 139733218952960 functions.py:432] Going to execute flow 'sklearn.tree.tree.ExtraTreeClassifier' on task 403 for repeat 0 fold 9 sample 0.
I0703 12:38:20.680642 139733218952960 functions.py:255] Executed Task 403 with Flow id:15742
Share the run on the OpenML server
So far the run is only available locally. By calling the publish function, the run is sent to the OpenML server:
myrun = run.publish()
# For this tutorial, our configuration publishes to the test server
# as to not pollute the main server.
print("Uploaded to http://test.openml.org/r/" + str(myrun.run_id))
Out:
Uploaded to http://test.openml.org/r/38650
We can now also inspect the flow object which was automatically created:
flow = openml.flows.get_flow(run.flow_id)
pprint(vars(flow), depth=1)
Out:
{'binary_format': None,
'binary_md5': None,
'binary_url': None,
'class_name': 'sklearn.tree.tree.ExtraTreeClassifier',
'components': OrderedDict(),
'custom_name': None,
'dependencies': 'sklearn==0.20.0\nnumpy>=1.6.1\nscipy>=0.9',
'description': 'Automatically created scikit-learn flow.',
'extension': <openml.extensions.sklearn.extension.SklearnExtension object at 0x7f161cd14470>,
'external_version': 'openml==0.8.0,sklearn==0.20.0',
'flow_id': 15742,
'language': 'English',
'model': None,
'name': 'sklearn.tree.tree.ExtraTreeClassifier',
'parameters': OrderedDict([...]),
'parameters_meta_info': OrderedDict([...]),
'tags': [...],
'upload_date': '2019-05-28T15:55:46',
'uploader': '3229',
'version': '2'}
It also works with pipelines¶
When you need to handle ‘dirty’ data, build pipelines to model then automatically.
task = openml.tasks.get_task(115)
pipe = pipeline.Pipeline(steps=[
('Imputer', preprocessing.Imputer(strategy='median')),
('OneHotEncoder', preprocessing.OneHotEncoder(sparse=False, handle_unknown='ignore')),
('Classifier', ensemble.RandomForestClassifier())
])
run = openml.runs.run_model_on_task(pipe, task, avoid_duplicate_runs=False)
myrun = run.publish()
print("Uploaded to http://test.openml.org/r/" + str(myrun.run_id))
Out:
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/utils/deprecation.py:58: DeprecationWarning: Class Imputer is deprecated; Imputer was deprecated in version 0.20 and will be removed in 0.22. Import impute.SimpleImputer from sklearn instead.
warnings.warn(msg, category=DeprecationWarning)
I0703 12:38:26.815386 139733218952960 functions.py:432] Going to execute flow 'sklearn.pipeline.Pipeline(Imputer=sklearn.preprocessing.imputation.Imputer,OneHotEncoder=sklearn.preprocessing._encoders.OneHotEncoder,Classifier=sklearn.ensemble.forest.RandomForestClassifier)' on task 115 for repeat 0 fold 0 sample 0.
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/utils/deprecation.py:58: DeprecationWarning: Class Imputer is deprecated; Imputer was deprecated in version 0.20 and will be removed in 0.22. Import impute.SimpleImputer from sklearn instead.
warnings.warn(msg, category=DeprecationWarning)
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/ensemble/forest.py:248: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.
"10 in version 0.20 to 100 in 0.22.", FutureWarning)
I0703 12:38:26.876530 139733218952960 functions.py:432] Going to execute flow 'sklearn.pipeline.Pipeline(Imputer=sklearn.preprocessing.imputation.Imputer,OneHotEncoder=sklearn.preprocessing._encoders.OneHotEncoder,Classifier=sklearn.ensemble.forest.RandomForestClassifier)' on task 115 for repeat 0 fold 1 sample 0.
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/utils/deprecation.py:58: DeprecationWarning: Class Imputer is deprecated; Imputer was deprecated in version 0.20 and will be removed in 0.22. Import impute.SimpleImputer from sklearn instead.
warnings.warn(msg, category=DeprecationWarning)
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/ensemble/forest.py:248: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.
"10 in version 0.20 to 100 in 0.22.", FutureWarning)
I0703 12:38:26.939764 139733218952960 functions.py:432] Going to execute flow 'sklearn.pipeline.Pipeline(Imputer=sklearn.preprocessing.imputation.Imputer,OneHotEncoder=sklearn.preprocessing._encoders.OneHotEncoder,Classifier=sklearn.ensemble.forest.RandomForestClassifier)' on task 115 for repeat 0 fold 2 sample 0.
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/utils/deprecation.py:58: DeprecationWarning: Class Imputer is deprecated; Imputer was deprecated in version 0.20 and will be removed in 0.22. Import impute.SimpleImputer from sklearn instead.
warnings.warn(msg, category=DeprecationWarning)
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/ensemble/forest.py:248: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.
"10 in version 0.20 to 100 in 0.22.", FutureWarning)
I0703 12:38:27.002173 139733218952960 functions.py:432] Going to execute flow 'sklearn.pipeline.Pipeline(Imputer=sklearn.preprocessing.imputation.Imputer,OneHotEncoder=sklearn.preprocessing._encoders.OneHotEncoder,Classifier=sklearn.ensemble.forest.RandomForestClassifier)' on task 115 for repeat 0 fold 3 sample 0.
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/utils/deprecation.py:58: DeprecationWarning: Class Imputer is deprecated; Imputer was deprecated in version 0.20 and will be removed in 0.22. Import impute.SimpleImputer from sklearn instead.
warnings.warn(msg, category=DeprecationWarning)
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/ensemble/forest.py:248: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.
"10 in version 0.20 to 100 in 0.22.", FutureWarning)
I0703 12:38:27.065316 139733218952960 functions.py:432] Going to execute flow 'sklearn.pipeline.Pipeline(Imputer=sklearn.preprocessing.imputation.Imputer,OneHotEncoder=sklearn.preprocessing._encoders.OneHotEncoder,Classifier=sklearn.ensemble.forest.RandomForestClassifier)' on task 115 for repeat 0 fold 4 sample 0.
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/utils/deprecation.py:58: DeprecationWarning: Class Imputer is deprecated; Imputer was deprecated in version 0.20 and will be removed in 0.22. Import impute.SimpleImputer from sklearn instead.
warnings.warn(msg, category=DeprecationWarning)
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/ensemble/forest.py:248: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.
"10 in version 0.20 to 100 in 0.22.", FutureWarning)
I0703 12:38:27.124872 139733218952960 functions.py:432] Going to execute flow 'sklearn.pipeline.Pipeline(Imputer=sklearn.preprocessing.imputation.Imputer,OneHotEncoder=sklearn.preprocessing._encoders.OneHotEncoder,Classifier=sklearn.ensemble.forest.RandomForestClassifier)' on task 115 for repeat 0 fold 5 sample 0.
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/utils/deprecation.py:58: DeprecationWarning: Class Imputer is deprecated; Imputer was deprecated in version 0.20 and will be removed in 0.22. Import impute.SimpleImputer from sklearn instead.
warnings.warn(msg, category=DeprecationWarning)
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/ensemble/forest.py:248: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.
"10 in version 0.20 to 100 in 0.22.", FutureWarning)
I0703 12:38:27.185875 139733218952960 functions.py:432] Going to execute flow 'sklearn.pipeline.Pipeline(Imputer=sklearn.preprocessing.imputation.Imputer,OneHotEncoder=sklearn.preprocessing._encoders.OneHotEncoder,Classifier=sklearn.ensemble.forest.RandomForestClassifier)' on task 115 for repeat 0 fold 6 sample 0.
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/utils/deprecation.py:58: DeprecationWarning: Class Imputer is deprecated; Imputer was deprecated in version 0.20 and will be removed in 0.22. Import impute.SimpleImputer from sklearn instead.
warnings.warn(msg, category=DeprecationWarning)
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/ensemble/forest.py:248: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.
"10 in version 0.20 to 100 in 0.22.", FutureWarning)
I0703 12:38:27.247457 139733218952960 functions.py:432] Going to execute flow 'sklearn.pipeline.Pipeline(Imputer=sklearn.preprocessing.imputation.Imputer,OneHotEncoder=sklearn.preprocessing._encoders.OneHotEncoder,Classifier=sklearn.ensemble.forest.RandomForestClassifier)' on task 115 for repeat 0 fold 7 sample 0.
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/utils/deprecation.py:58: DeprecationWarning: Class Imputer is deprecated; Imputer was deprecated in version 0.20 and will be removed in 0.22. Import impute.SimpleImputer from sklearn instead.
warnings.warn(msg, category=DeprecationWarning)
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/ensemble/forest.py:248: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.
"10 in version 0.20 to 100 in 0.22.", FutureWarning)
I0703 12:38:27.309809 139733218952960 functions.py:432] Going to execute flow 'sklearn.pipeline.Pipeline(Imputer=sklearn.preprocessing.imputation.Imputer,OneHotEncoder=sklearn.preprocessing._encoders.OneHotEncoder,Classifier=sklearn.ensemble.forest.RandomForestClassifier)' on task 115 for repeat 0 fold 8 sample 0.
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/utils/deprecation.py:58: DeprecationWarning: Class Imputer is deprecated; Imputer was deprecated in version 0.20 and will be removed in 0.22. Import impute.SimpleImputer from sklearn instead.
warnings.warn(msg, category=DeprecationWarning)
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/ensemble/forest.py:248: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.
"10 in version 0.20 to 100 in 0.22.", FutureWarning)
I0703 12:38:27.370566 139733218952960 functions.py:432] Going to execute flow 'sklearn.pipeline.Pipeline(Imputer=sklearn.preprocessing.imputation.Imputer,OneHotEncoder=sklearn.preprocessing._encoders.OneHotEncoder,Classifier=sklearn.ensemble.forest.RandomForestClassifier)' on task 115 for repeat 0 fold 9 sample 0.
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/utils/deprecation.py:58: DeprecationWarning: Class Imputer is deprecated; Imputer was deprecated in version 0.20 and will be removed in 0.22. Import impute.SimpleImputer from sklearn instead.
warnings.warn(msg, category=DeprecationWarning)
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/ensemble/forest.py:248: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.
"10 in version 0.20 to 100 in 0.22.", FutureWarning)
I0703 12:38:27.421491 139733218952960 functions.py:255] Executed Task 115 on local Flow with name sklearn.pipeline.Pipeline(Imputer=sklearn.preprocessing.imputation.Imputer,OneHotEncoder=sklearn.preprocessing._encoders.OneHotEncoder,Classifier=sklearn.ensemble.forest.RandomForestClassifier).
Uploaded to http://test.openml.org/r/38651
Running flows on tasks offline for later upload¶
For those scenarios where there is no access to internet, it is possible to run a model on a task without uploading results or flows to the server immediately.
# To perform the following line offline, it is required to have been called before
# such that the task is cached on the local openml cache directory:
task = openml.tasks.get_task(6)
# The following lines can then be executed offline:
run = openml.runs.run_model_on_task(
pipe,
task,
avoid_duplicate_runs=False,
upload_flow=False)
# The run may be stored offline, and the flow will be stored along with it:
run.to_filesystem(directory='myrun')
# They made later be loaded and uploaded
run = openml.runs.OpenMLRun.from_filesystem(directory='myrun')
run.publish()
# Publishing the run will automatically upload the related flow if
# it does not yet exist on the server.
Out:
I0703 12:38:29.884251 139733218952960 functions.py:432] Going to execute flow 'sklearn.pipeline.Pipeline(Imputer=sklearn.preprocessing.imputation.Imputer,OneHotEncoder=sklearn.preprocessing._encoders.OneHotEncoder,Classifier=sklearn.ensemble.forest.RandomForestClassifier)' on task 6 for repeat 0 fold 0 sample 0.
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/utils/deprecation.py:58: DeprecationWarning: Class Imputer is deprecated; Imputer was deprecated in version 0.20 and will be removed in 0.22. Import impute.SimpleImputer from sklearn instead.
warnings.warn(msg, category=DeprecationWarning)
/home/travis/miniconda/envs/testenv/lib/python3.7/site-packages/sklearn/ensemble/forest.py:248: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.
"10 in version 0.20 to 100 in 0.22.", FutureWarning)
I0703 12:38:29.914556 139733218952960 functions.py:255] Executed Task 6 on local Flow with name sklearn.pipeline.Pipeline(Imputer=sklearn.preprocessing.imputation.Imputer,OneHotEncoder=sklearn.preprocessing._encoders.OneHotEncoder,Classifier=sklearn.ensemble.forest.RandomForestClassifier).
Alternatively, one can also directly run flows.
# Get a task
task = openml.tasks.get_task(403)
# Build any classifier or pipeline
clf = tree.ExtraTreeClassifier()
# Obtain the scikit-learn extension interface to convert the classifier
# into a flow object.
extension = openml.extensions.get_extension_by_model(clf)
flow = extension.model_to_flow(clf)
run = openml.runs.run_flow_on_task(flow, task, avoid_duplicate_runs=False)
Out:
I0703 12:38:31.605193 139733218952960 functions.py:432] Going to execute flow 'sklearn.tree.tree.ExtraTreeClassifier' on task 403 for repeat 0 fold 0 sample 0.
I0703 12:38:31.636193 139733218952960 functions.py:432] Going to execute flow 'sklearn.tree.tree.ExtraTreeClassifier' on task 403 for repeat 0 fold 1 sample 0.
I0703 12:38:31.665655 139733218952960 functions.py:432] Going to execute flow 'sklearn.tree.tree.ExtraTreeClassifier' on task 403 for repeat 0 fold 2 sample 0.
I0703 12:38:31.694592 139733218952960 functions.py:432] Going to execute flow 'sklearn.tree.tree.ExtraTreeClassifier' on task 403 for repeat 0 fold 3 sample 0.
I0703 12:38:31.723289 139733218952960 functions.py:432] Going to execute flow 'sklearn.tree.tree.ExtraTreeClassifier' on task 403 for repeat 0 fold 4 sample 0.
I0703 12:38:31.752401 139733218952960 functions.py:432] Going to execute flow 'sklearn.tree.tree.ExtraTreeClassifier' on task 403 for repeat 0 fold 5 sample 0.
I0703 12:38:31.782585 139733218952960 functions.py:432] Going to execute flow 'sklearn.tree.tree.ExtraTreeClassifier' on task 403 for repeat 0 fold 6 sample 0.
I0703 12:38:31.812409 139733218952960 functions.py:432] Going to execute flow 'sklearn.tree.tree.ExtraTreeClassifier' on task 403 for repeat 0 fold 7 sample 0.
I0703 12:38:31.841514 139733218952960 functions.py:432] Going to execute flow 'sklearn.tree.tree.ExtraTreeClassifier' on task 403 for repeat 0 fold 8 sample 0.
I0703 12:38:31.871611 139733218952960 functions.py:432] Going to execute flow 'sklearn.tree.tree.ExtraTreeClassifier' on task 403 for repeat 0 fold 9 sample 0.
I0703 12:38:31.887261 139733218952960 functions.py:255] Executed Task 403 on local Flow with name sklearn.tree.tree.ExtraTreeClassifier.
Challenge¶
Try to build the best possible models on several OpenML tasks, compare your results with the rest of the class and learn from them. Some tasks you could try (or browse openml.org):
Walking activity: data_id:1509, task_id:9945, 150k instances.
Covertype (Satellite): data_id:150, task_id:218, 500k instances.
Higgs (Physics): data_id:23512, task_id:52950, 100k instances, missing values.
# Easy benchmarking:
for task_id in [115, ]: # Add further tasks. Disclaimer: they might take some time
task = openml.tasks.get_task(task_id)
data = openml.datasets.get_dataset(task.dataset_id)
clf = neighbors.KNeighborsClassifier(n_neighbors=5)
run = openml.runs.run_model_on_task(clf, task, avoid_duplicate_runs=False)
myrun = run.publish()
print("kNN on %s: http://test.openml.org/r/%d" % (data.name, myrun.run_id))
Out:
I0703 12:38:31.911137 139733218952960 functions.py:432] Going to execute flow 'sklearn.neighbors.classification.KNeighborsClassifier' on task 115 for repeat 0 fold 0 sample 0.
I0703 12:38:31.925047 139733218952960 functions.py:432] Going to execute flow 'sklearn.neighbors.classification.KNeighborsClassifier' on task 115 for repeat 0 fold 1 sample 0.
I0703 12:38:31.938726 139733218952960 functions.py:432] Going to execute flow 'sklearn.neighbors.classification.KNeighborsClassifier' on task 115 for repeat 0 fold 2 sample 0.
I0703 12:38:31.952651 139733218952960 functions.py:432] Going to execute flow 'sklearn.neighbors.classification.KNeighborsClassifier' on task 115 for repeat 0 fold 3 sample 0.
I0703 12:38:31.966342 139733218952960 functions.py:432] Going to execute flow 'sklearn.neighbors.classification.KNeighborsClassifier' on task 115 for repeat 0 fold 4 sample 0.
I0703 12:38:31.979829 139733218952960 functions.py:432] Going to execute flow 'sklearn.neighbors.classification.KNeighborsClassifier' on task 115 for repeat 0 fold 5 sample 0.
I0703 12:38:31.993497 139733218952960 functions.py:432] Going to execute flow 'sklearn.neighbors.classification.KNeighborsClassifier' on task 115 for repeat 0 fold 6 sample 0.
I0703 12:38:32.007152 139733218952960 functions.py:432] Going to execute flow 'sklearn.neighbors.classification.KNeighborsClassifier' on task 115 for repeat 0 fold 7 sample 0.
I0703 12:38:32.020673 139733218952960 functions.py:432] Going to execute flow 'sklearn.neighbors.classification.KNeighborsClassifier' on task 115 for repeat 0 fold 8 sample 0.
I0703 12:38:32.034216 139733218952960 functions.py:432] Going to execute flow 'sklearn.neighbors.classification.KNeighborsClassifier' on task 115 for repeat 0 fold 9 sample 0.
I0703 12:38:32.038969 139733218952960 functions.py:255] Executed Task 115 on local Flow with name sklearn.neighbors.classification.KNeighborsClassifier.
kNN on diabetes: http://test.openml.org/r/38653
openml.config.stop_using_configuration_for_example()
Total running time of the script: ( 0 minutes 19.249 seconds)