diff --git a/Bugs MWE Corrected.ipynb b/Bugs MWE Corrected.ipynb new file mode 100644 index 0000000000..8c83710b3b --- /dev/null +++ b/Bugs MWE Corrected.ipynb @@ -0,0 +1,680 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "c843486d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train MSE: 2856.9978041757504\n", + "Test MSE: 2861.3524999950955\n", + " Timestamp ensemble_optimization_score \\\n", + "19 2022-10-26 10:19:41.000000 NaN \n", + "0 2022-10-26 10:19:41.580675 3249.377552 \n", + "31 2022-10-26 10:19:43.000000 3249.377552 \n", + "14 2022-10-26 10:19:43.982011 3114.696954 \n", + "\n", + " ensemble_test_score single_best_optimization_score \\\n", + "19 NaN 3249.377552 \n", + "0 3056.36484 3249.377552 \n", + "31 3056.36484 3114.696954 \n", + "14 2861.35250 3114.696954 \n", + "\n", + " single_best_train_score single_best_test_score \n", + "19 2795.935634 3056.36484 \n", + "0 2795.935634 3056.36484 \n", + "31 2728.731259 2861.35250 \n", + "14 2728.731259 2861.35250 \n" + ] + } + ], + "source": [ + "import sklearn.datasets\n", + "import sklearn.metrics\n", + "\n", + "import autosklearn.regression\n", + "import matplotlib.pyplot as plt\n", + "from autosklearn.metrics import mean_squared_error\n", + "\n", + "import pandas as pd\n", + "pd.options.display.max_rows = 100\n", + "\n", + "X, y = sklearn.datasets.load_diabetes(return_X_y=True)\n", + "\n", + "X_train, X_test, y_train, y_test = sklearn.model_selection.train_test_split(\n", + " X, y, random_state=24\n", + ")\n", + "\n", + "params = {\n", + " 'allow_string_features': False,\n", + " 'dask_client': None,\n", + " 'dataset_compression': False,\n", + " 'delete_tmp_folder_after_terminate': True,\n", + " 'disable_evaluator_output': False,\n", + " 'ensemble_class': autosklearn.ensembles.ensemble_selection.EnsembleSelection,\n", + " 'ensemble_kwargs': {'ensemble_size': 1},\n", + " 'ensemble_nbest': 50,\n", + " 'ensemble_size': None,\n", + " 'exclude': None,\n", + " 'get_smac_object_callback': None,\n", + " 'get_trials_callback': None,\n", + " 'include': {\n", + " 'regressor': [\n", + " 'adaboost',\n", + " 'ard_regression',\n", + " 'decision_tree',\n", + " 'extra_trees',\n", + " 'gaussian_process',\n", + " 'gradient_boosting',\n", + " 'k_nearest_neighbors',\n", + " 'liblinear_svr',\n", + " 'libsvm_svr',\n", + " 'mlp',\n", + " 'random_forest',\n", + " 'sgd'\n", + " ],\n", + " 'feature_preprocessor': [\n", + " 'densifier',\n", + " 'extra_trees_preproc_for_regression',\n", + " 'fast_ica',\n", + " 'feature_agglomeration',\n", + " 'kernel_pca',\n", + " 'kitchen_sinks',\n", + " 'no_preprocessing',\n", + " 'nystroem_sampler',\n", + " 'pca',\n", + " 'polynomial',\n", + " 'random_trees_embedding',\n", + " 'select_percentile_regression',\n", + " 'select_rates_regression',\n", + " 'truncatedSVD'\n", + " ]\n", + " },\n", + " 'initial_configurations_via_metalearning': 25,\n", + " 'load_models': True,\n", + " 'logging_config': None,\n", + " 'max_models_on_disc': 50,\n", + " 'memory_limit': 3072,\n", + " 'metadata_directory': None,\n", + " 'metric': mean_squared_error,\n", + " 'n_jobs': -1,\n", + " 'per_run_time_limit': 20,\n", + " 'resampling_strategy': 'holdout',\n", + " 'resampling_strategy_arguments': {\n", + " 'train_size': 0.67,\n", + " 'shuffle': True,\n", + " 'folds': 5\n", + " },\n", + " 'scoring_functions': None,\n", + " 'seed': 24,\n", + " 'smac_scenario_args': None,\n", + " 'time_left_for_this_task': 60,\n", + " 'tmp_folder': None\n", + "}\n", + "\n", + "automl = autosklearn.regression.AutoSklearnRegressor(\n", + " **params\n", + ")\n", + "automl.fit(X_train, y_train, X_test, y_test)\n", + "\n", + "train_predictions = automl.predict(X_train)\n", + "print(\"Train MSE:\", sklearn.metrics.mean_squared_error(y_train, train_predictions))\n", + "test_predictions = automl.predict(X_test)\n", + "print(\"Test MSE:\", sklearn.metrics.mean_squared_error(y_test, test_predictions))\n", + "\n", + "pot = automl.performance_over_time_\n", + "\n", + "print(pot)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "78c911b9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Timestampensemble_optimization_scoreensemble_test_scoresingle_best_optimization_scoresingle_best_train_scoresingle_best_test_score
192022-10-26 10:19:41.000000NaNNaN3249.3775522795.9356343056.36484
02022-10-26 10:19:41.5806753249.3775523056.364843249.3775522795.9356343056.36484
312022-10-26 10:19:43.0000003249.3775523056.364843114.6969542728.7312592861.35250
142022-10-26 10:19:43.9820113114.6969542861.352503114.6969542728.7312592861.35250
\n", + "
" + ], + "text/plain": [ + " Timestamp ensemble_optimization_score \\\n", + "19 2022-10-26 10:19:41.000000 NaN \n", + "0 2022-10-26 10:19:41.580675 3249.377552 \n", + "31 2022-10-26 10:19:43.000000 3249.377552 \n", + "14 2022-10-26 10:19:43.982011 3114.696954 \n", + "\n", + " ensemble_test_score single_best_optimization_score \\\n", + "19 NaN 3249.377552 \n", + "0 3056.36484 3249.377552 \n", + "31 3056.36484 3114.696954 \n", + "14 2861.35250 3114.696954 \n", + "\n", + " single_best_train_score single_best_test_score \n", + "19 2795.935634 3056.36484 \n", + "0 2795.935634 3056.36484 \n", + "31 2728.731259 2861.35250 \n", + "14 2728.731259 2861.35250 " + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pot" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "6294b688", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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794dFxcX/Pz8eOeddwqt8/PPP9OiRQtcXFwICgri999/t1qulOLVV1+lTp06uLq60qdPn0Lv6cKFCzzyyCMYjUa8vLwYM2YMa9assWqrDz/80CrLK6+8UqitPvrooxtmKau2SkhIQKfTFbpt3769XNoqMzOz0L4VGBho9XO7dt9q27YtTZo0samtbtReX3zxBd27d6d69epUr16dPn36sGPHjpu22ebNm2nfvj3Ozs74+/uzcOHCQut88sknNGrUCBcXFzp37lxou1euXGHixInUqFEDd3d3hg8fzpkzZ6zWOXHiBIMGDcLNzY3atWszefJk8vLyCrVXkyZNrLJc216BgYHUq1evyCxl2V6bN2++7v6VnJxcLu21adMmq7Z64403rH52c+fOLfS7OH369BtmsaWtli5dSocOHfDy8qJatWq0bduWb7/99oZtVdBeVXHfupX2qqr71tUWL16MTqdj6NChN2yrgvbSct8q7Sw2URr6/fff1csvv6yWLl2qALVs2TLLsvz8fNWlSxfVvXt3tWPHDnXw4EE1btw41aBBA5WZmXnTbefk5KgOHTqogQMHKk9PT6tlO3bsUC+88IL64YcflK+vr/rggw9uur20tDTl4+OjHnnkERUdHa1++OEH5erqqj777DPLOlu3blUGg0G98847KjY2Vk2bNk05OjqqqKgoyzqzZ89Wnp6eavny5Wrfvn3q7rvvVo0bN1aXL1+2rDNgwAAVHBystm/frv766y/l7++vbr/9dqu28vT0tGT5/vvvlU6nU/7+/pa2GjJkiALUG2+8UWSWsmqrY8eOKUD98ccfKikpyXLLyckpl7Z66KGHLPvWd999pwDVo0cPy8/NxcVFNW7c2LJvFbSfl5eX2rVr1w3b6mbt9fDDD6tPPvlE7d27Vx04cECNHj1aeXp6qlOnThXZXkePHlVubm7queeeU7Gxserjjz9WBoNBrVmzxrLO4sWLlZOTk/r6669VTEyMGjt2rPLy8lJnzpyxrDN+/Hjl5+enNmzYoHbt2qW6dOmiunbtalmel5enWrdurfr06aP27t2rfv/9d1WzZk0VFhZmaa/58+crQN19992WLHq9XrVo0cLSXu+//77S6/WqRo0aaufOndfNUpbttWnTJgWouLg4q/3LZDKVS3vdf//9Vr+LTk5Olp/dRx99pADVunVry+9i7969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aL+4dh1b9uHrtZfRaGT//v2kpKSg1+t56aWXNGuv6+nUqZNl/yrP9oLCv4tGoxGj0UhqairHjx/HYDBw7ty5Uvld1Ov1+Pv707ZtW55//nnuvffeQv84Xq2q71vFba/rqez71pEjR0hISGDw4MGWdb755htWrFiBg4MDR44cuW672Nu+VdIstrLroqmAp6cntWrV4vDhw+zatYshQ4YUuW54eDiRkZGW28yZMy3/bdxzzz23nCE0NJQtW7aQm5trmbd+/XoCAgKoXr26ZZ0NGzZYPW/9+vWEhoYC0LhxY3x9fa3WSU9PJyIiwrJOaGgoqamp7N6927LOxo0byc/Pt5yLA+auAK6XpWHDhtSqVYvWrVtz4sQJq7a6OktZttX1REZGWr5CLHif5dFWBetefXnq1T83T09PbrvtNn799VerfevatgLb2+udd97h9ddfZ82aNVbnWxXlZm3h5ORESEiI1Tr5+fls2LDBsk5ISAiOjo5W68TFxXHixAmr9oqKirIqNNevX4/RaCQwMNCqvYrKUqtWLTp06MCSJUss7XVtlrJur+u5ev8qz/YCc1ck12svT09P6tWrR6tWrYiPj7fsW9drr1v9XczPz7ec63I9VX3fKm57XU9l37datGhBVFSU1Tp33303vXr1IjIyEj8/v+u2i73tWyXNYrNinTZeyjIyMtTevXvV3r17FaDef/99tXfvXnX8+HGllFI//fST2rRpkzpy5Ihavny5atiwoRo2bJjVNl566SX16KOPFvka17tSIDs72/K6derUUS+88ILau3evOnz4sGWdjz/+WN1xxx2Wx6mpqcrHx0c9+uijKjo6Wi1evFi5ubkV6nLAwcFBvfvuu+rAgQNq+vTp172M3svLS/36669q//79asiQIde9jL5du3YqIiJC/f3336pZs2bq3nvvtWord3d3NWjQILV+/XrLpZTPPfecpa18fX2VTqezyqLX69XgwYPLvK0WLlyovv/+e3XgwAF14MAB9eabbyq9Xq++/vrrcmmrhx56yLJvbdmyRQEqJCRE/fLLL+r//u//lJubmxo3bpxl35o9e7YCVFBQkFWWMWPGFHvfmj17tnJyclK//PKL1SXLGRkZlnWu3WcLLpedPHmyOnDggPrkk0+ue7mss7OzWrhwoYqNjVXjxo1TXl5eVleUjB8/XjVo0EBt3LhR7dq1S4WGhqrQ0FDL8oJLd/v166ciIyPVmjVrVK1atVRYWJilvVauXKkA1atXL7V06VL1+uuvK4PBoKZOnWpprxdeeMHSpldnefrpp8ulvT744AO1fPlydfjwYRUVFaWeeeYZpdfr1R9//FEu7fX8889b/S46OjqqkSNHqg0bNqhPPvlE6fV69fbbb1t+F2vWrKn0er1VFmdnZ3XvvfcWq63eeusttW7dOnXkyBEVGxur3n33XeXg4GB1hazsWyVrr6q6b13relfP2eO+VdpZbKFp0VRweee1t1GjRimllJo7d66qX7++cnR0VA0aNFDTpk2zuuRfKfMP9/bbby/yNa63gxRcEn/t7ertTJ8+XTVs2NDqefv27VO33XabcnZ2VvXq1VOzZ88u9Ho//fSTat68uXJyclKtWrVSq1atslqen5+vXnnlFeXj46OcnZ1V7969VVxcnNU658+fVw899JByd3dXRqNRPfbYY+r333+/bma9Xq/q1aunBg8eXKitvv/+e6ssvXv3Lpe2WrhwoWrZsqVyc3NTRqNRderUyeqS0rJuq4yMjCL3LTc3NzV79uxC+9awYcNUs2bNrLLcyr7VsGHD677u9OnTLetcb7ubNm1Sbdu2VU5OTqpJkyZqwYIFhV7v448/Vg0aNFBOTk6qU6dOavv27VbLL1++rJ588klVvXp15ebmpu655x6VlJRktU5CQoIaOHCgcnV1VTVr1lTPP/+8ys3NLbK93N3d1YIFCwq1V//+/ZWfn59VlvJqr7fffls1bdpUubi4KG9vb9WzZ0+1cePGcmuvP/74o8jfxSZNmqiHH3640O/iBx98YJXlzjvvLHZbvfzyy8rf31+5uLio6tWrq9DQULV48WKrdWTfKll7VdV961rXK5rscd8q7Sy20Cl11RljQgghhBDiuirEOU1CCCGEEFqTokkIIYQQwgZSNAkhhBBC2ECKJiGEEEIIG0jRJIQQQghhAymahBBCCCFsIEWTEEIIIYQNpGgSQgghhLCBFE1CCCGEEDaQokkIIYQQwgZSNAkhhBBC2ECKJiGEEEIIG/w/zXZFMJW+E+sAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(pot['Timestamp'], pot['single_best_optimization_score'], '-o', label = 'single_best_optimization_score')\n", + "plt.plot(pot['Timestamp'], pot['ensemble_optimization_score'], '-o', label = 'ensemble_optimization_score')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "93493445", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Timestampsingle_best_optimization_scoresingle_best_train_scoresingle_best_test_score
02022-10-26 10:19:433566.9742224.588637e+023095.679501
12022-10-26 10:19:415547.2374658.204380e+005956.516151
22022-10-26 10:19:413390.1334712.535136e+032908.654161
32022-10-26 10:19:423724.4286044.512352e+023630.227129
42022-10-26 10:19:423719.1309213.662203e+023675.552091
52022-10-26 10:19:413249.3775522.795936e+033056.364840
62022-10-26 10:19:433114.6969542.728731e+032861.352500
72022-10-26 10:19:543630.4168859.277512e+023809.271137
82022-10-26 10:19:463664.1528710.000000e+003114.280041
92022-10-26 10:19:445547.2374651.833271e+005956.516151
102022-10-26 10:19:445547.2374652.608709e+005956.516151
112022-10-26 10:19:455547.2374654.754888e+005956.516151
122022-10-26 10:19:465547.2374654.594299e+015956.516151
132022-10-26 10:19:473487.6708800.000000e+003153.721191
142022-10-26 10:19:473348.3402391.392979e+023099.756165
152022-10-26 10:19:485500.4013341.033820e+005934.301378
162022-10-26 10:19:493295.1080599.717938e+023215.473343
172022-10-26 10:19:484176.2756202.281517e+033096.312428
182022-10-26 10:19:493558.1502612.515105e+033048.502830
192022-10-26 10:19:504392.8071264.715052e+034583.308257
202022-10-26 10:19:493344.3863612.841341e+032983.718158
212022-10-26 10:19:493373.6991322.679678e+033102.257256
222022-10-26 10:19:504452.9120475.105778e+034702.006582
232022-10-26 10:19:513420.9926332.877613e+033058.144466
242022-10-26 10:19:515469.4221816.118937e+035870.982789
252022-10-26 10:19:513421.1779032.878096e+033058.206702
262022-10-26 10:20:023895.0686470.000000e+004686.830029
272022-10-26 10:20:025552.3685264.928092e+005961.683783
282022-10-26 10:20:025547.2335212.907255e-105956.431096
292022-10-26 10:20:074862.6975490.000000e+004820.794574
302022-10-26 10:20:113245.4720132.605390e+033005.136641
312022-10-26 10:20:173427.9522382.309623e+033291.166220
322022-10-26 10:20:153858.4500021.505326e+034107.065997
332022-10-26 10:20:195547.2374650.000000e+005956.516151
342022-10-26 10:20:205547.2374650.000000e+005956.516151
352022-10-26 10:20:245547.2374653.689857e+005956.516151
362022-10-26 10:20:243903.9118683.832075e+033612.395999
\n", + "
" + ], + "text/plain": [ + " Timestamp single_best_optimization_score \\\n", + "0 2022-10-26 10:19:43 3566.974222 \n", + "1 2022-10-26 10:19:41 5547.237465 \n", + "2 2022-10-26 10:19:41 3390.133471 \n", + "3 2022-10-26 10:19:42 3724.428604 \n", + "4 2022-10-26 10:19:42 3719.130921 \n", + "5 2022-10-26 10:19:41 3249.377552 \n", + "6 2022-10-26 10:19:43 3114.696954 \n", + "7 2022-10-26 10:19:54 3630.416885 \n", + "8 2022-10-26 10:19:46 3664.152871 \n", + "9 2022-10-26 10:19:44 5547.237465 \n", + "10 2022-10-26 10:19:44 5547.237465 \n", + "11 2022-10-26 10:19:45 5547.237465 \n", + "12 2022-10-26 10:19:46 5547.237465 \n", + "13 2022-10-26 10:19:47 3487.670880 \n", + "14 2022-10-26 10:19:47 3348.340239 \n", + "15 2022-10-26 10:19:48 5500.401334 \n", + "16 2022-10-26 10:19:49 3295.108059 \n", + "17 2022-10-26 10:19:48 4176.275620 \n", + "18 2022-10-26 10:19:49 3558.150261 \n", + "19 2022-10-26 10:19:50 4392.807126 \n", + "20 2022-10-26 10:19:49 3344.386361 \n", + "21 2022-10-26 10:19:49 3373.699132 \n", + "22 2022-10-26 10:19:50 4452.912047 \n", + "23 2022-10-26 10:19:51 3420.992633 \n", + "24 2022-10-26 10:19:51 5469.422181 \n", + "25 2022-10-26 10:19:51 3421.177903 \n", + "26 2022-10-26 10:20:02 3895.068647 \n", + "27 2022-10-26 10:20:02 5552.368526 \n", + "28 2022-10-26 10:20:02 5547.233521 \n", + "29 2022-10-26 10:20:07 4862.697549 \n", + "30 2022-10-26 10:20:11 3245.472013 \n", + "31 2022-10-26 10:20:17 3427.952238 \n", + "32 2022-10-26 10:20:15 3858.450002 \n", + "33 2022-10-26 10:20:19 5547.237465 \n", + "34 2022-10-26 10:20:20 5547.237465 \n", + "35 2022-10-26 10:20:24 5547.237465 \n", + "36 2022-10-26 10:20:24 3903.911868 \n", + "\n", + " single_best_train_score single_best_test_score \n", + "0 4.588637e+02 3095.679501 \n", + "1 8.204380e+00 5956.516151 \n", + "2 2.535136e+03 2908.654161 \n", + "3 4.512352e+02 3630.227129 \n", + "4 3.662203e+02 3675.552091 \n", + "5 2.795936e+03 3056.364840 \n", + "6 2.728731e+03 2861.352500 \n", + "7 9.277512e+02 3809.271137 \n", + "8 0.000000e+00 3114.280041 \n", + "9 1.833271e+00 5956.516151 \n", + "10 2.608709e+00 5956.516151 \n", + "11 4.754888e+00 5956.516151 \n", + "12 4.594299e+01 5956.516151 \n", + "13 0.000000e+00 3153.721191 \n", + "14 1.392979e+02 3099.756165 \n", + "15 1.033820e+00 5934.301378 \n", + "16 9.717938e+02 3215.473343 \n", + "17 2.281517e+03 3096.312428 \n", + "18 2.515105e+03 3048.502830 \n", + "19 4.715052e+03 4583.308257 \n", + "20 2.841341e+03 2983.718158 \n", + "21 2.679678e+03 3102.257256 \n", + "22 5.105778e+03 4702.006582 \n", + "23 2.877613e+03 3058.144466 \n", + "24 6.118937e+03 5870.982789 \n", + "25 2.878096e+03 3058.206702 \n", + "26 0.000000e+00 4686.830029 \n", + "27 4.928092e+00 5961.683783 \n", + "28 2.907255e-10 5956.431096 \n", + "29 0.000000e+00 4820.794574 \n", + "30 2.605390e+03 3005.136641 \n", + "31 2.309623e+03 3291.166220 \n", + "32 1.505326e+03 4107.065997 \n", + "33 0.000000e+00 5956.516151 \n", + "34 0.000000e+00 5956.516151 \n", + "35 3.689857e+00 5956.516151 \n", + "36 3.832075e+03 3612.395999 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "automl.automl_._get_runhistory_models_performance()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Bugs MWE.ipynb b/Bugs MWE.ipynb new file mode 100644 index 0000000000..0589e6ce78 --- /dev/null +++ b/Bugs MWE.ipynb @@ -0,0 +1,1592 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "c843486d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train MSE: 2856.9978041757504\n", + "Test MSE: 2861.3524999950955\n", + " Timestamp ensemble_optimization_score \\\n", + "0 2022-10-26 08:32:03.830196 -3390.133471 \n", + "28 2022-10-26 08:32:04.000000 -3390.133471 \n", + "29 2022-10-26 08:32:04.000000 -3390.133471 \n", + "30 2022-10-26 08:32:04.000000 -3390.133471 \n", + "32 2022-10-26 08:32:04.000000 -3390.133471 \n", + "33 2022-10-26 08:32:04.000000 -3390.133471 \n", + "34 2022-10-26 08:32:04.000000 -3390.133471 \n", + "35 2022-10-26 08:32:04.000000 -3390.133471 \n", + "36 2022-10-26 08:32:04.000000 -3390.133471 \n", + "37 2022-10-26 08:32:04.000000 -3390.133471 \n", + "38 2022-10-26 08:32:04.000000 -3390.133471 \n", + "27 2022-10-26 08:32:04.000000 -3390.133471 \n", + "39 2022-10-26 08:32:04.000000 -3390.133471 \n", + "41 2022-10-26 08:32:04.000000 -3390.133471 \n", + "42 2022-10-26 08:32:04.000000 -3390.133471 \n", + "43 2022-10-26 08:32:04.000000 -3390.133471 \n", + "44 2022-10-26 08:32:04.000000 -3390.133471 \n", + "45 2022-10-26 08:32:04.000000 -3390.133471 \n", + "46 2022-10-26 08:32:04.000000 -3390.133471 \n", + "47 2022-10-26 08:32:04.000000 -3390.133471 \n", + "48 2022-10-26 08:32:04.000000 -3390.133471 \n", + "49 2022-10-26 08:32:04.000000 -3390.133471 \n", + "50 2022-10-26 08:32:04.000000 -3390.133471 \n", + "40 2022-10-26 08:32:04.000000 -3390.133471 \n", + "26 2022-10-26 08:32:04.000000 -3390.133471 \n", + "31 2022-10-26 08:32:04.000000 -3390.133471 \n", + "24 2022-10-26 08:32:04.000000 -3390.133471 \n", + "25 2022-10-26 08:32:04.000000 -3390.133471 \n", + "1 2022-10-26 08:32:04.505665 -3249.377552 \n", + "2 2022-10-26 08:32:04.505665 -3249.377552 \n", + "3 2022-10-26 08:32:04.505665 -3249.377552 \n", + "4 2022-10-26 08:32:04.505665 -3249.377552 \n", + "23 2022-10-26 08:32:05.000000 -3249.377552 \n", + "5 2022-10-26 08:32:06.192514 -3114.696954 \n", + "6 2022-10-26 08:32:06.192514 -3114.696954 \n", + "8 2022-10-26 08:32:06.192514 -3114.696954 \n", + "9 2022-10-26 08:32:06.192514 -3114.696954 \n", + "10 2022-10-26 08:32:06.192514 -3114.696954 \n", + "11 2022-10-26 08:32:06.192514 -3114.696954 \n", + "7 2022-10-26 08:32:06.192514 -3114.696954 \n", + "13 2022-10-26 08:32:06.192514 -3114.696954 \n", + "14 2022-10-26 08:32:06.192514 -3114.696954 \n", + "15 2022-10-26 08:32:06.192514 -3114.696954 \n", + "16 2022-10-26 08:32:06.192514 -3114.696954 \n", + "17 2022-10-26 08:32:06.192514 -3114.696954 \n", + "18 2022-10-26 08:32:06.192514 -3114.696954 \n", + "19 2022-10-26 08:32:06.192514 -3114.696954 \n", + "20 2022-10-26 08:32:06.192514 -3114.696954 \n", + "21 2022-10-26 08:32:06.192514 -3114.696954 \n", + "22 2022-10-26 08:32:06.192514 -3114.696954 \n", + "12 2022-10-26 08:32:06.192514 -3114.696954 \n", + "54 2022-10-26 08:32:24.000000 -3114.696954 \n", + "53 2022-10-26 08:32:24.000000 -3114.696954 \n", + "51 2022-10-26 08:32:24.000000 -3114.696954 \n", + "52 2022-10-26 08:32:24.000000 -3114.696954 \n", + "61 2022-10-26 08:32:25.000000 -3114.696954 \n", + "55 2022-10-26 08:32:25.000000 -3114.696954 \n", + "56 2022-10-26 08:32:25.000000 -3114.696954 \n", + "57 2022-10-26 08:32:25.000000 -3114.696954 \n", + "58 2022-10-26 08:32:25.000000 -3114.696954 \n", + "59 2022-10-26 08:32:25.000000 -3114.696954 \n", + "60 2022-10-26 08:32:25.000000 -3114.696954 \n", + "62 2022-10-26 08:32:25.000000 -3114.696954 \n", + "\n", + " ensemble_test_score single_best_optimization_score \\\n", + "0 -2908.654161 NaN \n", + "28 -2908.654161 5547.237465 \n", + "29 -2908.654161 5547.237465 \n", + "30 -2908.654161 5547.237465 \n", + "32 -2908.654161 5547.237465 \n", + "33 -2908.654161 5547.237465 \n", + "34 -2908.654161 5547.237465 \n", + "35 -2908.654161 5547.237465 \n", + "36 -2908.654161 5547.237465 \n", + "37 -2908.654161 5547.237465 \n", + "38 -2908.654161 5547.237465 \n", + "27 -2908.654161 5547.237465 \n", + "39 -2908.654161 5547.237465 \n", + "41 -2908.654161 5547.237465 \n", + "42 -2908.654161 5547.237465 \n", + "43 -2908.654161 5547.237465 \n", + "44 -2908.654161 5547.237465 \n", + "45 -2908.654161 5547.237465 \n", + "46 -2908.654161 5547.237465 \n", + "47 -2908.654161 5547.237465 \n", + "48 -2908.654161 5547.237465 \n", + "49 -2908.654161 5547.237465 \n", + "50 -2908.654161 5547.237465 \n", + "40 -2908.654161 5547.237465 \n", + "26 -2908.654161 5547.237465 \n", + "31 -2908.654161 5547.237465 \n", + "24 -2908.654161 5547.237465 \n", + "25 -2908.654161 5547.237465 \n", + "1 -3056.364840 5547.237465 \n", + "2 -3056.364840 5547.237465 \n", + "3 -3056.364840 5547.237465 \n", + "4 -3056.364840 5547.237465 \n", + "23 -3056.364840 3566.974222 \n", + "5 -2861.352500 3566.974222 \n", + "6 -2861.352500 3566.974222 \n", + "8 -2861.352500 3566.974222 \n", + "9 -2861.352500 3566.974222 \n", + "10 -2861.352500 3566.974222 \n", + "11 -2861.352500 3566.974222 \n", + "7 -2861.352500 3566.974222 \n", + "13 -2861.352500 3566.974222 \n", + "14 -2861.352500 3566.974222 \n", + "15 -2861.352500 3566.974222 \n", + "16 -2861.352500 3566.974222 \n", + "17 -2861.352500 3566.974222 \n", + "18 -2861.352500 3566.974222 \n", + "19 -2861.352500 3566.974222 \n", + "20 -2861.352500 3566.974222 \n", + "21 -2861.352500 3566.974222 \n", + "22 -2861.352500 3566.974222 \n", + "12 -2861.352500 3566.974222 \n", + "54 -2861.352500 5552.368526 \n", + "53 -2861.352500 5552.368526 \n", + "51 -2861.352500 5552.368526 \n", + "52 -2861.352500 5552.368526 \n", + "61 -2861.352500 6140.768623 \n", + "55 -2861.352500 6140.768623 \n", + "56 -2861.352500 6140.768623 \n", + "57 -2861.352500 6140.768623 \n", + "58 -2861.352500 6140.768623 \n", + "59 -2861.352500 6140.768623 \n", + "60 -2861.352500 6140.768623 \n", + "62 -2861.352500 6140.768623 \n", + "\n", + " single_best_train_score single_best_test_score \n", + "0 NaN NaN \n", + "28 8.204380 5956.516151 \n", + "29 8.204380 5956.516151 \n", + "30 8.204380 5956.516151 \n", + "32 8.204380 5956.516151 \n", + "33 8.204380 5956.516151 \n", + "34 8.204380 5956.516151 \n", + "35 8.204380 5956.516151 \n", + "36 8.204380 5956.516151 \n", + "37 8.204380 5956.516151 \n", + "38 8.204380 5956.516151 \n", + "27 8.204380 5956.516151 \n", + "39 8.204380 5956.516151 \n", + "41 8.204380 5956.516151 \n", + "42 8.204380 5956.516151 \n", + "43 8.204380 5956.516151 \n", + "44 8.204380 5956.516151 \n", + "45 8.204380 5956.516151 \n", + "46 8.204380 5956.516151 \n", + "47 8.204380 5956.516151 \n", + "48 8.204380 5956.516151 \n", + "49 8.204380 5956.516151 \n", + "50 8.204380 5956.516151 \n", + "40 8.204380 5956.516151 \n", + "26 8.204380 5956.516151 \n", + "31 8.204380 5956.516151 \n", + "24 8.204380 5956.516151 \n", + "25 8.204380 5956.516151 \n", + "1 8.204380 5956.516151 \n", + "2 8.204380 5956.516151 \n", + "3 8.204380 5956.516151 \n", + "4 8.204380 5956.516151 \n", + "23 458.863654 3095.679501 \n", + "5 458.863654 3095.679501 \n", + "6 458.863654 3095.679501 \n", + "8 458.863654 3095.679501 \n", + "9 458.863654 3095.679501 \n", + "10 458.863654 3095.679501 \n", + "11 458.863654 3095.679501 \n", + "7 458.863654 3095.679501 \n", + "13 458.863654 3095.679501 \n", + "14 458.863654 3095.679501 \n", + "15 458.863654 3095.679501 \n", + "16 458.863654 3095.679501 \n", + "17 458.863654 3095.679501 \n", + "18 458.863654 3095.679501 \n", + "19 458.863654 3095.679501 \n", + "20 458.863654 3095.679501 \n", + "21 458.863654 3095.679501 \n", + "22 458.863654 3095.679501 \n", + "12 458.863654 3095.679501 \n", + "54 4.928092 5961.683783 \n", + "53 4.928092 5961.683783 \n", + "51 4.928092 5961.683783 \n", + "52 4.928092 5961.683783 \n", + "61 0.000000 5977.949471 \n", + "55 0.000000 5977.949471 \n", + "56 0.000000 5977.949471 \n", + "57 0.000000 5977.949471 \n", + "58 0.000000 5977.949471 \n", + "59 0.000000 5977.949471 \n", + "60 0.000000 5977.949471 \n", + "62 0.000000 5977.949471 \n" + ] + } + ], + "source": [ + "import sklearn.datasets\n", + "import sklearn.metrics\n", + "\n", + "import autosklearn.regression\n", + "import matplotlib.pyplot as plt\n", + "from autosklearn.metrics import mean_squared_error\n", + "\n", + "import pandas as pd\n", + "pd.options.display.max_rows = 100\n", + "\n", + "X, y = sklearn.datasets.load_diabetes(return_X_y=True)\n", + "\n", + "X_train, X_test, y_train, y_test = sklearn.model_selection.train_test_split(\n", + " X, y, random_state=24\n", + ")\n", + "\n", + "params = {\n", + " 'allow_string_features': False,\n", + " 'dask_client': None,\n", + " 'dataset_compression': False,\n", + " 'delete_tmp_folder_after_terminate': True,\n", + " 'disable_evaluator_output': False,\n", + " 'ensemble_class': autosklearn.ensembles.ensemble_selection.EnsembleSelection,\n", + " 'ensemble_kwargs': {'ensemble_size': 1},\n", + " 'ensemble_nbest': 50,\n", + " 'ensemble_size': None,\n", + " 'exclude': None,\n", + " 'get_smac_object_callback': None,\n", + " 'get_trials_callback': None,\n", + " 'include': {\n", + " 'regressor': [\n", + " 'adaboost',\n", + " 'ard_regression',\n", + " 'decision_tree',\n", + " 'extra_trees',\n", + " 'gaussian_process',\n", + " 'gradient_boosting',\n", + " 'k_nearest_neighbors',\n", + " 'liblinear_svr',\n", + " 'libsvm_svr',\n", + " 'mlp',\n", + " 'random_forest',\n", + " 'sgd'\n", + " ],\n", + " 'feature_preprocessor': [\n", + " 'densifier',\n", + " 'extra_trees_preproc_for_regression',\n", + " 'fast_ica',\n", + " 'feature_agglomeration',\n", + " 'kernel_pca',\n", + " 'kitchen_sinks',\n", + " 'no_preprocessing',\n", + " 'nystroem_sampler',\n", + " 'pca',\n", + " 'polynomial',\n", + " 'random_trees_embedding',\n", + " 'select_percentile_regression',\n", + " 'select_rates_regression',\n", + " 'truncatedSVD'\n", + " ]\n", + " },\n", + " 'initial_configurations_via_metalearning': 25,\n", + " 'load_models': True,\n", + " 'logging_config': None,\n", + " 'max_models_on_disc': 50,\n", + " 'memory_limit': 3072,\n", + " 'metadata_directory': None,\n", + " 'metric': mean_squared_error,\n", + " 'n_jobs': -1,\n", + " 'per_run_time_limit': 20,\n", + " 'resampling_strategy': 'holdout',\n", + " 'resampling_strategy_arguments': {\n", + " 'train_size': 0.67,\n", + " 'shuffle': True,\n", + " 'folds': 5\n", + " },\n", + " 'scoring_functions': None,\n", + " 'seed': 24,\n", + " 'smac_scenario_args': None,\n", + " 'time_left_for_this_task': 60,\n", + " 'tmp_folder': None\n", + "}\n", + "\n", + "automl = autosklearn.regression.AutoSklearnRegressor(\n", + " **params\n", + ")\n", + "automl.fit(X_train, y_train, X_test, y_test)\n", + "\n", + "train_predictions = automl.predict(X_train)\n", + "print(\"Train MSE:\", sklearn.metrics.mean_squared_error(y_train, train_predictions))\n", + "test_predictions = automl.predict(X_test)\n", + "print(\"Test MSE:\", sklearn.metrics.mean_squared_error(y_test, test_predictions))\n", + "\n", + "pot = automl.performance_over_time_\n", + "\n", + "print(pot)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "78c911b9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Timestampensemble_optimization_scoreensemble_test_scoresingle_best_optimization_scoresingle_best_train_scoresingle_best_test_score
02022-10-26 08:32:03.830196-3390.133471-2908.654161NaNNaNNaN
282022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
292022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
302022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
322022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
332022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
342022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
352022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
362022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
372022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
382022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
272022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
392022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
412022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
422022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
432022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
442022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
452022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
462022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
472022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
482022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
492022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
502022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
402022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
262022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
312022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
242022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
252022-10-26 08:32:04.000000-3390.133471-2908.6541615547.2374658.2043805956.516151
12022-10-26 08:32:04.505665-3249.377552-3056.3648405547.2374658.2043805956.516151
22022-10-26 08:32:04.505665-3249.377552-3056.3648405547.2374658.2043805956.516151
32022-10-26 08:32:04.505665-3249.377552-3056.3648405547.2374658.2043805956.516151
42022-10-26 08:32:04.505665-3249.377552-3056.3648405547.2374658.2043805956.516151
232022-10-26 08:32:05.000000-3249.377552-3056.3648403566.974222458.8636543095.679501
52022-10-26 08:32:06.192514-3114.696954-2861.3525003566.974222458.8636543095.679501
62022-10-26 08:32:06.192514-3114.696954-2861.3525003566.974222458.8636543095.679501
82022-10-26 08:32:06.192514-3114.696954-2861.3525003566.974222458.8636543095.679501
92022-10-26 08:32:06.192514-3114.696954-2861.3525003566.974222458.8636543095.679501
102022-10-26 08:32:06.192514-3114.696954-2861.3525003566.974222458.8636543095.679501
112022-10-26 08:32:06.192514-3114.696954-2861.3525003566.974222458.8636543095.679501
72022-10-26 08:32:06.192514-3114.696954-2861.3525003566.974222458.8636543095.679501
132022-10-26 08:32:06.192514-3114.696954-2861.3525003566.974222458.8636543095.679501
142022-10-26 08:32:06.192514-3114.696954-2861.3525003566.974222458.8636543095.679501
152022-10-26 08:32:06.192514-3114.696954-2861.3525003566.974222458.8636543095.679501
162022-10-26 08:32:06.192514-3114.696954-2861.3525003566.974222458.8636543095.679501
172022-10-26 08:32:06.192514-3114.696954-2861.3525003566.974222458.8636543095.679501
182022-10-26 08:32:06.192514-3114.696954-2861.3525003566.974222458.8636543095.679501
192022-10-26 08:32:06.192514-3114.696954-2861.3525003566.974222458.8636543095.679501
202022-10-26 08:32:06.192514-3114.696954-2861.3525003566.974222458.8636543095.679501
212022-10-26 08:32:06.192514-3114.696954-2861.3525003566.974222458.8636543095.679501
222022-10-26 08:32:06.192514-3114.696954-2861.3525003566.974222458.8636543095.679501
122022-10-26 08:32:06.192514-3114.696954-2861.3525003566.974222458.8636543095.679501
542022-10-26 08:32:24.000000-3114.696954-2861.3525005552.3685264.9280925961.683783
532022-10-26 08:32:24.000000-3114.696954-2861.3525005552.3685264.9280925961.683783
512022-10-26 08:32:24.000000-3114.696954-2861.3525005552.3685264.9280925961.683783
522022-10-26 08:32:24.000000-3114.696954-2861.3525005552.3685264.9280925961.683783
612022-10-26 08:32:25.000000-3114.696954-2861.3525006140.7686230.0000005977.949471
552022-10-26 08:32:25.000000-3114.696954-2861.3525006140.7686230.0000005977.949471
562022-10-26 08:32:25.000000-3114.696954-2861.3525006140.7686230.0000005977.949471
572022-10-26 08:32:25.000000-3114.696954-2861.3525006140.7686230.0000005977.949471
582022-10-26 08:32:25.000000-3114.696954-2861.3525006140.7686230.0000005977.949471
592022-10-26 08:32:25.000000-3114.696954-2861.3525006140.7686230.0000005977.949471
602022-10-26 08:32:25.000000-3114.696954-2861.3525006140.7686230.0000005977.949471
622022-10-26 08:32:25.000000-3114.696954-2861.3525006140.7686230.0000005977.949471
\n", + "
" + ], + "text/plain": [ + " Timestamp ensemble_optimization_score \\\n", + "0 2022-10-26 08:32:03.830196 -3390.133471 \n", + "28 2022-10-26 08:32:04.000000 -3390.133471 \n", + "29 2022-10-26 08:32:04.000000 -3390.133471 \n", + "30 2022-10-26 08:32:04.000000 -3390.133471 \n", + "32 2022-10-26 08:32:04.000000 -3390.133471 \n", + "33 2022-10-26 08:32:04.000000 -3390.133471 \n", + "34 2022-10-26 08:32:04.000000 -3390.133471 \n", + "35 2022-10-26 08:32:04.000000 -3390.133471 \n", + "36 2022-10-26 08:32:04.000000 -3390.133471 \n", + "37 2022-10-26 08:32:04.000000 -3390.133471 \n", + "38 2022-10-26 08:32:04.000000 -3390.133471 \n", + "27 2022-10-26 08:32:04.000000 -3390.133471 \n", + "39 2022-10-26 08:32:04.000000 -3390.133471 \n", + "41 2022-10-26 08:32:04.000000 -3390.133471 \n", + "42 2022-10-26 08:32:04.000000 -3390.133471 \n", + "43 2022-10-26 08:32:04.000000 -3390.133471 \n", + "44 2022-10-26 08:32:04.000000 -3390.133471 \n", + "45 2022-10-26 08:32:04.000000 -3390.133471 \n", + "46 2022-10-26 08:32:04.000000 -3390.133471 \n", + "47 2022-10-26 08:32:04.000000 -3390.133471 \n", + "48 2022-10-26 08:32:04.000000 -3390.133471 \n", + "49 2022-10-26 08:32:04.000000 -3390.133471 \n", + "50 2022-10-26 08:32:04.000000 -3390.133471 \n", + "40 2022-10-26 08:32:04.000000 -3390.133471 \n", + "26 2022-10-26 08:32:04.000000 -3390.133471 \n", + "31 2022-10-26 08:32:04.000000 -3390.133471 \n", + "24 2022-10-26 08:32:04.000000 -3390.133471 \n", + "25 2022-10-26 08:32:04.000000 -3390.133471 \n", + "1 2022-10-26 08:32:04.505665 -3249.377552 \n", + "2 2022-10-26 08:32:04.505665 -3249.377552 \n", + "3 2022-10-26 08:32:04.505665 -3249.377552 \n", + "4 2022-10-26 08:32:04.505665 -3249.377552 \n", + "23 2022-10-26 08:32:05.000000 -3249.377552 \n", + "5 2022-10-26 08:32:06.192514 -3114.696954 \n", + "6 2022-10-26 08:32:06.192514 -3114.696954 \n", + "8 2022-10-26 08:32:06.192514 -3114.696954 \n", + "9 2022-10-26 08:32:06.192514 -3114.696954 \n", + "10 2022-10-26 08:32:06.192514 -3114.696954 \n", + "11 2022-10-26 08:32:06.192514 -3114.696954 \n", + "7 2022-10-26 08:32:06.192514 -3114.696954 \n", + "13 2022-10-26 08:32:06.192514 -3114.696954 \n", + "14 2022-10-26 08:32:06.192514 -3114.696954 \n", + "15 2022-10-26 08:32:06.192514 -3114.696954 \n", + "16 2022-10-26 08:32:06.192514 -3114.696954 \n", + "17 2022-10-26 08:32:06.192514 -3114.696954 \n", + "18 2022-10-26 08:32:06.192514 -3114.696954 \n", + "19 2022-10-26 08:32:06.192514 -3114.696954 \n", + "20 2022-10-26 08:32:06.192514 -3114.696954 \n", + "21 2022-10-26 08:32:06.192514 -3114.696954 \n", + "22 2022-10-26 08:32:06.192514 -3114.696954 \n", + "12 2022-10-26 08:32:06.192514 -3114.696954 \n", + "54 2022-10-26 08:32:24.000000 -3114.696954 \n", + "53 2022-10-26 08:32:24.000000 -3114.696954 \n", + "51 2022-10-26 08:32:24.000000 -3114.696954 \n", + "52 2022-10-26 08:32:24.000000 -3114.696954 \n", + "61 2022-10-26 08:32:25.000000 -3114.696954 \n", + "55 2022-10-26 08:32:25.000000 -3114.696954 \n", + "56 2022-10-26 08:32:25.000000 -3114.696954 \n", + "57 2022-10-26 08:32:25.000000 -3114.696954 \n", + "58 2022-10-26 08:32:25.000000 -3114.696954 \n", + "59 2022-10-26 08:32:25.000000 -3114.696954 \n", + "60 2022-10-26 08:32:25.000000 -3114.696954 \n", + "62 2022-10-26 08:32:25.000000 -3114.696954 \n", + "\n", + " ensemble_test_score single_best_optimization_score \\\n", + "0 -2908.654161 NaN \n", + "28 -2908.654161 5547.237465 \n", + "29 -2908.654161 5547.237465 \n", + "30 -2908.654161 5547.237465 \n", + "32 -2908.654161 5547.237465 \n", + "33 -2908.654161 5547.237465 \n", + "34 -2908.654161 5547.237465 \n", + "35 -2908.654161 5547.237465 \n", + "36 -2908.654161 5547.237465 \n", + "37 -2908.654161 5547.237465 \n", + "38 -2908.654161 5547.237465 \n", + "27 -2908.654161 5547.237465 \n", + "39 -2908.654161 5547.237465 \n", + "41 -2908.654161 5547.237465 \n", + "42 -2908.654161 5547.237465 \n", + "43 -2908.654161 5547.237465 \n", + "44 -2908.654161 5547.237465 \n", + "45 -2908.654161 5547.237465 \n", + "46 -2908.654161 5547.237465 \n", + "47 -2908.654161 5547.237465 \n", + "48 -2908.654161 5547.237465 \n", + "49 -2908.654161 5547.237465 \n", + "50 -2908.654161 5547.237465 \n", + "40 -2908.654161 5547.237465 \n", + "26 -2908.654161 5547.237465 \n", + "31 -2908.654161 5547.237465 \n", + "24 -2908.654161 5547.237465 \n", + "25 -2908.654161 5547.237465 \n", + "1 -3056.364840 5547.237465 \n", + "2 -3056.364840 5547.237465 \n", + "3 -3056.364840 5547.237465 \n", + "4 -3056.364840 5547.237465 \n", + "23 -3056.364840 3566.974222 \n", + "5 -2861.352500 3566.974222 \n", + "6 -2861.352500 3566.974222 \n", + "8 -2861.352500 3566.974222 \n", + "9 -2861.352500 3566.974222 \n", + "10 -2861.352500 3566.974222 \n", + "11 -2861.352500 3566.974222 \n", + "7 -2861.352500 3566.974222 \n", + "13 -2861.352500 3566.974222 \n", + "14 -2861.352500 3566.974222 \n", + "15 -2861.352500 3566.974222 \n", + "16 -2861.352500 3566.974222 \n", + "17 -2861.352500 3566.974222 \n", + "18 -2861.352500 3566.974222 \n", + "19 -2861.352500 3566.974222 \n", + "20 -2861.352500 3566.974222 \n", + "21 -2861.352500 3566.974222 \n", + "22 -2861.352500 3566.974222 \n", + "12 -2861.352500 3566.974222 \n", + "54 -2861.352500 5552.368526 \n", + "53 -2861.352500 5552.368526 \n", + "51 -2861.352500 5552.368526 \n", + "52 -2861.352500 5552.368526 \n", + "61 -2861.352500 6140.768623 \n", + "55 -2861.352500 6140.768623 \n", + "56 -2861.352500 6140.768623 \n", + "57 -2861.352500 6140.768623 \n", + "58 -2861.352500 6140.768623 \n", + "59 -2861.352500 6140.768623 \n", + "60 -2861.352500 6140.768623 \n", + "62 -2861.352500 6140.768623 \n", + "\n", + " single_best_train_score single_best_test_score \n", + "0 NaN NaN \n", + "28 8.204380 5956.516151 \n", + "29 8.204380 5956.516151 \n", + "30 8.204380 5956.516151 \n", + "32 8.204380 5956.516151 \n", + "33 8.204380 5956.516151 \n", + "34 8.204380 5956.516151 \n", + "35 8.204380 5956.516151 \n", + "36 8.204380 5956.516151 \n", + "37 8.204380 5956.516151 \n", + "38 8.204380 5956.516151 \n", + "27 8.204380 5956.516151 \n", + "39 8.204380 5956.516151 \n", + "41 8.204380 5956.516151 \n", + "42 8.204380 5956.516151 \n", + "43 8.204380 5956.516151 \n", + "44 8.204380 5956.516151 \n", + "45 8.204380 5956.516151 \n", + "46 8.204380 5956.516151 \n", + "47 8.204380 5956.516151 \n", + "48 8.204380 5956.516151 \n", + "49 8.204380 5956.516151 \n", + "50 8.204380 5956.516151 \n", + "40 8.204380 5956.516151 \n", + "26 8.204380 5956.516151 \n", + "31 8.204380 5956.516151 \n", + "24 8.204380 5956.516151 \n", + "25 8.204380 5956.516151 \n", + "1 8.204380 5956.516151 \n", + "2 8.204380 5956.516151 \n", + "3 8.204380 5956.516151 \n", + "4 8.204380 5956.516151 \n", + "23 458.863654 3095.679501 \n", + "5 458.863654 3095.679501 \n", + "6 458.863654 3095.679501 \n", + "8 458.863654 3095.679501 \n", + "9 458.863654 3095.679501 \n", + "10 458.863654 3095.679501 \n", + "11 458.863654 3095.679501 \n", + "7 458.863654 3095.679501 \n", + "13 458.863654 3095.679501 \n", + "14 458.863654 3095.679501 \n", + "15 458.863654 3095.679501 \n", + "16 458.863654 3095.679501 \n", + "17 458.863654 3095.679501 \n", + "18 458.863654 3095.679501 \n", + "19 458.863654 3095.679501 \n", + "20 458.863654 3095.679501 \n", + "21 458.863654 3095.679501 \n", + "22 458.863654 3095.679501 \n", + "12 458.863654 3095.679501 \n", + "54 4.928092 5961.683783 \n", + "53 4.928092 5961.683783 \n", + "51 4.928092 5961.683783 \n", + "52 4.928092 5961.683783 \n", + "61 0.000000 5977.949471 \n", + "55 0.000000 5977.949471 \n", + "56 0.000000 5977.949471 \n", + "57 0.000000 5977.949471 \n", + "58 0.000000 5977.949471 \n", + "59 0.000000 5977.949471 \n", + "60 0.000000 5977.949471 \n", + "62 0.000000 5977.949471 " + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pot" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "6294b688", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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0bFjxxoDJda2rx9++AFz5sxBz5494eHhgZEjR+Lf//63Ubl7770X7du3x913342ysjKMGTNG6uoOVA1sOH78eERHR6OkpMSoHZU57d+/HzqdDv/8p/HvZtmyZVi+fDk++ugjTJ06Fd26dUNoaChef/11zJ8/36js6tWrMW/ePGzcuBEtWrTAuXPnauxn9uzZ0Gg0eO6555CXl4fo6Gh8++23aN++vVmOQ6fTYcaMGfj777+hVCoxZMgQrFmzBgDQvHlz7N27FwsWLMCAAQPg6OiILl26SO2GbrVujfmd2AKFEMLUfWZZ0Wq1UKlU0Gg0UCqV1q4OkWyUlpYiMzMT4eHhNR5NNJheV9WmqCgX8AqsajNkgTtDZH4TJkxAQUFBjdGdiYC6/54w5/Wbd4iIqGlwcATC+1u7FkRkp9jtnoiIbtnrr79u1M26+uv++++3dvWarPvvv7/W7/3111+3dvXsEu8QERHRLZs2bRoee+wxk+vq27178+bNZqyRPHz44YcoKSkxuc5SDc6bOgYiIiK6Zb6+vrwAW8GNY19R4/GRGREREckeAxERWR07uxJRbW7X3w8MRERkNYZRcq9evWrlmhCRrTJMi2LpKUDYhoiIrMbR0RHNmjWTJqv08PCQ5msiItLr9cjPz4eHhwecnCwbWRiIiMiqgoKCANRvBm8ikh8HBwe0atXK4v9YYiAiIqtSKBQIDg5GQEAAKioqrF0dIrIxLi4u0px2lsRAREQ2wdHR0eJtBIiIasNG1URERCR7DEREREQkewxEREREJHsMRERERCR7DEREREQkewxEREREJHsMRERERCR7DEREREQkewxEREREJHsMRERERCR7DEREREQkewxEREREJHsMRERERCR7DEREREQkewxEREREJHsMRERERCR7DEREREQkewxEREREJHtNKhD95z//QevWreHm5obevXvj0KFD1q4SERER2YEmE4i+/PJLzJs3D8uWLcOxY8fQuXNnxMbGIi8vz9pVIyIiIhvXZALRv//9b0yZMgUTJ05EdHQ01q1bBw8PD3z88cfWrhoRERHZuCYRiMrLy3H06FEMGjRIWubg4IBBgwYhKSmpRvmysjJotVqjFxEREclXkwhEFy9ehE6nQ2BgoNHywMBAqNXqGuVXrlwJlUolvUJDQ29XVYmIiMgGNYlA1FCLFy+GRqORXufPn7d2lYiIiMiKnKxdAXPw8/ODo6MjcnNzjZbn5uYiKCioRnlXV1e4urreruoRERGRjWsSd4hcXFzQvXt3xMfHS8v0ej3i4+MRExNjxZoRERGRPWgSd4gAYN68eRg/fjx69OiBXr164e2330ZxcTEmTpxo7aoRERGRjWsygWjUqFHIz8/H0qVLoVar0aVLF+zZs6dGQ2siIiKiGymEEMLalbA2rVYLlUoFjUYDpVJp7eoQERFRPZjz+t0k2hARERERNQYDEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREcmeRQLRuXPnMGnSJISHh8Pd3R1t27bFsmXLUF5eblTuxIkT6N+/P9zc3BAaGopVq1bV2NZXX32FyMhIuLm5oWPHjvjuu++M1gshsHTpUgQHB8Pd3R2DBg3Cn3/+aYnDIiIioibKIoHo1KlT0Ov1WL9+PVJSUrBmzRqsW7cOL7zwglRGq9XivvvuQ1hYGI4ePYq33noLy5cvx4YNG6Qyv/32G8aMGYNJkybh999/x/DhwzF8+HAkJydLZVatWoV3330X69atw8GDB+Hp6YnY2FiUlpZa4tCIiIioCVIIIcTt2NFbb72FtWvX4uzZswCAtWvX4sUXX4RarYaLiwsAYNGiRdixYwdOnToFABg1ahSKi4uxa9cuaTt9+vRBly5dsG7dOgghEBISgueeew7z588HAGg0GgQGBmLz5s0YPXp0veqm1WqhUqmg0WigVCrNedhERERkIea8ft+2NkQajQa+vr7S+6SkJNx9991SGAKA2NhYpKen48qVK1KZQYMGGW0nNjYWSUlJAIDMzEyo1WqjMiqVCr1795bKmFJWVgatVmv0IiIiIvm6LYEoIyMD7733Hp5++mlpmVqtRmBgoFE5w3u1Wl1nmerrq3/OVBlTVq5cCZVKJb1CQ0Nv8ciIiIioKWhQIFq0aBEUCkWdL8PjLoMLFy5gyJAhePTRRzFlyhSzVv5WLV68GBqNRnqdP3/e2lUiIiIiK3JqSOHnnnsOEyZMqLNMmzZtpP/Pzs7GPffcg759+xo1lgaAoKAg5ObmGi0zvA8KCqqzTPX1hmXBwcFGZbp06VJrHV1dXeHq6lrncRAREZF8NCgQ+fv7w9/fv15lL1y4gHvuuQfdu3fHpk2b4OBgfDMqJiYGL774IioqKuDs7AwAiIuLQ0REBHx8fKQy8fHxmDt3rvS5uLg4xMTEAADCw8MRFBSE+Ph4KQBptVocPHgQ06dPb8ihERERkYxZpA3RhQsXMHDgQLRq1Qr/+te/kJ+fD7VabdSu5/HHH4eLiwsmTZqElJQUfPnll3jnnXcwb948qcycOXOwZ88erF69GqdOncLy5ctx5MgRzJw5EwCgUCgwd+5crFixAt9++y1OnjyJcePGISQkBMOHD7fEoREREVET1KA7RPUVFxeHjIwMZGRkoGXLlkbrDL38VSoVfvzxR8yYMQPdu3eHn58fli5diqlTp0pl+/bti88//xxLlizBCy+8gPbt22PHjh248847pTLPP/88iouLMXXqVBQUFOCuu+7Cnj174ObmZolDIyIioiboto1DZMs4DhEREZH9sctxiIiIiIhsFQMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJHgMRERERyR4DEREREckeAxERERHJnpO1K0B2IOMQ8Ong6++fjAPa9bJefYiIyDJKi4DtU4Ar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2Lt3rwAgLl++XOvnHnnkETF69OgG1deW2Nt5qq62din9+/cXc+bMMVr28ccfC6VS2aDt25qmeK5MmT9/vujTp0+Dtm9L7PU8JSQkCE9PT6OGvwahoaFizZo1RsuWLl0qOnXq1KD62pqmeK5Maeh1im2IzMzFxQXdu3dHfHy8tEyv1yM+Ph4xMTG4evUqgKrntdU5Ojo2+La7Xq9HWVmZ9F4IgZkzZ2L79u3Yu3dvjUdhpsTExODnn39GRUWFtCwuLg4RERHw8fEx+RmdToeTJ0+avFVqL+ztPNVHTEyM0fEAVeey+r+a7FFTPFemHD9+nH+m6slc5ykhIQFDhw7Fm2++ialTp9ZYzz9T9nOubnRL16l6Ryeqt61btwpXV1exefNmkZqaKqZOnSqaNWsm1Gq1KC8vF+3atRP9+/cXBw8eFBkZGeJf//qXUCgUYvfu3dI2xo4dKxYtWiS9f//998W3334rTp8+LU6fPi0+/PBD4e3tLV588UWpzPTp04VKpRIJCQlGXQ+vXr0qlVm0aJEYO3as9L6goEAEBgaKsWPHiuTkZLF169Ya3SRffvll8cMPP4gzZ86Io0ePitGjRws3NzeRkpJiqa/wtrCn8ySEECkpKeL3338Xw4YNEwMHDhS///67+P3336X1hm73CxYsEGlpaeI///lPk+p235TO1Zo1a8SOHTvEn3/+KU6ePCnmzJkjHBwcxE8//WSBb+/2safztHfvXuHh4SEWL15s9JlLly5JZRITE4WTk5P417/+JdLS0sSyZcuaVLf7pnSuzHGdYiCykPfee0+0atVKuLi4iF69eokDBw5I606fPi1GjBghAgIChIeHh+jUqVON7o0DBgwQ48ePl96/++674o477hAeHh5CqVSKrl27ig8++MBo3BIAJl+bNm2SyowfP14MGDDAaF9//PGHuOuuu4Srq6to0aKFeOONN4zWz507VzqWwMBA8cADD9Q5FoU9safzFBYWZvJz1e3bt0906dJFuLi4iDZt2hht0941pXP15ptvirZt2wo3Nzfh6+srBg4cKPbu3WueL8rK7OU8jR8/3uRnbjyX27ZtEx06dBAuLi7ijjvuMAoE9q4pnStzXKcU1ypIREREJFtsQ0RERESyx0BEREREssdARERERLLHQERERESyx0BEREREssdARERERLLHQERERESyx0BEREREssdARERERLLHQERERESyx0BEREREssdARERERLL3/3MFxWdHKiuAAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(pot['Timestamp'], pot['single_best_optimization_score'], '-o', label = 'single_best_optimization_score')\n", + "plt.plot(pot['Timestamp'], pot['ensemble_optimization_score'], '-o', label = 'ensemble_optimization_score')\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "93493445", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Timestampsingle_best_optimization_scoresingle_best_train_scoresingle_best_test_score
02022-10-26 08:32:053566.9742224.588637e+023095.679501
12022-10-26 08:32:045547.2374658.204380e+005956.516151
22022-10-26 08:32:225321.6065912.189605e+015012.452115
32022-10-26 08:32:033390.1334712.535136e+032908.654161
42022-10-26 08:32:043724.4286044.512352e+023630.227129
52022-10-26 08:32:043719.1309213.662203e+023675.552091
62022-10-26 08:32:043249.3775522.795936e+033056.364840
72022-10-26 08:32:063114.6969542.728731e+032861.352500
82022-10-26 08:32:163630.4168859.277512e+023809.271137
92022-10-26 08:32:093664.1528710.000000e+003114.280041
102022-10-26 08:32:065547.2374651.833271e+005956.516151
112022-10-26 08:32:075547.2374652.608709e+005956.516151
122022-10-26 08:32:085547.2374654.754888e+005956.516151
132022-10-26 08:32:085547.2374654.594299e+015956.516151
142022-10-26 08:32:093487.6708800.000000e+003153.721191
152022-10-26 08:32:103348.3402391.392979e+023099.756165
162022-10-26 08:32:105500.4013341.033820e+005934.301378
172022-10-26 08:32:123295.1080599.717938e+023215.473343
182022-10-26 08:32:114176.2756202.281517e+033096.312428
192022-10-26 08:32:113558.1502612.515105e+033048.502830
202022-10-26 08:32:124392.8071264.715052e+034583.308257
212022-10-26 08:32:123344.3863612.841341e+032983.718158
222022-10-26 08:32:133373.6991322.679678e+033102.257256
232022-10-26 08:32:134452.9120475.105778e+034702.006582
242022-10-26 08:32:133420.9926332.877613e+033058.144466
252022-10-26 08:32:135469.4221816.118937e+035870.982789
262022-10-26 08:32:205415.9447660.000000e+004311.409861
272022-10-26 08:32:243690.6557822.322101e+032861.933316
282022-10-26 08:32:245552.3685264.928092e+005961.683783
292022-10-26 08:32:245547.2335212.907255e-105956.431096
302022-10-26 08:32:243256.1719700.000000e+003342.380814
312022-10-26 08:32:253929.6497471.298594e+013534.014229
322022-10-26 08:32:256140.7686230.000000e+005977.949471
332022-10-26 08:32:243860.9784454.133011e+034234.447124
342022-10-26 08:32:294893.6770007.068516e+014957.405028
352022-10-26 08:32:333405.3330502.535418e+032935.597031
362022-10-26 08:32:385032.6296501.608918e+015036.266592
372022-10-26 08:32:413774.9107683.092308e+033206.510337
382022-10-26 08:32:453502.0839992.441709e-093643.688089
392022-10-26 08:32:493309.1672981.782098e+033287.415633
\n", + "
" + ], + "text/plain": [ + " Timestamp single_best_optimization_score \\\n", + "0 2022-10-26 08:32:05 3566.974222 \n", + "1 2022-10-26 08:32:04 5547.237465 \n", + "2 2022-10-26 08:32:22 5321.606591 \n", + "3 2022-10-26 08:32:03 3390.133471 \n", + "4 2022-10-26 08:32:04 3724.428604 \n", + "5 2022-10-26 08:32:04 3719.130921 \n", + "6 2022-10-26 08:32:04 3249.377552 \n", + "7 2022-10-26 08:32:06 3114.696954 \n", + "8 2022-10-26 08:32:16 3630.416885 \n", + "9 2022-10-26 08:32:09 3664.152871 \n", + "10 2022-10-26 08:32:06 5547.237465 \n", + "11 2022-10-26 08:32:07 5547.237465 \n", + "12 2022-10-26 08:32:08 5547.237465 \n", + "13 2022-10-26 08:32:08 5547.237465 \n", + "14 2022-10-26 08:32:09 3487.670880 \n", + "15 2022-10-26 08:32:10 3348.340239 \n", + "16 2022-10-26 08:32:10 5500.401334 \n", + "17 2022-10-26 08:32:12 3295.108059 \n", + "18 2022-10-26 08:32:11 4176.275620 \n", + "19 2022-10-26 08:32:11 3558.150261 \n", + "20 2022-10-26 08:32:12 4392.807126 \n", + "21 2022-10-26 08:32:12 3344.386361 \n", + "22 2022-10-26 08:32:13 3373.699132 \n", + "23 2022-10-26 08:32:13 4452.912047 \n", + "24 2022-10-26 08:32:13 3420.992633 \n", + "25 2022-10-26 08:32:13 5469.422181 \n", + "26 2022-10-26 08:32:20 5415.944766 \n", + "27 2022-10-26 08:32:24 3690.655782 \n", + "28 2022-10-26 08:32:24 5552.368526 \n", + "29 2022-10-26 08:32:24 5547.233521 \n", + "30 2022-10-26 08:32:24 3256.171970 \n", + "31 2022-10-26 08:32:25 3929.649747 \n", + "32 2022-10-26 08:32:25 6140.768623 \n", + "33 2022-10-26 08:32:24 3860.978445 \n", + "34 2022-10-26 08:32:29 4893.677000 \n", + "35 2022-10-26 08:32:33 3405.333050 \n", + "36 2022-10-26 08:32:38 5032.629650 \n", + "37 2022-10-26 08:32:41 3774.910768 \n", + "38 2022-10-26 08:32:45 3502.083999 \n", + "39 2022-10-26 08:32:49 3309.167298 \n", + "\n", + " single_best_train_score single_best_test_score \n", + "0 4.588637e+02 3095.679501 \n", + "1 8.204380e+00 5956.516151 \n", + "2 2.189605e+01 5012.452115 \n", + "3 2.535136e+03 2908.654161 \n", + "4 4.512352e+02 3630.227129 \n", + "5 3.662203e+02 3675.552091 \n", + "6 2.795936e+03 3056.364840 \n", + "7 2.728731e+03 2861.352500 \n", + "8 9.277512e+02 3809.271137 \n", + "9 0.000000e+00 3114.280041 \n", + "10 1.833271e+00 5956.516151 \n", + "11 2.608709e+00 5956.516151 \n", + "12 4.754888e+00 5956.516151 \n", + "13 4.594299e+01 5956.516151 \n", + "14 0.000000e+00 3153.721191 \n", + "15 1.392979e+02 3099.756165 \n", + "16 1.033820e+00 5934.301378 \n", + "17 9.717938e+02 3215.473343 \n", + "18 2.281517e+03 3096.312428 \n", + "19 2.515105e+03 3048.502830 \n", + "20 4.715052e+03 4583.308257 \n", + "21 2.841341e+03 2983.718158 \n", + "22 2.679678e+03 3102.257256 \n", + "23 5.105778e+03 4702.006582 \n", + "24 2.877613e+03 3058.144466 \n", + "25 6.118937e+03 5870.982789 \n", + "26 0.000000e+00 4311.409861 \n", + "27 2.322101e+03 2861.933316 \n", + "28 4.928092e+00 5961.683783 \n", + "29 2.907255e-10 5956.431096 \n", + "30 0.000000e+00 3342.380814 \n", + "31 1.298594e+01 3534.014229 \n", + "32 0.000000e+00 5977.949471 \n", + "33 4.133011e+03 4234.447124 \n", + "34 7.068516e+01 4957.405028 \n", + "35 2.535418e+03 2935.597031 \n", + "36 1.608918e+01 5036.266592 \n", + "37 3.092308e+03 3206.510337 \n", + "38 2.441709e-09 3643.688089 \n", + "39 1.782098e+03 3287.415633 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "automl.automl_._get_runhistory_models_performance()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Makefile b/Makefile index 2841ea9da0..7a1e591c5d 100644 --- a/Makefile +++ b/Makefile @@ -65,9 +65,9 @@ pre-commit: $(PRECOMMIT) run --all-files format-black: - $(BLACK) autosklearn/.* - $(BLACK) test/.* - $(BLACK) examples/.* + $(BLACK) autosklearn + $(BLACK) test + $(BLACK) examples format-isort: $(ISORT) autosklearn diff --git a/autosklearn/automl.py b/autosklearn/automl.py index e242fbbc08..34afd2606d 100644 --- a/autosklearn/automl.py +++ b/autosklearn/automl.py @@ -1825,7 +1825,15 @@ def _get_runhistory_models_performance(self): @property def performance_over_time_(self): check_is_fitted(self) - individual_performance_frame = self._get_runhistory_models_performance() + individual_performance_frame = ( + self._get_runhistory_models_performance().sort_values( + by=["Timestamp", "single_best_optimization_score"] + ) + ) + + metric = self._metrics[0] + individual_performance_frame["single_best_optimization_score"] *= metric._sign + best_values = pd.Series( { "single_best_optimization_score": -np.inf, @@ -1841,6 +1849,8 @@ def performance_over_time_(self): best_values = individual_performance_frame.loc[idx] individual_performance_frame.loc[idx] = best_values + individual_performance_frame["single_best_optimization_score"] *= metric._sign + performance_over_time = individual_performance_frame if self._ensemble_class is not None: @@ -1856,6 +1866,10 @@ def performance_over_time_(self): best_values = ensemble_performance_frame.loc[idx] ensemble_performance_frame.loc[idx] = best_values + for c in ensemble_performance_frame.columns: + if c != "Timestamp": + ensemble_performance_frame[c] *= metric._sign + performance_over_time = ( pd.merge( ensemble_performance_frame, @@ -1867,7 +1881,7 @@ def performance_over_time_(self): .fillna(method="ffill") ) - return performance_over_time + return performance_over_time.drop_duplicates() @property def cv_results_(self): diff --git a/autosklearn/estimators.py b/autosklearn/estimators.py index 1a094d2582..5e7284bd4f 100644 --- a/autosklearn/estimators.py +++ b/autosklearn/estimators.py @@ -530,7 +530,6 @@ def build_automl(self): return automl def fit(self, **kwargs): - # Automatically set the cutoff time per task if self.per_run_time_limit is None: self.per_run_time_limit = self._n_jobs * self.time_left_for_this_task // 10 diff --git a/scripts/02_retrieve_metadata.py b/scripts/02_retrieve_metadata.py index 1aa5e48405..f029edf7ce 100644 --- a/scripts/02_retrieve_metadata.py +++ b/scripts/02_retrieve_metadata.py @@ -195,6 +195,7 @@ def __init__(self, info, feat_type=None): self._info = info self.feat_type = feat_type + def main(): parser = ArgumentParser() @@ -239,7 +240,7 @@ def main(): configuration_space = pipeline.get_configuration_space( DummyDatamanager( info={"is_sparse": sparse, "task": task}, - feat_type={"A": "numerical", "B": "categorical"} + feat_type={"A": "numerical", "B": "categorical"}, ) )