diff --git a/flaml/automl.py b/flaml/automl.py index ae74ec9ad..098f66da4 100644 --- a/flaml/automl.py +++ b/flaml/automl.py @@ -402,7 +402,7 @@ class AutoML: self._X_train_all, self._y_train_all = \ self._transformer.fit_transform(X, y, self._state.task) self._label_transformer = self._transformer.label_transformer - + self._sample_weight_full = self._state.fit_kwargs.get('sample_weight') if X_val is not None and y_val is not None: if not (isinstance(X_val, np.ndarray) or issparse(X_val) or @@ -446,7 +446,8 @@ class AutoML: self._X_train_all, self._y_train_all if issparse(X_train_all): X_train_all = X_train_all.tocsr() - if self._state.task != 'regression': + if self._state.task != 'regression' and self._state.fit_kwargs.get( + 'sample_weight') is None: # logger.info(f"label {pd.unique(y_train_all)}") label_set, counts = np.unique(y_train_all, return_counts=True) # augment rare classes @@ -1151,7 +1152,11 @@ class AutoML: stacker = Stacker(estimators, best_m, n_jobs=self._state.n_jobs, passthrough=True) - stacker.fit(self._X_train_all, self._y_train_all) + if self._sample_weight_full is not None: + self._state.fit_kwargs[ + 'sample_weight'] = self._sample_weight_full + stacker.fit(self._X_train_all, self._y_train_all, + **self._state.fit_kwargs) logger.info(f'ensemble: {stacker}') self._trained_estimator = stacker self._trained_estimator.model = stacker diff --git a/flaml/tune/README.md b/flaml/tune/README.md index c1a5b21c5..e63232d12 100644 --- a/flaml/tune/README.md +++ b/flaml/tune/README.md @@ -146,6 +146,7 @@ based on optimism in face of uncertainty. Example: ```python +# requirements: pip install flaml[blendsearch] from flaml import BlendSearch tune.run(... search_alg = BlendSearch(points_to_evaluate=[init_config]), diff --git a/flaml/version.py b/flaml/version.py index d31c31eae..788da1fb3 100644 --- a/flaml/version.py +++ b/flaml/version.py @@ -1 +1 @@ -__version__ = "0.2.3" +__version__ = "0.2.4" diff --git a/notebook/finetune_transformer_demo.ipynb b/notebook/finetune_transformer_demo.ipynb index 2e88890c5..a7254516e 100644 --- a/notebook/finetune_transformer_demo.ipynb +++ b/notebook/finetune_transformer_demo.ipynb @@ -6,11 +6,16 @@ "source": [ "This notebook uses the Huggingface transformers library to finetune a transformer model.\n", "\n", - "**Requirements.** This notebook has additional requirements:\n", - "\n", - "```bash\n", - "pip install -r transformers_requirements.txt\n", - "```" + "**Requirements.** This notebook has additional requirements:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip install torch transformers datasets ipywidgets" ] }, { @@ -699,7 +704,7 @@ "source": [ "### Step 3. Launch with `flaml.tune.run`\n", "\n", - "We are now ready to laungh the tuning using `flaml.tune.run`:" + "We are now ready to launch the tuning using `flaml.tune.run`:" ], "cell_type": "markdown", "metadata": {} @@ -766,9 +771,13 @@ ], "metadata": { "kernelspec": { - "display_name": "flaml", - "language": "python", - "name": "flaml" + "name": "python3", + "display_name": "Python 3.7.7 64-bit ('flaml': conda)", + "metadata": { + "interpreter": { + "hash": "bfcd9a6a9254a5e160761a1fd7a9e444f011592c6770d9f4180dde058a9df5dd" + } + } }, "language_info": { "codemirror_mode": { @@ -780,7 +789,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.7.7-final" } }, "nbformat": 4, diff --git a/notebook/flaml_demo.ipynb b/notebook/flaml_demo.ipynb index ff8ccc345..4e52d0ebf 100644 --- a/notebook/flaml_demo.ipynb +++ b/notebook/flaml_demo.ipynb @@ -33,6 +33,120 @@ "```" ] }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: flaml[notebook] in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (0.2.3)\n", + "Requirement already satisfied: optuna==2.3.0 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from flaml[notebook]) (2.3.0)\n", + "Requirement already satisfied: scikit-learn>=0.23.2 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from flaml[notebook]) (0.24.1)\n", + "Requirement already satisfied: scipy>=1.4.1 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from flaml[notebook]) (1.5.4)\n", + "Requirement already satisfied: xgboost>=0.90 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from flaml[notebook]) (1.2.1)\n", + "Requirement already satisfied: NumPy>=1.16.2 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from flaml[notebook]) (1.20.0)\n", + "Requirement already satisfied: lightgbm>=2.3.1 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from flaml[notebook]) (3.1.1)\n", + "Requirement already satisfied: catboost>=0.23 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from flaml[notebook]) (0.24.4)\n", + "Requirement already satisfied: openml==0.10.2; extra == \"notebook\" in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from flaml[notebook]) (0.10.2)\n", + "Requirement already satisfied: rgf-python; extra == \"notebook\" in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from flaml[notebook]) (3.9.0)\n", + "Requirement already satisfied: jupyter; extra == \"notebook\" in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from flaml[notebook]) (1.0.0)\n", + "Requirement already satisfied: matplotlib==3.2.0; extra == \"notebook\" in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from flaml[notebook]) (3.2.0)\n", + "Requirement already satisfied: cmaes>=0.6.0 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from optuna==2.3.0->flaml[notebook]) (0.8.0)\n", + "Requirement already satisfied: packaging>=20.0 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from optuna==2.3.0->flaml[notebook]) (20.9)\n", + "Requirement already satisfied: tqdm in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from optuna==2.3.0->flaml[notebook]) (4.53.0)\n", + "Requirement already satisfied: colorlog in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from optuna==2.3.0->flaml[notebook]) (4.7.2)\n", + "Requirement already satisfied: joblib in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from optuna==2.3.0->flaml[notebook]) (0.17.0)\n", + "Requirement already satisfied: alembic in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from optuna==2.3.0->flaml[notebook]) (1.5.4)\n", + "Requirement already satisfied: sqlalchemy>=1.1.0 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from optuna==2.3.0->flaml[notebook]) (1.3.23)\n", + "Requirement already satisfied: cliff in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from optuna==2.3.0->flaml[notebook]) (3.6.0)\n", + "Requirement already satisfied: threadpoolctl>=2.0.0 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from scikit-learn>=0.23.2->flaml[notebook]) (2.1.0)\n", + "Requirement already satisfied: wheel in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from lightgbm>=2.3.1->flaml[notebook]) (0.35.1)\n", + "Requirement already satisfied: pandas>=0.24.0 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from catboost>=0.23->flaml[notebook]) (1.1.4)\n", + "Requirement already satisfied: six in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from catboost>=0.23->flaml[notebook]) (1.15.0)\n", + "Requirement already satisfied: graphviz in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from catboost>=0.23->flaml[notebook]) (0.16)\n", + "Requirement already satisfied: plotly in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from catboost>=0.23->flaml[notebook]) (4.14.3)\n", + "Requirement already satisfied: xmltodict in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from openml==0.10.2; extra == \"notebook\"->flaml[notebook]) (0.12.0)\n", + "Requirement already satisfied: liac-arff>=2.4.0 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from openml==0.10.2; extra == \"notebook\"->flaml[notebook]) (2.5.0)\n", + "Requirement already satisfied: requests in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from openml==0.10.2; extra == \"notebook\"->flaml[notebook]) (2.25.0)\n", + "Requirement already satisfied: python-dateutil in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from openml==0.10.2; extra == \"notebook\"->flaml[notebook]) (2.8.1)\n", + "Requirement already satisfied: ipywidgets in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from jupyter; extra == \"notebook\"->flaml[notebook]) (7.6.3)\n", + "Requirement already satisfied: qtconsole in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from jupyter; extra == \"notebook\"->flaml[notebook]) (5.0.2)\n", + "Requirement already satisfied: ipykernel in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from jupyter; extra == \"notebook\"->flaml[notebook]) (5.3.4)\n", + "Requirement already satisfied: jupyter-console in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from jupyter; extra == \"notebook\"->flaml[notebook]) (6.2.0)\n", + "Requirement already satisfied: nbconvert in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from jupyter; extra == \"notebook\"->flaml[notebook]) (6.0.7)\n", + "Requirement already satisfied: notebook in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from jupyter; extra == \"notebook\"->flaml[notebook]) (6.2.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from matplotlib==3.2.0; extra == \"notebook\"->flaml[notebook]) (1.3.1)\n", + "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from matplotlib==3.2.0; extra == \"notebook\"->flaml[notebook]) (2.4.7)\n", + "Requirement already satisfied: cycler>=0.10 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from matplotlib==3.2.0; extra == \"notebook\"->flaml[notebook]) (0.10.0)\n", + "Requirement already satisfied: Mako in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from alembic->optuna==2.3.0->flaml[notebook]) (1.1.4)\n", + "Requirement already satisfied: python-editor>=0.3 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from alembic->optuna==2.3.0->flaml[notebook]) (1.0.4)\n", + "Requirement already satisfied: pbr!=2.1.0,>=2.0.0 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from cliff->optuna==2.3.0->flaml[notebook]) (5.5.1)\n", + "Requirement already satisfied: PrettyTable<0.8,>=0.7.2 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from cliff->optuna==2.3.0->flaml[notebook]) (0.7.2)\n", + "Requirement already satisfied: stevedore>=2.0.1 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from cliff->optuna==2.3.0->flaml[notebook]) (3.3.0)\n", + "Requirement already satisfied: cmd2!=0.8.3,>=0.8.0 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from cliff->optuna==2.3.0->flaml[notebook]) (1.5.0)\n", + "Requirement already satisfied: PyYAML>=3.12 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from cliff->optuna==2.3.0->flaml[notebook]) (5.3.1)\n", + "Requirement already satisfied: pytz>=2017.2 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from pandas>=0.24.0->catboost>=0.23->flaml[notebook]) (2020.4)\n", + "Requirement already satisfied: retrying>=1.3.3 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from plotly->catboost>=0.23->flaml[notebook]) (1.3.3)\n", + "Requirement already satisfied: idna<3,>=2.5 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from requests->openml==0.10.2; extra == \"notebook\"->flaml[notebook]) (2.10)\n", + "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from requests->openml==0.10.2; extra == \"notebook\"->flaml[notebook]) (1.26.2)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from requests->openml==0.10.2; extra == \"notebook\"->flaml[notebook]) (2020.12.5)\n", + "Requirement already satisfied: chardet<4,>=3.0.2 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from requests->openml==0.10.2; extra == \"notebook\"->flaml[notebook]) (3.0.4)\n", + "Requirement already satisfied: widgetsnbextension~=3.5.0 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from ipywidgets->jupyter; extra == \"notebook\"->flaml[notebook]) (3.5.1)\n", + "Requirement already satisfied: jupyterlab-widgets>=1.0.0; python_version >= \"3.6\" in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from ipywidgets->jupyter; extra == \"notebook\"->flaml[notebook]) (1.0.0)\n", + "Requirement already satisfied: nbformat>=4.2.0 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from ipywidgets->jupyter; extra == \"notebook\"->flaml[notebook]) (5.1.2)\n", + "Requirement already satisfied: ipython>=4.0.0; python_version >= \"3.3\" in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from ipywidgets->jupyter; extra == \"notebook\"->flaml[notebook]) (7.20.0)\n", + "Requirement already satisfied: traitlets>=4.3.1 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from ipywidgets->jupyter; extra == \"notebook\"->flaml[notebook]) (5.0.5)\n", + "Requirement already satisfied: ipython-genutils in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from qtconsole->jupyter; extra == \"notebook\"->flaml[notebook]) (0.2.0)\n", + "Requirement already satisfied: jupyter-client>=4.1 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from qtconsole->jupyter; extra == \"notebook\"->flaml[notebook]) (6.1.7)\n", + "Requirement already satisfied: qtpy in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from qtconsole->jupyter; extra == \"notebook\"->flaml[notebook]) (1.9.0)\n", + "Requirement already satisfied: jupyter-core in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from qtconsole->jupyter; extra == \"notebook\"->flaml[notebook]) (4.7.1)\n", + "Requirement already satisfied: pyzmq>=17.1 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from qtconsole->jupyter; extra == \"notebook\"->flaml[notebook]) (20.0.0)\n", + "Requirement already satisfied: pygments in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from qtconsole->jupyter; extra == \"notebook\"->flaml[notebook]) (2.7.4)\n", + "Requirement already satisfied: tornado>=4.2 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from ipykernel->jupyter; extra == \"notebook\"->flaml[notebook]) (6.1)\n", + "Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from jupyter-console->jupyter; extra == \"notebook\"->flaml[notebook]) (3.0.8)\n", + "Requirement already satisfied: mistune<2,>=0.8.1 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from nbconvert->jupyter; extra == \"notebook\"->flaml[notebook]) (0.8.4)\n", + "Requirement already satisfied: jinja2>=2.4 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from nbconvert->jupyter; extra == \"notebook\"->flaml[notebook]) (2.11.3)\n", + "Requirement already satisfied: nbclient<0.6.0,>=0.5.0 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from nbconvert->jupyter; extra == \"notebook\"->flaml[notebook]) (0.5.2)\n", + "Requirement already satisfied: bleach in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from nbconvert->jupyter; extra == \"notebook\"->flaml[notebook]) (3.3.0)\n", + "Requirement already satisfied: defusedxml in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from nbconvert->jupyter; extra == \"notebook\"->flaml[notebook]) (0.6.0)\n", + "Requirement already satisfied: entrypoints>=0.2.2 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from nbconvert->jupyter; extra == \"notebook\"->flaml[notebook]) (0.3)\n", + "Requirement already satisfied: jupyterlab-pygments in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from nbconvert->jupyter; extra == \"notebook\"->flaml[notebook]) (0.1.2)\n", + "Requirement already satisfied: testpath in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from nbconvert->jupyter; extra == \"notebook\"->flaml[notebook]) (0.4.4)\n", + "Requirement already satisfied: pandocfilters>=1.4.1 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from nbconvert->jupyter; extra == \"notebook\"->flaml[notebook]) (1.4.3)\n", + "Requirement already satisfied: argon2-cffi in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from notebook->jupyter; extra == \"notebook\"->flaml[notebook]) (20.1.0)\n", + "Requirement already satisfied: terminado>=0.8.3 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from notebook->jupyter; extra == \"notebook\"->flaml[notebook]) (0.9.2)\n", + "Requirement already satisfied: Send2Trash>=1.5.0 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from notebook->jupyter; extra == \"notebook\"->flaml[notebook]) (1.5.0)\n", + "Requirement already satisfied: prometheus-client in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from notebook->jupyter; extra == \"notebook\"->flaml[notebook]) (0.9.0)\n", + "Requirement already satisfied: MarkupSafe>=0.9.2 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from Mako->alembic->optuna==2.3.0->flaml[notebook]) (1.1.1)\n", + "Requirement already satisfied: wcwidth>=0.1.7 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from cmd2!=0.8.3,>=0.8.0->cliff->optuna==2.3.0->flaml[notebook]) (0.2.5)\n", + "Requirement already satisfied: pyperclip>=1.6 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from cmd2!=0.8.3,>=0.8.0->cliff->optuna==2.3.0->flaml[notebook]) (1.8.1)\n", + "Requirement already satisfied: colorama>=0.3.7 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from cmd2!=0.8.3,>=0.8.0->cliff->optuna==2.3.0->flaml[notebook]) (0.4.4)\n", + "Requirement already satisfied: attrs>=16.3.0 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from cmd2!=0.8.3,>=0.8.0->cliff->optuna==2.3.0->flaml[notebook]) (20.3.0)\n", + "Requirement already satisfied: jsonschema!=2.5.0,>=2.4 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from nbformat>=4.2.0->ipywidgets->jupyter; extra == \"notebook\"->flaml[notebook]) (3.2.0)\n", + "Requirement already satisfied: decorator in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from ipython>=4.0.0; python_version >= \"3.3\"->ipywidgets->jupyter; extra == \"notebook\"->flaml[notebook]) (4.4.2)\n", + "Requirement already satisfied: pickleshare in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from ipython>=4.0.0; python_version >= \"3.3\"->ipywidgets->jupyter; extra == \"notebook\"->flaml[notebook]) (0.7.5)\n", + "Requirement already satisfied: backcall in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from ipython>=4.0.0; python_version >= \"3.3\"->ipywidgets->jupyter; extra == \"notebook\"->flaml[notebook]) (0.2.0)\n", + "Requirement already satisfied: pexpect>4.3; sys_platform != \"win32\" in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from ipython>=4.0.0; python_version >= \"3.3\"->ipywidgets->jupyter; extra == \"notebook\"->flaml[notebook]) (4.8.0)\n", + "Requirement already satisfied: jedi>=0.16 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from ipython>=4.0.0; python_version >= \"3.3\"->ipywidgets->jupyter; extra == \"notebook\"->flaml[notebook]) (0.17.2)\n", + "Requirement already satisfied: setuptools>=18.5 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from ipython>=4.0.0; python_version >= \"3.3\"->ipywidgets->jupyter; extra == \"notebook\"->flaml[notebook]) (50.3.1.post20201107)\n", + "Requirement already satisfied: nest-asyncio in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from nbclient<0.6.0,>=0.5.0->nbconvert->jupyter; extra == \"notebook\"->flaml[notebook]) (1.5.1)\n", + "Requirement already satisfied: async-generator in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from nbclient<0.6.0,>=0.5.0->nbconvert->jupyter; extra == \"notebook\"->flaml[notebook]) (1.10)\n", + "Requirement already satisfied: webencodings in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from bleach->nbconvert->jupyter; extra == \"notebook\"->flaml[notebook]) (0.5.1)\n", + "Requirement already satisfied: cffi>=1.0.0 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from argon2-cffi->notebook->jupyter; extra == \"notebook\"->flaml[notebook]) (1.14.4)\n", + "Requirement already satisfied: ptyprocess; os_name != \"nt\" in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from terminado>=0.8.3->notebook->jupyter; extra == \"notebook\"->flaml[notebook]) (0.7.0)\n", + "Requirement already satisfied: pyrsistent>=0.14.0 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.2.0->ipywidgets->jupyter; extra == \"notebook\"->flaml[notebook]) (0.17.3)\n", + "Requirement already satisfied: parso<0.8.0,>=0.7.0 in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from jedi>=0.16->ipython>=4.0.0; python_version >= \"3.3\"->ipywidgets->jupyter; extra == \"notebook\"->flaml[notebook]) (0.7.0)\n", + "Requirement already satisfied: pycparser in /home/dmx/miniconda2/envs/blend/lib/python3.8/site-packages (from cffi>=1.0.0->argon2-cffi->notebook->jupyter; extra == \"notebook\"->flaml[notebook]) (2.20)\n" + ] + } + ], + "source": [ + "!pip install flaml[notebook];" + ] + }, { "cell_type": "markdown", "metadata": { @@ -49,7 +163,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": { "slideshow": { "slide_type": "subslide" @@ -61,7 +175,10 @@ "output_type": "stream", "name": "stdout", "text": [ - "load dataset from ./openml_ds1169.pkl\nDataset name: airlines\nX_train.shape: (404537, 7), y_train.shape: (404537,);\nX_test.shape: (134846, 7), y_test.shape: (134846,)\n" + "load dataset from ./openml_ds1169.pkl\n", + "Dataset name: airlines\n", + "X_train.shape: (404537, 7), y_train.shape: (404537,);\n", + "X_test.shape: (134846, 7), y_test.shape: (134846,)\n" ] } ], @@ -84,7 +201,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": { "slideshow": { "slide_type": "slide" @@ -99,7 +216,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": { "slideshow": { "slide_type": "slide" @@ -108,87 +225,247 @@ "outputs": [], "source": [ "settings = {\n", - " \"time_budget\": 60, # total running time in seconds\n", + " \"time_budget\": 300, # total running time in seconds\n", " \"metric\": 'accuracy', # primary metrics can be chosen from: ['accuracy','roc_auc','f1','log_loss','mae','mse','r2']\n", - " \"estimator_list\": ['lgbm', 'rf', 'xgboost'], # list of ML learners\n", + " # \"estimator_list\": ['lgbm', 'rf', 'xgboost'], # list of ML learners\n", " \"task\": 'classification', # task type \n", - " \"sample\": False, # whether to subsample training data\n", + " # \"sample\": False, # whether to subsample training data\n", " \"log_file_name\": 'airlines_experiment.log', # cache directory of flaml log files \n", "}" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": { "slideshow": { "slide_type": "slide" }, - "tags": [] + "tags": [ + "outputPrepend" + ] }, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ - "[flaml.automl: 01-31 05:20:44] {816} INFO - Evaluation method: holdout\n", - "[flaml.automl: 01-31 05:20:44] {541} INFO - Using StratifiedKFold\n", - "[flaml.automl: 01-31 05:20:44] {837} INFO - Minimizing error metric: 1-accuracy\n", - "[flaml.automl: 01-31 05:20:44] {857} INFO - List of ML learners in AutoML Run: ['lgbm', 'rf', 'xgboost']\n", - "[flaml.automl: 01-31 05:20:44] {916} INFO - iteration 0 current learner lgbm\n", - "[flaml.automl: 01-31 05:20:45] {1046} INFO - at 0.9s,\tbest lgbm's error=0.3771,\tbest lgbm's error=0.3771\n", - "[flaml.automl: 01-31 05:20:45] {916} INFO - iteration 1 current learner lgbm\n", - "[flaml.automl: 01-31 05:20:45] {1046} INFO - at 1.6s,\tbest lgbm's error=0.3771,\tbest lgbm's error=0.3771\n", - "[flaml.automl: 01-31 05:20:45] {916} INFO - iteration 2 current learner lgbm\n", - "[flaml.automl: 01-31 05:20:46] {1046} INFO - at 2.7s,\tbest lgbm's error=0.3751,\tbest lgbm's error=0.3751\n", - "[flaml.automl: 01-31 05:20:46] {916} INFO - iteration 3 current learner xgboost\n", - "[flaml.automl: 01-31 05:20:49] {1046} INFO - at 5.8s,\tbest xgboost's error=0.3753,\tbest lgbm's error=0.3751\n", - "[flaml.automl: 01-31 05:20:49] {916} INFO - iteration 4 current learner rf\n", - "[flaml.automl: 01-31 05:20:57] {1046} INFO - at 13.5s,\tbest rf's error=0.3850,\tbest lgbm's error=0.3751\n", - "[flaml.automl: 01-31 05:20:57] {916} INFO - iteration 5 current learner lgbm\n", - "[flaml.automl: 01-31 05:20:58] {1046} INFO - at 14.5s,\tbest lgbm's error=0.3751,\tbest lgbm's error=0.3751\n", - "[flaml.automl: 01-31 05:20:58] {916} INFO - iteration 6 current learner lgbm\n", - "[flaml.automl: 01-31 05:21:00] {1046} INFO - at 16.2s,\tbest lgbm's error=0.3558,\tbest lgbm's error=0.3558\n", - "[flaml.automl: 01-31 05:21:00] {916} INFO - iteration 7 current learner lgbm\n", - "[flaml.automl: 01-31 05:21:01] {1046} INFO - at 17.8s,\tbest lgbm's error=0.3492,\tbest lgbm's error=0.3492\n", - "[flaml.automl: 01-31 05:21:01] {916} INFO - iteration 8 current learner lgbm\n", - "[flaml.automl: 01-31 05:21:03] {1046} INFO - at 19.2s,\tbest lgbm's error=0.3492,\tbest lgbm's error=0.3492\n", - "[flaml.automl: 01-31 05:21:03] {916} INFO - iteration 9 current learner lgbm\n", - "[flaml.automl: 01-31 05:21:05] {1046} INFO - at 20.9s,\tbest lgbm's error=0.3470,\tbest lgbm's error=0.3470\n", - "[flaml.automl: 01-31 05:21:05] {916} INFO - iteration 10 current learner lgbm\n", - "[flaml.automl: 01-31 05:21:06] {1046} INFO - at 22.4s,\tbest lgbm's error=0.3470,\tbest lgbm's error=0.3470\n", - "[flaml.automl: 01-31 05:21:06] {916} INFO - iteration 11 current learner lgbm\n", - "[flaml.automl: 01-31 05:21:08] {1046} INFO - at 23.9s,\tbest lgbm's error=0.3470,\tbest lgbm's error=0.3470\n", - "[flaml.automl: 01-31 05:21:08] {916} INFO - iteration 12 current learner rf\n", - "[flaml.automl: 01-31 05:21:12] {1046} INFO - at 28.8s,\tbest rf's error=0.3843,\tbest lgbm's error=0.3470\n", - "[flaml.automl: 01-31 05:21:12] {916} INFO - iteration 13 current learner lgbm\n", - "[flaml.automl: 01-31 05:21:14] {1046} INFO - at 30.3s,\tbest lgbm's error=0.3470,\tbest lgbm's error=0.3470\n", - "[flaml.automl: 01-31 05:21:14] {916} INFO - iteration 14 current learner xgboost\n", - "[flaml.automl: 01-31 05:21:16] {1046} INFO - at 32.0s,\tbest xgboost's error=0.3753,\tbest lgbm's error=0.3470\n", - "[flaml.automl: 01-31 05:21:16] {916} INFO - iteration 15 current learner lgbm\n", - "[flaml.automl: 01-31 05:21:19] {1046} INFO - at 35.0s,\tbest lgbm's error=0.3412,\tbest lgbm's error=0.3412\n", - "[flaml.automl: 01-31 05:21:19] {916} INFO - iteration 16 current learner xgboost\n", - "[flaml.automl: 01-31 05:21:20] {1046} INFO - at 36.8s,\tbest xgboost's error=0.3753,\tbest lgbm's error=0.3412\n", - "[flaml.automl: 01-31 05:21:20] {916} INFO - iteration 17 current learner lgbm\n", - "[flaml.automl: 01-31 05:21:24] {1046} INFO - at 40.6s,\tbest lgbm's error=0.3374,\tbest lgbm's error=0.3374\n", - "[flaml.automl: 01-31 05:21:24] {916} INFO - iteration 18 current learner xgboost\n", - "[flaml.automl: 01-31 05:21:26] {1046} INFO - at 42.3s,\tbest xgboost's error=0.3750,\tbest lgbm's error=0.3374\n", - "[flaml.automl: 01-31 05:21:26] {916} INFO - iteration 19 current learner lgbm\n", - "[flaml.automl: 01-31 05:21:27] {1046} INFO - at 43.6s,\tbest lgbm's error=0.3374,\tbest lgbm's error=0.3374\n", - "[flaml.automl: 01-31 05:21:27] {916} INFO - iteration 20 current learner lgbm\n", - "[flaml.automl: 01-31 05:21:35] {1046} INFO - at 51.5s,\tbest lgbm's error=0.3311,\tbest lgbm's error=0.3311\n", - "[flaml.automl: 01-31 05:21:35] {916} INFO - iteration 21 current learner lgbm\n", - "[flaml.automl: 01-31 05:21:41] {1046} INFO - at 56.9s,\tbest lgbm's error=0.3311,\tbest lgbm's error=0.3311\n", - "[flaml.automl: 01-31 05:21:41] {916} INFO - iteration 22 current learner rf\n", - "[flaml.automl: 01-31 05:21:41] {1048} INFO - no enough budget for learner rf\n", - "[flaml.automl: 01-31 05:21:41] {916} INFO - iteration 23 current learner xgboost\n", - "[flaml.automl: 01-31 05:21:41] {1048} INFO - no enough budget for learner xgboost\n", - "[flaml.automl: 01-31 05:21:41] {1086} INFO - selected model: LGBMClassifier(colsample_bytree=0.9997863921359742,\n", - " learning_rate=0.1564464373197609, max_bin=511,\n", - " min_child_weight=7.427173668000723, n_estimators=18,\n", - " num_leaves=1846, objective='binary',\n", - " reg_alpha=6.349231150788211e-09, reg_lambda=0.8927146483558472)\n", - "[flaml.automl: 01-31 05:21:41] {871} INFO - fit succeeded\n" + "tric: 1-accuracy\n", + "[flaml.automl: 02-13 09:57:42] {879} INFO - List of ML learners in AutoML Run: ['lgbm', 'rf', 'catboost', 'xgboost', 'extra_tree', 'lrl1']\n", + "[flaml.automl: 02-13 09:57:42] {939} INFO - iteration 0 current learner lgbm\n", + "[flaml.automl: 02-13 09:57:43] {1087} INFO - at 0.5s,\tbest lgbm's error=0.3777,\tbest lgbm's error=0.3777\n", + "[flaml.automl: 02-13 09:57:43] {939} INFO - iteration 1 current learner lgbm\n", + "[flaml.automl: 02-13 09:57:43] {1087} INFO - at 1.2s,\tbest lgbm's error=0.3777,\tbest lgbm's error=0.3777\n", + "[flaml.automl: 02-13 09:57:43] {939} INFO - iteration 2 current learner lgbm\n", + "[flaml.automl: 02-13 09:57:43] {1087} INFO - at 1.3s,\tbest lgbm's error=0.3669,\tbest lgbm's error=0.3669\n", + "[flaml.automl: 02-13 09:57:43] {939} INFO - iteration 3 current learner lgbm\n", + "[flaml.automl: 02-13 09:57:43] {1087} INFO - at 1.4s,\tbest lgbm's error=0.3669,\tbest lgbm's error=0.3669\n", + "[flaml.automl: 02-13 09:57:43] {939} INFO - iteration 4 current learner lgbm\n", + "[flaml.automl: 02-13 09:57:44] {1087} INFO - at 1.5s,\tbest lgbm's error=0.3662,\tbest lgbm's error=0.3662\n", + "[flaml.automl: 02-13 09:57:44] {939} INFO - iteration 5 current learner lgbm\n", + "[flaml.automl: 02-13 09:57:44] {1087} INFO - at 1.7s,\tbest lgbm's error=0.3636,\tbest lgbm's error=0.3636\n", + "[flaml.automl: 02-13 09:57:44] {939} INFO - iteration 6 current learner lgbm\n", + "[flaml.automl: 02-13 09:57:44] {1087} INFO - at 1.9s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", + "[flaml.automl: 02-13 09:57:44] {939} INFO - iteration 7 current learner lgbm\n", + "[flaml.automl: 02-13 09:57:44] {1087} INFO - at 2.1s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", + "[flaml.automl: 02-13 09:57:44] {939} INFO - iteration 8 current learner lgbm\n", + "[flaml.automl: 02-13 09:57:44] {1087} INFO - at 2.2s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", + "[flaml.automl: 02-13 09:57:44] {939} INFO - iteration 9 current learner lgbm\n", + "[flaml.automl: 02-13 09:57:44] {1087} INFO - at 2.2s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", + "[flaml.automl: 02-13 09:57:44] {939} INFO - iteration 10 current learner lgbm\n", + "[flaml.automl: 02-13 09:57:44] {1087} INFO - at 2.3s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", + "[flaml.automl: 02-13 09:57:44] {939} INFO - iteration 11 current learner lgbm\n", + "[flaml.automl: 02-13 09:57:44] {1087} INFO - at 2.3s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", + "[flaml.automl: 02-13 09:57:44] {939} INFO - iteration 12 current learner lgbm\n", + "[flaml.automl: 02-13 09:57:44] {1087} INFO - at 2.5s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", + "[flaml.automl: 02-13 09:57:44] {939} INFO - iteration 13 current learner lgbm\n", + "[flaml.automl: 02-13 09:57:46] {1087} INFO - at 3.8s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", + "[flaml.automl: 02-13 09:57:46] {939} INFO - iteration 14 current learner xgboost\n", + "[flaml.automl: 02-13 09:57:46] {1087} INFO - at 3.9s,\tbest xgboost's error=0.3787,\tbest lgbm's error=0.3621\n", + "[flaml.automl: 02-13 09:57:46] {939} INFO - iteration 15 current learner xgboost\n", + "[flaml.automl: 02-13 09:57:46] {1087} INFO - at 3.9s,\tbest xgboost's error=0.3787,\tbest lgbm's error=0.3621\n", + "[flaml.automl: 02-13 09:57:46] {939} INFO - iteration 16 current learner lgbm\n", + "[flaml.automl: 02-13 09:57:47] {1087} INFO - at 4.7s,\tbest lgbm's error=0.3618,\tbest lgbm's error=0.3618\n", + "[flaml.automl: 02-13 09:57:47] {939} INFO - iteration 17 current learner xgboost\n", + "[flaml.automl: 02-13 09:57:47] {1087} INFO - at 4.9s,\tbest xgboost's error=0.3746,\tbest lgbm's error=0.3618\n", + "[flaml.automl: 02-13 09:57:47] {939} INFO - iteration 18 current learner extra_tree\n", + "[flaml.automl: 02-13 09:57:47] {1087} INFO - at 5.0s,\tbest extra_tree's error=0.4009,\tbest lgbm's error=0.3618\n", + "[flaml.automl: 02-13 09:57:47] {939} INFO - iteration 19 current learner extra_tree\n", + "[flaml.automl: 02-13 09:57:47] {1087} INFO - at 5.1s,\tbest extra_tree's error=0.4009,\tbest lgbm's error=0.3618\n", + "[flaml.automl: 02-13 09:57:47] {939} INFO - iteration 20 current learner extra_tree\n", + "[flaml.automl: 02-13 09:57:47] {1087} INFO - at 5.3s,\tbest extra_tree's error=0.3979,\tbest lgbm's error=0.3618\n", + "[flaml.automl: 02-13 09:57:47] {939} INFO - iteration 21 current learner rf\n", + "[flaml.automl: 02-13 09:57:47] {1087} INFO - at 5.5s,\tbest rf's error=0.4012,\tbest lgbm's error=0.3618\n", + "[flaml.automl: 02-13 09:57:47] {939} INFO - iteration 22 current learner rf\n", + "[flaml.automl: 02-13 09:57:48] {1087} INFO - at 5.7s,\tbest rf's error=0.4000,\tbest lgbm's error=0.3618\n", + "[flaml.automl: 02-13 09:57:48] {939} INFO - iteration 23 current learner rf\n", + "[flaml.automl: 02-13 09:57:48] {1087} INFO - at 5.9s,\tbest rf's error=0.4000,\tbest lgbm's error=0.3618\n", + "[flaml.automl: 02-13 09:57:48] {939} INFO - iteration 24 current learner xgboost\n", + "[flaml.automl: 02-13 09:57:48] {1087} INFO - at 6.0s,\tbest xgboost's error=0.3746,\tbest lgbm's error=0.3618\n", + "[flaml.automl: 02-13 09:57:48] {939} INFO - iteration 25 current learner extra_tree\n", + "[flaml.automl: 02-13 09:57:48] {1087} INFO - at 6.2s,\tbest extra_tree's error=0.3979,\tbest lgbm's error=0.3618\n", + "[flaml.automl: 02-13 09:57:48] {939} INFO - iteration 26 current learner rf\n", + "[flaml.automl: 02-13 09:57:48] {1087} INFO - at 6.5s,\tbest rf's error=0.4000,\tbest lgbm's error=0.3618\n", + "[flaml.automl: 02-13 09:57:48] {939} INFO - iteration 27 current learner xgboost\n", + "[flaml.automl: 02-13 09:57:49] {1087} INFO - at 6.7s,\tbest xgboost's error=0.3649,\tbest lgbm's error=0.3618\n", + "[flaml.automl: 02-13 09:57:49] {939} INFO - iteration 28 current learner xgboost\n", + "[flaml.automl: 02-13 09:57:49] {1087} INFO - at 6.8s,\tbest xgboost's error=0.3649,\tbest lgbm's error=0.3618\n", + "[flaml.automl: 02-13 09:57:49] {939} INFO - iteration 29 current learner xgboost\n", + "[flaml.automl: 02-13 09:57:49] {1087} INFO - at 7.0s,\tbest xgboost's error=0.3649,\tbest lgbm's error=0.3618\n", + "[flaml.automl: 02-13 09:57:49] {939} INFO - iteration 30 current learner lgbm\n", + "[flaml.automl: 02-13 09:57:50] {1087} INFO - at 7.9s,\tbest lgbm's error=0.3618,\tbest lgbm's error=0.3618\n", + "[flaml.automl: 02-13 09:57:50] {939} INFO - iteration 31 current learner lgbm\n", + "[flaml.automl: 02-13 09:57:52] {1087} INFO - at 9.5s,\tbest lgbm's error=0.3563,\tbest lgbm's error=0.3563\n", + "[flaml.automl: 02-13 09:57:52] {939} INFO - iteration 32 current learner lgbm\n", + "[flaml.automl: 02-13 09:57:53] {1087} INFO - at 10.7s,\tbest lgbm's error=0.3542,\tbest lgbm's error=0.3542\n", + "[flaml.automl: 02-13 09:57:53] {939} INFO - iteration 33 current learner xgboost\n", + "[flaml.automl: 02-13 09:57:53] {1087} INFO - at 11.1s,\tbest xgboost's error=0.3649,\tbest lgbm's error=0.3542\n", + "[flaml.automl: 02-13 09:57:53] {939} INFO - iteration 34 current learner lgbm\n", + "[flaml.automl: 02-13 09:57:56] {1087} INFO - at 14.2s,\tbest lgbm's error=0.3377,\tbest lgbm's error=0.3377\n", + "[flaml.automl: 02-13 09:57:56] {939} INFO - iteration 35 current learner catboost\n", + "[flaml.automl: 02-13 09:57:57] {1087} INFO - at 15.0s,\tbest catboost's error=0.3600,\tbest lgbm's error=0.3377\n", + "[flaml.automl: 02-13 09:57:57] {939} INFO - iteration 36 current learner catboost\n", + "[flaml.automl: 02-13 09:57:58] {1087} INFO - at 16.1s,\tbest catboost's error=0.3600,\tbest lgbm's error=0.3377\n", + "[flaml.automl: 02-13 09:57:58] {939} INFO - iteration 37 current learner xgboost\n", + "[flaml.automl: 02-13 09:57:58] {1087} INFO - at 16.4s,\tbest xgboost's error=0.3571,\tbest lgbm's error=0.3377\n", + "[flaml.automl: 02-13 09:57:58] {939} INFO - iteration 38 current learner catboost\n", + "[flaml.automl: 02-13 09:57:59] {1087} INFO - at 17.1s,\tbest catboost's error=0.3599,\tbest lgbm's error=0.3377\n", + "[flaml.automl: 02-13 09:57:59] {939} INFO - iteration 39 current learner xgboost\n", + "[flaml.automl: 02-13 09:57:59] {1087} INFO - at 17.3s,\tbest xgboost's error=0.3571,\tbest lgbm's error=0.3377\n", + "[flaml.automl: 02-13 09:57:59] {939} INFO - iteration 40 current learner lgbm\n", + "[flaml.automl: 02-13 09:58:02] {1087} INFO - at 20.2s,\tbest lgbm's error=0.3377,\tbest lgbm's error=0.3377\n", + "[flaml.automl: 02-13 09:58:02] {939} INFO - iteration 41 current learner xgboost\n", + "[flaml.automl: 02-13 09:58:02] {1087} INFO - at 20.3s,\tbest xgboost's error=0.3571,\tbest lgbm's error=0.3377\n", + "[flaml.automl: 02-13 09:58:02] {939} INFO - iteration 42 current learner xgboost\n", + "[flaml.automl: 02-13 09:58:03] {1087} INFO - at 20.7s,\tbest xgboost's error=0.3571,\tbest lgbm's error=0.3377\n", + "[flaml.automl: 02-13 09:58:03] {939} INFO - iteration 43 current learner lgbm\n", + "[flaml.automl: 02-13 09:58:06] {1087} INFO - at 23.8s,\tbest lgbm's error=0.3377,\tbest lgbm's error=0.3377\n", + "[flaml.automl: 02-13 09:58:06] {939} INFO - iteration 44 current learner xgboost\n", + "[flaml.automl: 02-13 09:58:06] {1087} INFO - at 23.9s,\tbest xgboost's error=0.3571,\tbest lgbm's error=0.3377\n", + "[flaml.automl: 02-13 09:58:06] {939} INFO - iteration 45 current learner extra_tree\n", + "[flaml.automl: 02-13 09:58:06] {1087} INFO - at 24.1s,\tbest extra_tree's error=0.3952,\tbest lgbm's error=0.3377\n", + "[flaml.automl: 02-13 09:58:06] {939} INFO - iteration 46 current learner xgboost\n", + "[flaml.automl: 02-13 09:58:06] {1087} INFO - at 24.3s,\tbest xgboost's error=0.3571,\tbest lgbm's error=0.3377\n", + "[flaml.automl: 02-13 09:58:06] {939} INFO - iteration 47 current learner lgbm\n", + "[flaml.automl: 02-13 09:58:08] {1087} INFO - at 25.7s,\tbest lgbm's error=0.3377,\tbest lgbm's error=0.3377\n", + "[flaml.automl: 02-13 09:58:08] {939} INFO - iteration 48 current learner xgboost\n", + "[flaml.automl: 02-13 09:58:08] {1087} INFO - at 26.0s,\tbest xgboost's error=0.3571,\tbest lgbm's error=0.3377\n", + "[flaml.automl: 02-13 09:58:08] {939} INFO - iteration 49 current learner lgbm\n", + "[flaml.automl: 02-13 09:58:10] {1087} INFO - at 28.4s,\tbest lgbm's error=0.3377,\tbest lgbm's error=0.3377\n", + "[flaml.automl: 02-13 09:58:10] {939} INFO - iteration 50 current learner xgboost\n", + "[flaml.automl: 02-13 09:58:11] {1087} INFO - at 28.9s,\tbest xgboost's error=0.3559,\tbest lgbm's error=0.3377\n", + "[flaml.automl: 02-13 09:58:11] {939} INFO - iteration 51 current learner extra_tree\n", + "[flaml.automl: 02-13 09:58:11] {1087} INFO - at 29.1s,\tbest extra_tree's error=0.3914,\tbest lgbm's error=0.3377\n", + "[flaml.automl: 02-13 09:58:11] {939} INFO - iteration 52 current learner lgbm\n", + "[flaml.automl: 02-13 09:58:12] {1087} INFO - at 30.6s,\tbest lgbm's error=0.3377,\tbest lgbm's error=0.3377\n", + "[flaml.automl: 02-13 09:58:12] {939} INFO - iteration 53 current learner lgbm\n", + "[flaml.automl: 02-13 09:58:17] {1087} INFO - at 35.2s,\tbest lgbm's error=0.3363,\tbest lgbm's error=0.3363\n", + "[flaml.automl: 02-13 09:58:17] {939} INFO - iteration 54 current learner lgbm\n", + "[flaml.automl: 02-13 09:58:24] {1087} INFO - at 42.2s,\tbest lgbm's error=0.3269,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:58:24] {939} INFO - iteration 55 current learner lgbm\n", + "[flaml.automl: 02-13 09:58:29] {1087} INFO - at 47.1s,\tbest lgbm's error=0.3269,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:58:29] {939} INFO - iteration 56 current learner extra_tree\n", + "[flaml.automl: 02-13 09:58:29] {1087} INFO - at 47.3s,\tbest extra_tree's error=0.3911,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:58:29] {939} INFO - iteration 57 current learner lgbm\n", + "[flaml.automl: 02-13 09:58:41] {1087} INFO - at 59.3s,\tbest lgbm's error=0.3269,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:58:41] {939} INFO - iteration 58 current learner lgbm\n", + "[flaml.automl: 02-13 09:58:52] {1087} INFO - at 69.7s,\tbest lgbm's error=0.3269,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:58:52] {939} INFO - iteration 59 current learner lrl1\n", + "[flaml.automl: 02-13 09:58:52] {1087} INFO - at 70.0s,\tbest lrl1's error=0.4338,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:58:52] {939} INFO - iteration 60 current learner lrl1\n", + "[flaml.automl: 02-13 09:58:52] {1087} INFO - at 70.3s,\tbest lrl1's error=0.4338,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:58:52] {939} INFO - iteration 61 current learner lgbm\n", + "[flaml.automl: 02-13 09:58:57] {1087} INFO - at 75.4s,\tbest lgbm's error=0.3269,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:58:57] {939} INFO - iteration 62 current learner rf\n", + "[flaml.automl: 02-13 09:58:58] {1087} INFO - at 75.8s,\tbest rf's error=0.3951,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:58:58] {939} INFO - iteration 63 current learner lgbm\n", + "[flaml.automl: 02-13 09:59:04] {1087} INFO - at 81.7s,\tbest lgbm's error=0.3269,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:04] {939} INFO - iteration 64 current learner rf\n", + "[flaml.automl: 02-13 09:59:04] {1087} INFO - at 82.5s,\tbest rf's error=0.3872,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:04] {939} INFO - iteration 65 current learner rf\n", + "[flaml.automl: 02-13 09:59:05] {1087} INFO - at 82.9s,\tbest rf's error=0.3872,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:05] {939} INFO - iteration 66 current learner lgbm\n", + "[flaml.automl: 02-13 09:59:24] {1087} INFO - at 102.0s,\tbest lgbm's error=0.3269,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:24] {939} INFO - iteration 67 current learner rf\n", + "[flaml.automl: 02-13 09:59:25] {1087} INFO - at 102.7s,\tbest rf's error=0.3872,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:25] {939} INFO - iteration 68 current learner xgboost\n", + "[flaml.automl: 02-13 09:59:25] {1087} INFO - at 103.1s,\tbest xgboost's error=0.3559,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:25] {939} INFO - iteration 69 current learner rf\n", + "[flaml.automl: 02-13 09:59:26] {1087} INFO - at 104.0s,\tbest rf's error=0.3839,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:26] {939} INFO - iteration 70 current learner lgbm\n", + "[flaml.automl: 02-13 09:59:28] {1087} INFO - at 106.5s,\tbest lgbm's error=0.3269,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:28] {939} INFO - iteration 71 current learner rf\n", + "[flaml.automl: 02-13 09:59:29] {1087} INFO - at 107.2s,\tbest rf's error=0.3839,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:29] {939} INFO - iteration 72 current learner xgboost\n", + "[flaml.automl: 02-13 09:59:30] {1087} INFO - at 108.2s,\tbest xgboost's error=0.3507,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:30] {939} INFO - iteration 73 current learner xgboost\n", + "[flaml.automl: 02-13 09:59:33] {1087} INFO - at 110.9s,\tbest xgboost's error=0.3507,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:33] {939} INFO - iteration 74 current learner extra_tree\n", + "[flaml.automl: 02-13 09:59:33] {1087} INFO - at 111.2s,\tbest extra_tree's error=0.3906,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:33] {939} INFO - iteration 75 current learner xgboost\n", + "[flaml.automl: 02-13 09:59:37] {1087} INFO - at 115.2s,\tbest xgboost's error=0.3507,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:37] {939} INFO - iteration 76 current learner extra_tree\n", + "[flaml.automl: 02-13 09:59:38] {1087} INFO - at 115.8s,\tbest extra_tree's error=0.3841,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:38] {939} INFO - iteration 77 current learner rf\n", + "[flaml.automl: 02-13 09:59:41] {1087} INFO - at 118.7s,\tbest rf's error=0.3795,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:41] {939} INFO - iteration 78 current learner rf\n", + "[flaml.automl: 02-13 09:59:44] {1087} INFO - at 122.1s,\tbest rf's error=0.3795,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:44] {939} INFO - iteration 79 current learner extra_tree\n", + "[flaml.automl: 02-13 09:59:45] {1087} INFO - at 122.8s,\tbest extra_tree's error=0.3841,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:45] {939} INFO - iteration 80 current learner xgboost\n", + "[flaml.automl: 02-13 09:59:50] {1087} INFO - at 128.3s,\tbest xgboost's error=0.3399,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:50] {939} INFO - iteration 81 current learner rf\n", + "[flaml.automl: 02-13 09:59:51] {1087} INFO - at 128.9s,\tbest rf's error=0.3795,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:51] {939} INFO - iteration 82 current learner extra_tree\n", + "[flaml.automl: 02-13 09:59:51] {1087} INFO - at 129.2s,\tbest extra_tree's error=0.3841,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:51] {939} INFO - iteration 83 current learner xgboost\n", + "[flaml.automl: 02-13 09:59:59] {1087} INFO - at 136.7s,\tbest xgboost's error=0.3333,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 09:59:59] {939} INFO - iteration 84 current learner extra_tree\n", + "[flaml.automl: 02-13 10:00:00] {1087} INFO - at 138.1s,\tbest extra_tree's error=0.3841,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 10:00:00] {939} INFO - iteration 85 current learner xgboost\n", + "[flaml.automl: 02-13 10:00:07] {1087} INFO - at 145.4s,\tbest xgboost's error=0.3333,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 10:00:07] {939} INFO - iteration 86 current learner extra_tree\n", + "[flaml.automl: 02-13 10:00:08] {1087} INFO - at 146.4s,\tbest extra_tree's error=0.3819,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 10:00:08] {939} INFO - iteration 87 current learner xgboost\n", + "[flaml.automl: 02-13 10:00:11] {1087} INFO - at 149.5s,\tbest xgboost's error=0.3333,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 10:00:11] {939} INFO - iteration 88 current learner xgboost\n", + "[flaml.automl: 02-13 10:00:24] {1087} INFO - at 161.9s,\tbest xgboost's error=0.3301,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 10:00:24] {939} INFO - iteration 89 current learner rf\n", + "[flaml.automl: 02-13 10:00:31] {1087} INFO - at 168.8s,\tbest rf's error=0.3795,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 10:00:31] {939} INFO - iteration 90 current learner lgbm\n", + "[flaml.automl: 02-13 10:00:50] {1087} INFO - at 187.8s,\tbest lgbm's error=0.3269,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 10:00:50] {939} INFO - iteration 91 current learner extra_tree\n", + "[flaml.automl: 02-13 10:00:50] {1087} INFO - at 188.4s,\tbest extra_tree's error=0.3819,\tbest lgbm's error=0.3269\n", + "[flaml.automl: 02-13 10:00:50] {939} INFO - iteration 92 current learner xgboost\n", + "[flaml.automl: 02-13 10:01:08] {1087} INFO - at 205.9s,\tbest xgboost's error=0.3261,\tbest xgboost's error=0.3261\n", + "[flaml.automl: 02-13 10:01:08] {939} INFO - iteration 93 current learner extra_tree\n", + "[flaml.automl: 02-13 10:01:08] {1087} INFO - at 206.4s,\tbest extra_tree's error=0.3818,\tbest xgboost's error=0.3261\n", + "[flaml.automl: 02-13 10:01:08] {939} INFO - iteration 94 current learner xgboost\n", + "[flaml.automl: 02-13 10:01:19] {1087} INFO - at 217.2s,\tbest xgboost's error=0.3261,\tbest xgboost's error=0.3261\n", + "[flaml.automl: 02-13 10:01:19] {939} INFO - iteration 95 current learner xgboost\n", + "[flaml.automl: 02-13 10:02:31] {1087} INFO - at 288.6s,\tbest xgboost's error=0.3261,\tbest xgboost's error=0.3261\n", + "[flaml.automl: 02-13 10:02:31] {939} INFO - iteration 96 current learner lgbm\n", + "[flaml.automl: 02-13 10:02:31] {1095} INFO - no enough budget for learner lgbm\n", + "[flaml.automl: 02-13 10:02:31] {939} INFO - iteration 97 current learner lrl1\n", + "[flaml.automl: 02-13 10:02:31] {1095} INFO - no enough budget for learner lrl1\n", + "[flaml.automl: 02-13 10:02:31] {939} INFO - iteration 98 current learner catboost\n", + "[flaml.automl: 02-13 10:02:31] {1095} INFO - no enough budget for learner catboost\n", + "[flaml.automl: 02-13 10:02:31] {939} INFO - iteration 99 current learner extra_tree\n", + "[flaml.automl: 02-13 10:02:31] {1095} INFO - no enough budget for learner extra_tree\n", + "[flaml.automl: 02-13 10:02:31] {939} INFO - iteration 100 current learner rf\n", + "[flaml.automl: 02-13 10:02:31] {1095} INFO - no enough budget for learner rf\n", + "[flaml.automl: 02-13 10:02:31] {1133} INFO - selected model: XGBClassifier(base_score=0.5, booster='gbtree',\n", + " colsample_bylevel=0.9319506749556234, colsample_bynode=1,\n", + " colsample_bytree=0.9855944254754091, gamma=0, gpu_id=-1,\n", + " grow_policy='lossguide', importance_type='gain',\n", + " interaction_constraints='', learning_rate=0.0632870888912315,\n", + " max_delta_step=0, max_depth=0, max_leaves=338,\n", + " min_child_weight=20.0, missing=nan, monotone_constraints='()',\n", + " n_estimators=363, n_jobs=-1, num_parallel_tree=1, random_state=0,\n", + " reg_alpha=2.434420183600625e-09, reg_lambda=0.20115461099818857,\n", + " scale_pos_weight=1, subsample=1.0, tree_method='hist',\n", + " validate_parameters=1, verbosity=0)\n", + "[flaml.automl: 02-13 10:02:31] {894} INFO - fit succeeded\n" ] } ], @@ -210,7 +487,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": { "slideshow": { "slide_type": "slide" @@ -222,7 +499,7 @@ "output_type": "stream", "name": "stdout", "text": [ - "Best ML leaner: lgbm\nBest hyperparmeter config: {'n_estimators': 18.0, 'max_leaves': 1846.0, 'min_child_weight': 7.427173668000723, 'learning_rate': 0.1564464373197609, 'subsample': 1.0, 'log_max_bin': 9.0, 'colsample_bytree': 0.9997863921359742, 'reg_alpha': 6.349231150788211e-09, 'reg_lambda': 0.8927146483558472}\nBest accuracy on validation data: 0.6689\nTraining duration of best run: 7.89 s\n" + "Best ML leaner: xgboost\nBest hyperparmeter config: {'n_estimators': 363.0, 'max_leaves': 338.0, 'min_child_weight': 20.0, 'learning_rate': 0.0632870888912315, 'subsample': 1.0, 'colsample_bylevel': 0.9319506749556234, 'colsample_bytree': 0.9855944254754091, 'reg_alpha': 2.434420183600625e-09, 'reg_lambda': 0.20115461099818857, 'FLAML_sample_size': 364083}\nBest accuracy on validation data: 0.6739\nTraining duration of best run: 17.47 s\n" ] } ], @@ -236,7 +513,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": { "slideshow": { "slide_type": "slide" @@ -247,15 +524,21 @@ "output_type": "execute_result", "data": { "text/plain": [ - "LGBMClassifier(colsample_bytree=0.9997863921359742,\n", - " learning_rate=0.1564464373197609, max_bin=511,\n", - " min_child_weight=7.427173668000723, n_estimators=18,\n", - " num_leaves=1846, objective='binary',\n", - " reg_alpha=6.349231150788211e-09, reg_lambda=0.8927146483558472)" + "XGBClassifier(base_score=0.5, booster='gbtree',\n", + " colsample_bylevel=0.9319506749556234, colsample_bynode=1,\n", + " colsample_bytree=0.9855944254754091, gamma=0, gpu_id=-1,\n", + " grow_policy='lossguide', importance_type='gain',\n", + " interaction_constraints='', learning_rate=0.0632870888912315,\n", + " max_delta_step=0, max_depth=0, max_leaves=338,\n", + " min_child_weight=20.0, missing=nan, monotone_constraints='()',\n", + " n_estimators=363, n_jobs=-1, num_parallel_tree=1, random_state=0,\n", + " reg_alpha=2.434420183600625e-09, reg_lambda=0.20115461099818857,\n", + " scale_pos_weight=1, subsample=1.0, tree_method='hist',\n", + " validate_parameters=1, verbosity=0)" ] }, "metadata": {}, - "execution_count": 6 + "execution_count": 7 } ], "source": [ @@ -264,7 +547,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": { "slideshow": { "slide_type": "slide" @@ -280,7 +563,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": { "slideshow": { "slide_type": "slide" @@ -306,7 +589,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": { "slideshow": { "slide_type": "slide" @@ -318,10 +601,7 @@ "output_type": "stream", "name": "stdout", "text": [ - "accuracy = 0.6681918633107397\n", - "roc_auc = 0.7208412179342409\n", - "log_loss = 0.6064652793713222\n", - "f1 = 0.5838518559855651\n" + "accuracy = 0.6720332824110467\nroc_auc = 0.7259621721565456\nlog_loss = 0.6027446810363773\nf1 = 0.5927978859557856\n" ] } ], @@ -342,12 +622,14 @@ } }, "source": [ + "See Section 4 for an accuracy comparison with default LightGBM and XGBoost.\n", + "\n", "### Log history" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": { "slideshow": { "slide_type": "subslide" @@ -359,7 +641,7 @@ "output_type": "stream", "name": "stdout", "text": [ - "{'Current Learner': 'lgbm', 'Current Sample': 364083, 'Current Hyper-parameters': {'n_estimators': 4, 'max_leaves': 4, 'min_child_weight': 20.0, 'learning_rate': 0.1, 'subsample': 1.0, 'log_max_bin': 8, 'colsample_bytree': 1.0, 'reg_alpha': 1e-10, 'reg_lambda': 1.0}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 4, 'max_leaves': 4, 'min_child_weight': 20.0, 'learning_rate': 0.1, 'subsample': 1.0, 'log_max_bin': 8, 'colsample_bytree': 1.0, 'reg_alpha': 1e-10, 'reg_lambda': 1.0}}\n{'Current Learner': 'lgbm', 'Current Sample': 364083, 'Current Hyper-parameters': {'n_estimators': 4.0, 'max_leaves': 4.0, 'min_child_weight': 20.0, 'learning_rate': 0.46335414315327306, 'subsample': 0.9339389930838808, 'log_max_bin': 10.0, 'colsample_bytree': 0.9904286645657556, 'reg_alpha': 2.841147337412889e-10, 'reg_lambda': 0.12000833497054482}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 4.0, 'max_leaves': 4.0, 'min_child_weight': 20.0, 'learning_rate': 0.46335414315327306, 'subsample': 0.9339389930838808, 'log_max_bin': 10.0, 'colsample_bytree': 0.9904286645657556, 'reg_alpha': 2.841147337412889e-10, 'reg_lambda': 0.12000833497054482}}\n{'Current Learner': 'lgbm', 'Current Sample': 364083, 'Current Hyper-parameters': {'n_estimators': 23.0, 'max_leaves': 4.0, 'min_child_weight': 20.0, 'learning_rate': 1.0, 'subsample': 0.9917683183663918, 'log_max_bin': 10.0, 'colsample_bytree': 0.9858892907525497, 'reg_alpha': 3.8783982645515837e-10, 'reg_lambda': 0.36607431863072826}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 23.0, 'max_leaves': 4.0, 'min_child_weight': 20.0, 'learning_rate': 1.0, 'subsample': 0.9917683183663918, 'log_max_bin': 10.0, 'colsample_bytree': 0.9858892907525497, 'reg_alpha': 3.8783982645515837e-10, 'reg_lambda': 0.36607431863072826}}\n{'Current Learner': 'lgbm', 'Current Sample': 364083, 'Current Hyper-parameters': {'n_estimators': 11.0, 'max_leaves': 17.0, 'min_child_weight': 14.947587304572773, 'learning_rate': 0.6092558236172073, 'subsample': 0.9659256891661986, 'log_max_bin': 10.0, 'colsample_bytree': 1.0, 'reg_alpha': 3.816590663384559e-08, 'reg_lambda': 0.4482946615262561}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 11.0, 'max_leaves': 17.0, 'min_child_weight': 14.947587304572773, 'learning_rate': 0.6092558236172073, 'subsample': 0.9659256891661986, 'log_max_bin': 10.0, 'colsample_bytree': 1.0, 'reg_alpha': 3.816590663384559e-08, 'reg_lambda': 0.4482946615262561}}\n{'Current Learner': 'lgbm', 'Current Sample': 364083, 'Current Hyper-parameters': {'n_estimators': 7.0, 'max_leaves': 51.0, 'min_child_weight': 20.0, 'learning_rate': 0.8834537640176922, 'subsample': 1.0, 'log_max_bin': 10.0, 'colsample_bytree': 0.9837052481490312, 'reg_alpha': 4.482246955743696e-08, 'reg_lambda': 0.028657570201141073}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 7.0, 'max_leaves': 51.0, 'min_child_weight': 20.0, 'learning_rate': 0.8834537640176922, 'subsample': 1.0, 'log_max_bin': 10.0, 'colsample_bytree': 0.9837052481490312, 'reg_alpha': 4.482246955743696e-08, 'reg_lambda': 0.028657570201141073}}\n{'Current Learner': 'lgbm', 'Current Sample': 364083, 'Current Hyper-parameters': {'n_estimators': 15.0, 'max_leaves': 165.0, 'min_child_weight': 11.09973081317571, 'learning_rate': 1.0, 'subsample': 0.9847553005974036, 'log_max_bin': 9.0, 'colsample_bytree': 0.9508927355861483, 'reg_alpha': 2.031936014930936e-06, 'reg_lambda': 0.00624701632609755}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 15.0, 'max_leaves': 165.0, 'min_child_weight': 11.09973081317571, 'learning_rate': 1.0, 'subsample': 0.9847553005974036, 'log_max_bin': 9.0, 'colsample_bytree': 0.9508927355861483, 'reg_alpha': 2.031936014930936e-06, 'reg_lambda': 0.00624701632609755}}\n{'Current Learner': 'lgbm', 'Current Sample': 364083, 'Current Hyper-parameters': {'n_estimators': 6.0, 'max_leaves': 1073.0, 'min_child_weight': 5.630999649172112, 'learning_rate': 0.32864729892819683, 'subsample': 1.0, 'log_max_bin': 10.0, 'colsample_bytree': 0.99236562733598, 'reg_alpha': 1.978160373587824e-09, 'reg_lambda': 1.0}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 6.0, 'max_leaves': 1073.0, 'min_child_weight': 5.630999649172112, 'learning_rate': 0.32864729892819683, 'subsample': 1.0, 'log_max_bin': 10.0, 'colsample_bytree': 0.99236562733598, 'reg_alpha': 1.978160373587824e-09, 'reg_lambda': 1.0}}\n{'Current Learner': 'lgbm', 'Current Sample': 364083, 'Current Hyper-parameters': {'n_estimators': 18.0, 'max_leaves': 1846.0, 'min_child_weight': 7.427173668000723, 'learning_rate': 0.1564464373197609, 'subsample': 1.0, 'log_max_bin': 9.0, 'colsample_bytree': 0.9997863921359742, 'reg_alpha': 6.349231150788211e-09, 'reg_lambda': 0.8927146483558472}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 18.0, 'max_leaves': 1846.0, 'min_child_weight': 7.427173668000723, 'learning_rate': 0.1564464373197609, 'subsample': 1.0, 'log_max_bin': 9.0, 'colsample_bytree': 0.9997863921359742, 'reg_alpha': 6.349231150788211e-09, 'reg_lambda': 0.8927146483558472}}\n" + "{'Current Learner': 'lgbm', 'Current Sample': 10000, 'Current Hyper-parameters': {'n_estimators': 4, 'max_leaves': 4, 'min_child_weight': 20.0, 'learning_rate': 0.1, 'subsample': 1.0, 'log_max_bin': 8, 'colsample_bytree': 1.0, 'reg_alpha': 1e-10, 'reg_lambda': 1.0, 'FLAML_sample_size': 10000}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 4, 'max_leaves': 4, 'min_child_weight': 20.0, 'learning_rate': 0.1, 'subsample': 1.0, 'log_max_bin': 8, 'colsample_bytree': 1.0, 'reg_alpha': 1e-10, 'reg_lambda': 1.0, 'FLAML_sample_size': 10000}}\n{'Current Learner': 'lgbm', 'Current Sample': 10000, 'Current Hyper-parameters': {'n_estimators': 4.0, 'max_leaves': 4.0, 'min_child_weight': 20.0, 'learning_rate': 0.46335414315327306, 'subsample': 0.9339389930838808, 'log_max_bin': 10.0, 'colsample_bytree': 0.9904286645657556, 'reg_alpha': 2.841147337412889e-10, 'reg_lambda': 0.12000833497054482, 'FLAML_sample_size': 10000}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 4.0, 'max_leaves': 4.0, 'min_child_weight': 20.0, 'learning_rate': 0.46335414315327306, 'subsample': 0.9339389930838808, 'log_max_bin': 10.0, 'colsample_bytree': 0.9904286645657556, 'reg_alpha': 2.841147337412889e-10, 'reg_lambda': 0.12000833497054482, 'FLAML_sample_size': 10000}}\n{'Current Learner': 'lgbm', 'Current Sample': 10000, 'Current Hyper-parameters': {'n_estimators': 23.0, 'max_leaves': 4.0, 'min_child_weight': 20.0, 'learning_rate': 1.0, 'subsample': 0.9917683183663918, 'log_max_bin': 10.0, 'colsample_bytree': 0.9858892907525497, 'reg_alpha': 3.8783982645515837e-10, 'reg_lambda': 0.36607431863072826, 'FLAML_sample_size': 10000}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 23.0, 'max_leaves': 4.0, 'min_child_weight': 20.0, 'learning_rate': 1.0, 'subsample': 0.9917683183663918, 'log_max_bin': 10.0, 'colsample_bytree': 0.9858892907525497, 'reg_alpha': 3.8783982645515837e-10, 'reg_lambda': 0.36607431863072826, 'FLAML_sample_size': 10000}}\n{'Current Learner': 'lgbm', 'Current Sample': 10000, 'Current Hyper-parameters': {'n_estimators': 11.0, 'max_leaves': 17.0, 'min_child_weight': 14.947587304572773, 'learning_rate': 0.6092558236172073, 'subsample': 0.9659256891661986, 'log_max_bin': 10.0, 'colsample_bytree': 1.0, 'reg_alpha': 3.816590663384559e-08, 'reg_lambda': 0.4482946615262561, 'FLAML_sample_size': 10000}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 11.0, 'max_leaves': 17.0, 'min_child_weight': 14.947587304572773, 'learning_rate': 0.6092558236172073, 'subsample': 0.9659256891661986, 'log_max_bin': 10.0, 'colsample_bytree': 1.0, 'reg_alpha': 3.816590663384559e-08, 'reg_lambda': 0.4482946615262561, 'FLAML_sample_size': 10000}}\n{'Current Learner': 'lgbm', 'Current Sample': 10000, 'Current Hyper-parameters': {'n_estimators': 6.0, 'max_leaves': 4.0, 'min_child_weight': 2.776007506782275, 'learning_rate': 0.7179196339383696, 'subsample': 0.8746997476758036, 'log_max_bin': 9.0, 'colsample_bytree': 1.0, 'reg_alpha': 9.69511928836042e-10, 'reg_lambda': 0.17744769739709204, 'FLAML_sample_size': 10000}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 6.0, 'max_leaves': 4.0, 'min_child_weight': 2.776007506782275, 'learning_rate': 0.7179196339383696, 'subsample': 0.8746997476758036, 'log_max_bin': 9.0, 'colsample_bytree': 1.0, 'reg_alpha': 9.69511928836042e-10, 'reg_lambda': 0.17744769739709204, 'FLAML_sample_size': 10000}}\n{'Current Learner': 'lgbm', 'Current Sample': 364083, 'Current Hyper-parameters': {'n_estimators': 4.0, 'max_leaves': 12.0, 'min_child_weight': 1.0757027869964557, 'learning_rate': 0.450276708780562, 'subsample': 0.9006357480496961, 'log_max_bin': 10.0, 'colsample_bytree': 1.0, 'reg_alpha': 1e-10, 'reg_lambda': 1.0, 'FLAML_sample_size': 364083}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 4.0, 'max_leaves': 12.0, 'min_child_weight': 1.0757027869964557, 'learning_rate': 0.450276708780562, 'subsample': 0.9006357480496961, 'log_max_bin': 10.0, 'colsample_bytree': 1.0, 'reg_alpha': 1e-10, 'reg_lambda': 1.0, 'FLAML_sample_size': 364083}}\n{'Current Learner': 'lgbm', 'Current Sample': 364083, 'Current Hyper-parameters': {'n_estimators': 12.0, 'max_leaves': 21.0, 'min_child_weight': 1.4188300323104601, 'learning_rate': 0.21434585687003363, 'subsample': 0.96058565726185, 'log_max_bin': 9.0, 'colsample_bytree': 1.0, 'reg_alpha': 3.209664512322882e-10, 'reg_lambda': 0.8927146483558472, 'FLAML_sample_size': 364083}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 12.0, 'max_leaves': 21.0, 'min_child_weight': 1.4188300323104601, 'learning_rate': 0.21434585687003363, 'subsample': 0.96058565726185, 'log_max_bin': 9.0, 'colsample_bytree': 1.0, 'reg_alpha': 3.209664512322882e-10, 'reg_lambda': 0.8927146483558472, 'FLAML_sample_size': 364083}}\n{'Current Learner': 'lgbm', 'Current Sample': 364083, 'Current Hyper-parameters': {'n_estimators': 4.0, 'max_leaves': 33.0, 'min_child_weight': 2.124277220000237, 'learning_rate': 0.6104117418606608, 'subsample': 0.8953865349615586, 'log_max_bin': 10.0, 'colsample_bytree': 0.9549508919646192, 'reg_alpha': 1.775430936881156e-08, 'reg_lambda': 1.0, 'FLAML_sample_size': 364083}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 4.0, 'max_leaves': 33.0, 'min_child_weight': 2.124277220000237, 'learning_rate': 0.6104117418606608, 'subsample': 0.8953865349615586, 'log_max_bin': 10.0, 'colsample_bytree': 0.9549508919646192, 'reg_alpha': 1.775430936881156e-08, 'reg_lambda': 1.0, 'FLAML_sample_size': 364083}}\n{'Current Learner': 'lgbm', 'Current Sample': 364083, 'Current Hyper-parameters': {'n_estimators': 14.0, 'max_leaves': 207.0, 'min_child_weight': 5.096453108920863, 'learning_rate': 0.31631252713344904, 'subsample': 0.9433718793194579, 'log_max_bin': 10.0, 'colsample_bytree': 0.9950430045845675, 'reg_alpha': 1e-10, 'reg_lambda': 1.0, 'FLAML_sample_size': 364083}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 14.0, 'max_leaves': 207.0, 'min_child_weight': 5.096453108920863, 'learning_rate': 0.31631252713344904, 'subsample': 0.9433718793194579, 'log_max_bin': 10.0, 'colsample_bytree': 0.9950430045845675, 'reg_alpha': 1e-10, 'reg_lambda': 1.0, 'FLAML_sample_size': 364083}}\n{'Current Learner': 'lgbm', 'Current Sample': 364083, 'Current Hyper-parameters': {'n_estimators': 31.0, 'max_leaves': 809.0, 'min_child_weight': 18.922277448271377, 'learning_rate': 0.0572324550115096, 'subsample': 0.9695636894945154, 'log_max_bin': 10.0, 'colsample_bytree': 0.9817199261897989, 'reg_alpha': 1.112259151174658e-10, 'reg_lambda': 1.0, 'FLAML_sample_size': 364083}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 31.0, 'max_leaves': 809.0, 'min_child_weight': 18.922277448271377, 'learning_rate': 0.0572324550115096, 'subsample': 0.9695636894945154, 'log_max_bin': 10.0, 'colsample_bytree': 0.9817199261897989, 'reg_alpha': 1.112259151174658e-10, 'reg_lambda': 1.0, 'FLAML_sample_size': 364083}}\n{'Current Learner': 'lgbm', 'Current Sample': 364083, 'Current Hyper-parameters': {'n_estimators': 62.0, 'max_leaves': 721.0, 'min_child_weight': 20.0, 'learning_rate': 0.11571885450381766, 'subsample': 1.0, 'log_max_bin': 8.0, 'colsample_bytree': 0.9806374300599766, 'reg_alpha': 1e-10, 'reg_lambda': 0.20115461099818857, 'FLAML_sample_size': 364083}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 62.0, 'max_leaves': 721.0, 'min_child_weight': 20.0, 'learning_rate': 0.11571885450381766, 'subsample': 1.0, 'log_max_bin': 8.0, 'colsample_bytree': 0.9806374300599766, 'reg_alpha': 1e-10, 'reg_lambda': 0.20115461099818857, 'FLAML_sample_size': 364083}}\n" ] } ], @@ -374,7 +656,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": { "slideshow": { "slide_type": "slide" @@ -385,8 +667,8 @@ "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", - "image/png": "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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" }, "metadata": { "needs_background": "light" @@ -450,7 +732,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 13, "metadata": { "slideshow": { "slide_type": "slide" @@ -555,7 +837,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 14, "metadata": { "slideshow": { "slide_type": "slide" @@ -569,7 +851,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 15, "metadata": { "slideshow": { "slide_type": "slide" @@ -581,121 +863,123 @@ "output_type": "stream", "name": "stderr", "text": [ - "[flaml.automl: 01-31 05:28:44] {816} INFO - Evaluation method: holdout\n", - "[flaml.automl: 01-31 05:28:45] {541} INFO - Using StratifiedKFold\n", - "[flaml.automl: 01-31 05:28:45] {837} INFO - Minimizing error metric: 1-accuracy\n", - "[flaml.automl: 01-31 05:28:45] {857} INFO - List of ML learners in AutoML Run: ['RGF', 'lgbm', 'rf', 'xgboost']\n", - "[flaml.automl: 01-31 05:28:45] {916} INFO - iteration 0 current learner RGF\n", - "[flaml.automl: 01-31 05:28:46] {1046} INFO - at 1.2s,\tbest RGF's error=0.3787,\tbest RGF's error=0.3787\n", - "[flaml.automl: 01-31 05:28:46] {916} INFO - iteration 1 current learner RGF\n", - "[flaml.automl: 01-31 05:28:46] {1046} INFO - at 2.1s,\tbest RGF's error=0.3787,\tbest RGF's error=0.3787\n", - "[flaml.automl: 01-31 05:28:46] {916} INFO - iteration 2 current learner lgbm\n", - "[flaml.automl: 01-31 05:28:47] {1046} INFO - at 2.2s,\tbest lgbm's error=0.3777,\tbest lgbm's error=0.3777\n", - "[flaml.automl: 01-31 05:28:47] {916} INFO - iteration 3 current learner lgbm\n", - "[flaml.automl: 01-31 05:28:47] {1046} INFO - at 2.3s,\tbest lgbm's error=0.3777,\tbest lgbm's error=0.3777\n", - "[flaml.automl: 01-31 05:28:47] {916} INFO - iteration 4 current learner RGF\n", - "[flaml.automl: 01-31 05:28:47] {1046} INFO - at 3.1s,\tbest RGF's error=0.3787,\tbest lgbm's error=0.3777\n", - "[flaml.automl: 01-31 05:28:47] {916} INFO - iteration 5 current learner lgbm\n", - "[flaml.automl: 01-31 05:28:47] {1046} INFO - at 3.1s,\tbest lgbm's error=0.3669,\tbest lgbm's error=0.3669\n", - "[flaml.automl: 01-31 05:28:47] {916} INFO - iteration 6 current learner lgbm\n", - "[flaml.automl: 01-31 05:28:48] {1046} INFO - at 3.2s,\tbest lgbm's error=0.3669,\tbest lgbm's error=0.3669\n", - "[flaml.automl: 01-31 05:28:48] {916} INFO - iteration 7 current learner lgbm\n", - "[flaml.automl: 01-31 05:28:48] {1046} INFO - at 3.3s,\tbest lgbm's error=0.3662,\tbest lgbm's error=0.3662\n", - "[flaml.automl: 01-31 05:28:48] {916} INFO - iteration 8 current learner lgbm\n", - "[flaml.automl: 01-31 05:28:48] {1046} INFO - at 3.3s,\tbest lgbm's error=0.3636,\tbest lgbm's error=0.3636\n", - "[flaml.automl: 01-31 05:28:48] {916} INFO - iteration 9 current learner lgbm\n", - "[flaml.automl: 01-31 05:28:48] {1046} INFO - at 3.4s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", - "[flaml.automl: 01-31 05:28:48] {916} INFO - iteration 10 current learner lgbm\n", - "[flaml.automl: 01-31 05:28:48] {1046} INFO - at 3.5s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", - "[flaml.automl: 01-31 05:28:48] {916} INFO - iteration 11 current learner lgbm\n", - "[flaml.automl: 01-31 05:28:48] {1046} INFO - at 3.5s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", - "[flaml.automl: 01-31 05:28:48] {916} INFO - iteration 12 current learner lgbm\n", - "[flaml.automl: 01-31 05:28:48] {1046} INFO - at 3.6s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", - "[flaml.automl: 01-31 05:28:48] {916} INFO - iteration 13 current learner lgbm\n", - "[flaml.automl: 01-31 05:28:48] {1046} INFO - at 3.7s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", - "[flaml.automl: 01-31 05:28:48] {916} INFO - iteration 14 current learner lgbm\n", - "[flaml.automl: 01-31 05:28:48] {1046} INFO - at 3.7s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", - "[flaml.automl: 01-31 05:28:48] {916} INFO - iteration 15 current learner lgbm\n", - "[flaml.automl: 01-31 05:28:48] {1046} INFO - at 3.9s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", - "[flaml.automl: 01-31 05:28:48] {916} INFO - iteration 16 current learner RGF\n", - "[flaml.automl: 01-31 05:28:49] {1046} INFO - at 4.8s,\tbest RGF's error=0.3719,\tbest lgbm's error=0.3621\n", - "[flaml.automl: 01-31 05:28:49] {916} INFO - iteration 17 current learner lgbm\n", - "[flaml.automl: 01-31 05:28:50] {1046} INFO - at 5.9s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", - "[flaml.automl: 01-31 05:28:50] {916} INFO - iteration 18 current learner xgboost\n", - "[flaml.automl: 01-31 05:28:50] {1046} INFO - at 5.9s,\tbest xgboost's error=0.3768,\tbest lgbm's error=0.3621\n", - "[flaml.automl: 01-31 05:28:50] {916} INFO - iteration 19 current learner xgboost\n", - "[flaml.automl: 01-31 05:28:50] {1046} INFO - at 6.0s,\tbest xgboost's error=0.3768,\tbest lgbm's error=0.3621\n", - "[flaml.automl: 01-31 05:28:50] {916} INFO - iteration 20 current learner xgboost\n", - "[flaml.automl: 01-31 05:28:50] {1046} INFO - at 6.0s,\tbest xgboost's error=0.3768,\tbest lgbm's error=0.3621\n", - "[flaml.automl: 01-31 05:28:50] {916} INFO - iteration 21 current learner xgboost\n", - "[flaml.automl: 01-31 05:28:50] {1046} INFO - at 6.1s,\tbest xgboost's error=0.3768,\tbest lgbm's error=0.3621\n", - "[flaml.automl: 01-31 05:28:50] {916} INFO - iteration 22 current learner xgboost\n", - "[flaml.automl: 01-31 05:28:51] {1046} INFO - at 6.2s,\tbest xgboost's error=0.3621,\tbest lgbm's error=0.3621\n", - "[flaml.automl: 01-31 05:28:51] {916} INFO - iteration 23 current learner xgboost\n", - "[flaml.automl: 01-31 05:28:51] {1046} INFO - at 6.3s,\tbest xgboost's error=0.3621,\tbest lgbm's error=0.3621\n", - "[flaml.automl: 01-31 05:28:51] {916} INFO - iteration 24 current learner xgboost\n", - "[flaml.automl: 01-31 05:28:51] {1046} INFO - at 6.4s,\tbest xgboost's error=0.3621,\tbest lgbm's error=0.3621\n", - "[flaml.automl: 01-31 05:28:51] {916} INFO - iteration 25 current learner xgboost\n", - "[flaml.automl: 01-31 05:28:51] {1046} INFO - at 6.5s,\tbest xgboost's error=0.3621,\tbest lgbm's error=0.3621\n", - "[flaml.automl: 01-31 05:28:51] {916} INFO - iteration 26 current learner xgboost\n", - "[flaml.automl: 01-31 05:28:51] {1046} INFO - at 6.6s,\tbest xgboost's error=0.3621,\tbest lgbm's error=0.3621\n", - "[flaml.automl: 01-31 05:28:51] {916} INFO - iteration 27 current learner xgboost\n", - "[flaml.automl: 01-31 05:28:51] {1046} INFO - at 6.8s,\tbest xgboost's error=0.3611,\tbest xgboost's error=0.3611\n", - "[flaml.automl: 01-31 05:28:51] {916} INFO - iteration 28 current learner xgboost\n", - "[flaml.automl: 01-31 05:28:51] {1046} INFO - at 7.1s,\tbest xgboost's error=0.3611,\tbest xgboost's error=0.3611\n", - "[flaml.automl: 01-31 05:28:51] {916} INFO - iteration 29 current learner lgbm\n", - "[flaml.automl: 01-31 05:28:52] {1046} INFO - at 7.9s,\tbest lgbm's error=0.3618,\tbest xgboost's error=0.3611\n", - "[flaml.automl: 01-31 05:28:52] {916} INFO - iteration 30 current learner RGF\n", - "[flaml.automl: 01-31 05:28:53] {1046} INFO - at 8.9s,\tbest RGF's error=0.3719,\tbest xgboost's error=0.3611\n", - "[flaml.automl: 01-31 05:28:53] {916} INFO - iteration 31 current learner xgboost\n", - "[flaml.automl: 01-31 05:28:54] {1046} INFO - at 9.3s,\tbest xgboost's error=0.3611,\tbest xgboost's error=0.3611\n", - "[flaml.automl: 01-31 05:28:54] {916} INFO - iteration 32 current learner xgboost\n", - "[flaml.automl: 01-31 05:28:54] {1046} INFO - at 10.0s,\tbest xgboost's error=0.3523,\tbest xgboost's error=0.3523\n", - "[flaml.automl: 01-31 05:28:54] {916} INFO - iteration 33 current learner xgboost\n", - "[flaml.automl: 01-31 05:28:55] {1046} INFO - at 10.6s,\tbest xgboost's error=0.3523,\tbest xgboost's error=0.3523\n", - "[flaml.automl: 01-31 05:28:55] {916} INFO - iteration 34 current learner xgboost\n", - "[flaml.automl: 01-31 05:28:56] {1046} INFO - at 11.5s,\tbest xgboost's error=0.3523,\tbest xgboost's error=0.3523\n", - "[flaml.automl: 01-31 05:28:56] {916} INFO - iteration 35 current learner xgboost\n", - "[flaml.automl: 01-31 05:28:58] {1046} INFO - at 13.2s,\tbest xgboost's error=0.3503,\tbest xgboost's error=0.3503\n", - "[flaml.automl: 01-31 05:28:58] {916} INFO - iteration 36 current learner rf\n", - "[flaml.automl: 01-31 05:28:58] {1046} INFO - at 13.8s,\tbest rf's error=0.4023,\tbest xgboost's error=0.3503\n", - "[flaml.automl: 01-31 05:28:58] {916} INFO - iteration 37 current learner rf\n", - "[flaml.automl: 01-31 05:28:59] {1046} INFO - at 14.2s,\tbest rf's error=0.4011,\tbest xgboost's error=0.3503\n", - "[flaml.automl: 01-31 05:28:59] {916} INFO - iteration 38 current learner xgboost\n", - "[flaml.automl: 01-31 05:28:59] {1046} INFO - at 15.0s,\tbest xgboost's error=0.3503,\tbest xgboost's error=0.3503\n", - "[flaml.automl: 01-31 05:28:59] {916} INFO - iteration 39 current learner xgboost\n", - "[flaml.automl: 01-31 05:29:03] {1046} INFO - at 18.2s,\tbest xgboost's error=0.3503,\tbest xgboost's error=0.3503\n", - "[flaml.automl: 01-31 05:29:03] {916} INFO - iteration 40 current learner xgboost\n", - "[flaml.automl: 01-31 05:29:06] {1046} INFO - at 21.2s,\tbest xgboost's error=0.3503,\tbest xgboost's error=0.3503\n", - "[flaml.automl: 01-31 05:29:06] {916} INFO - iteration 41 current learner xgboost\n", - "[flaml.automl: 01-31 05:29:08] {1046} INFO - at 23.4s,\tbest xgboost's error=0.3503,\tbest xgboost's error=0.3503\n", - "[flaml.automl: 01-31 05:29:08] {916} INFO - iteration 42 current learner RGF\n", - "[flaml.automl: 01-31 05:29:09] {1046} INFO - at 24.5s,\tbest RGF's error=0.3719,\tbest xgboost's error=0.3503\n", - "[flaml.automl: 01-31 05:29:09] {916} INFO - iteration 43 current learner xgboost\n", - "[flaml.automl: 01-31 05:29:18] {1046} INFO - at 33.6s,\tbest xgboost's error=0.3408,\tbest xgboost's error=0.3408\n", - "[flaml.automl: 01-31 05:29:18] {916} INFO - iteration 44 current learner xgboost\n", - "[flaml.automl: 01-31 05:29:32] {1046} INFO - at 47.3s,\tbest xgboost's error=0.3345,\tbest xgboost's error=0.3345\n", - "[flaml.automl: 01-31 05:29:32] {916} INFO - iteration 45 current learner rf\n", - "[flaml.automl: 01-31 05:29:32] {1046} INFO - at 47.7s,\tbest rf's error=0.4011,\tbest xgboost's error=0.3345\n", - "[flaml.automl: 01-31 05:29:32] {916} INFO - iteration 46 current learner RGF\n", - "[flaml.automl: 01-31 05:29:32] {1048} INFO - no enough budget for learner RGF\n", - "[flaml.automl: 01-31 05:29:32] {916} INFO - iteration 47 current learner rf\n", - "[flaml.automl: 01-31 05:29:32] {1048} INFO - no enough budget for learner rf\n", - "[flaml.automl: 01-31 05:29:32] {916} INFO - iteration 48 current learner lgbm\n", - "[flaml.automl: 01-31 05:29:32] {1048} INFO - no enough budget for learner lgbm\n", - "[flaml.automl: 01-31 05:29:32] {1086} INFO - selected model: XGBClassifier(base_score=0.5, booster='gbtree',\n", - " colsample_bylevel=0.9421222097860765, colsample_bynode=1,\n", - " colsample_bytree=0.9986336418953021, gamma=0, gpu_id=-1,\n", - " grow_policy='lossguide', importance_type='gain',\n", - " interaction_constraints=None, learning_rate=0.16476442995703428,\n", - " max_delta_step=0, max_depth=0, max_leaves=85,\n", - " min_child_weight=2.8366848012228014, missing=nan,\n", - " monotone_constraints=None, n_estimators=84, n_jobs=-1,\n", - " num_parallel_tree=1, random_state=0,\n", - " reg_alpha=5.566263839755687e-07, reg_lambda=0.6128658162970646,\n", - " scale_pos_weight=1, subsample=0.978338719375802,\n", - " tree_method='hist', validate_parameters=False, verbosity=0)\n", - "[flaml.automl: 01-31 05:29:32] {871} INFO - fit succeeded\n" + "[flaml.automl: 02-13 10:02:42] {839} INFO - Evaluation method: holdout\n", + "[flaml.automl: 02-13 10:02:42] {564} INFO - Using StratifiedKFold\n", + "[flaml.automl: 02-13 10:02:42] {860} INFO - Minimizing error metric: 1-accuracy\n", + "[flaml.automl: 02-13 10:02:42] {879} INFO - List of ML learners in AutoML Run: ['RGF', 'lgbm', 'rf', 'xgboost']\n", + "[flaml.automl: 02-13 10:02:42] {939} INFO - iteration 0 current learner RGF\n", + "[flaml.automl: 02-13 10:02:45] {1087} INFO - at 2.7s,\tbest RGF's error=0.3787,\tbest RGF's error=0.3787\n", + "[flaml.automl: 02-13 10:02:45] {939} INFO - iteration 1 current learner RGF\n", + "[flaml.automl: 02-13 10:02:46] {1087} INFO - at 4.5s,\tbest RGF's error=0.3787,\tbest RGF's error=0.3787\n", + "[flaml.automl: 02-13 10:02:46] {939} INFO - iteration 2 current learner RGF\n", + "[flaml.automl: 02-13 10:02:48] {1087} INFO - at 6.1s,\tbest RGF's error=0.3787,\tbest RGF's error=0.3787\n", + "[flaml.automl: 02-13 10:02:48] {939} INFO - iteration 3 current learner lgbm\n", + "[flaml.automl: 02-13 10:02:48] {1087} INFO - at 6.1s,\tbest lgbm's error=0.3777,\tbest lgbm's error=0.3777\n", + "[flaml.automl: 02-13 10:02:48] {939} INFO - iteration 4 current learner RGF\n", + "[flaml.automl: 02-13 10:02:50] {1087} INFO - at 7.8s,\tbest RGF's error=0.3709,\tbest RGF's error=0.3709\n", + "[flaml.automl: 02-13 10:02:50] {939} INFO - iteration 5 current learner lgbm\n", + "[flaml.automl: 02-13 10:02:50] {1087} INFO - at 8.1s,\tbest lgbm's error=0.3777,\tbest RGF's error=0.3709\n", + "[flaml.automl: 02-13 10:02:50] {939} INFO - iteration 6 current learner lgbm\n", + "[flaml.automl: 02-13 10:02:50] {1087} INFO - at 8.2s,\tbest lgbm's error=0.3669,\tbest lgbm's error=0.3669\n", + "[flaml.automl: 02-13 10:02:50] {939} INFO - iteration 7 current learner lgbm\n", + "[flaml.automl: 02-13 10:02:50] {1087} INFO - at 8.5s,\tbest lgbm's error=0.3669,\tbest lgbm's error=0.3669\n", + "[flaml.automl: 02-13 10:02:50] {939} INFO - iteration 8 current learner lgbm\n", + "[flaml.automl: 02-13 10:02:50] {1087} INFO - at 8.6s,\tbest lgbm's error=0.3662,\tbest lgbm's error=0.3662\n", + "[flaml.automl: 02-13 10:02:50] {939} INFO - iteration 9 current learner lgbm\n", + "[flaml.automl: 02-13 10:02:51] {1087} INFO - at 8.9s,\tbest lgbm's error=0.3636,\tbest lgbm's error=0.3636\n", + "[flaml.automl: 02-13 10:02:51] {939} INFO - iteration 10 current learner lgbm\n", + "[flaml.automl: 02-13 10:02:51] {1087} INFO - at 9.2s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", + "[flaml.automl: 02-13 10:02:51] {939} INFO - iteration 11 current learner lgbm\n", + "[flaml.automl: 02-13 10:02:51] {1087} INFO - at 9.5s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", + "[flaml.automl: 02-13 10:02:51] {939} INFO - iteration 12 current learner lgbm\n", + "[flaml.automl: 02-13 10:02:51] {1087} INFO - at 9.6s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", + "[flaml.automl: 02-13 10:02:51] {939} INFO - iteration 13 current learner lgbm\n", + "[flaml.automl: 02-13 10:02:51] {1087} INFO - at 9.8s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", + "[flaml.automl: 02-13 10:02:51] {939} INFO - iteration 14 current learner lgbm\n", + "[flaml.automl: 02-13 10:02:52] {1087} INFO - at 9.9s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", + "[flaml.automl: 02-13 10:02:52] {939} INFO - iteration 15 current learner lgbm\n", + "[flaml.automl: 02-13 10:02:52] {1087} INFO - at 10.2s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", + "[flaml.automl: 02-13 10:02:52] {939} INFO - iteration 16 current learner RGF\n", + "[flaml.automl: 02-13 10:02:54] {1087} INFO - at 12.0s,\tbest RGF's error=0.3709,\tbest lgbm's error=0.3621\n", + "[flaml.automl: 02-13 10:02:54] {939} INFO - iteration 17 current learner lgbm\n", + "[flaml.automl: 02-13 10:02:55] {1087} INFO - at 13.7s,\tbest lgbm's error=0.3621,\tbest lgbm's error=0.3621\n", + "[flaml.automl: 02-13 10:02:55] {939} INFO - iteration 18 current learner lgbm\n", + "[flaml.automl: 02-13 10:02:57] {1087} INFO - at 15.0s,\tbest lgbm's error=0.3611,\tbest lgbm's error=0.3611\n", + "[flaml.automl: 02-13 10:02:57] {939} INFO - iteration 19 current learner lgbm\n", + "[flaml.automl: 02-13 10:02:58] {1087} INFO - at 16.3s,\tbest lgbm's error=0.3585,\tbest lgbm's error=0.3585\n", + "[flaml.automl: 02-13 10:02:58] {939} INFO - iteration 20 current learner lgbm\n", + "[flaml.automl: 02-13 10:03:00] {1087} INFO - at 17.9s,\tbest lgbm's error=0.3585,\tbest lgbm's error=0.3585\n", + "[flaml.automl: 02-13 10:03:00] {939} INFO - iteration 21 current learner lgbm\n", + "[flaml.automl: 02-13 10:03:02] {1087} INFO - at 20.1s,\tbest lgbm's error=0.3531,\tbest lgbm's error=0.3531\n", + "[flaml.automl: 02-13 10:03:02] {939} INFO - iteration 22 current learner lgbm\n", + "[flaml.automl: 02-13 10:03:03] {1087} INFO - at 21.5s,\tbest lgbm's error=0.3522,\tbest lgbm's error=0.3522\n", + "[flaml.automl: 02-13 10:03:03] {939} INFO - iteration 23 current learner lgbm\n", + "[flaml.automl: 02-13 10:03:07] {1087} INFO - at 25.4s,\tbest lgbm's error=0.3359,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:07] {939} INFO - iteration 24 current learner lgbm\n", + "[flaml.automl: 02-13 10:03:11] {1087} INFO - at 29.7s,\tbest lgbm's error=0.3359,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:11] {939} INFO - iteration 25 current learner xgboost\n", + "[flaml.automl: 02-13 10:03:11] {1087} INFO - at 29.7s,\tbest xgboost's error=0.3787,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:11] {939} INFO - iteration 26 current learner xgboost\n", + "[flaml.automl: 02-13 10:03:11] {1087} INFO - at 29.8s,\tbest xgboost's error=0.3787,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:11] {939} INFO - iteration 27 current learner xgboost\n", + "[flaml.automl: 02-13 10:03:12] {1087} INFO - at 29.8s,\tbest xgboost's error=0.3746,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:12] {939} INFO - iteration 28 current learner xgboost\n", + "[flaml.automl: 02-13 10:03:12] {1087} INFO - at 29.9s,\tbest xgboost's error=0.3746,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:12] {939} INFO - iteration 29 current learner lgbm\n", + "[flaml.automl: 02-13 10:03:16] {1087} INFO - at 34.8s,\tbest lgbm's error=0.3359,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:16] {939} INFO - iteration 30 current learner lgbm\n", + "[flaml.automl: 02-13 10:03:18] {1087} INFO - at 36.4s,\tbest lgbm's error=0.3359,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:18] {939} INFO - iteration 31 current learner lgbm\n", + "[flaml.automl: 02-13 10:03:22] {1087} INFO - at 40.2s,\tbest lgbm's error=0.3359,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:22] {939} INFO - iteration 32 current learner xgboost\n", + "[flaml.automl: 02-13 10:03:22] {1087} INFO - at 40.4s,\tbest xgboost's error=0.3649,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:22] {939} INFO - iteration 33 current learner xgboost\n", + "[flaml.automl: 02-13 10:03:22] {1087} INFO - at 40.5s,\tbest xgboost's error=0.3649,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:22] {939} INFO - iteration 34 current learner xgboost\n", + "[flaml.automl: 02-13 10:03:22] {1087} INFO - at 40.5s,\tbest xgboost's error=0.3649,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:22] {939} INFO - iteration 35 current learner xgboost\n", + "[flaml.automl: 02-13 10:03:22] {1087} INFO - at 40.6s,\tbest xgboost's error=0.3649,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:22] {939} INFO - iteration 36 current learner xgboost\n", + "[flaml.automl: 02-13 10:03:23] {1087} INFO - at 40.8s,\tbest xgboost's error=0.3571,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:23] {939} INFO - iteration 37 current learner xgboost\n", + "[flaml.automl: 02-13 10:03:23] {1087} INFO - at 40.9s,\tbest xgboost's error=0.3571,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:23] {939} INFO - iteration 38 current learner xgboost\n", + "[flaml.automl: 02-13 10:03:23] {1087} INFO - at 41.1s,\tbest xgboost's error=0.3571,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:23] {939} INFO - iteration 39 current learner xgboost\n", + "[flaml.automl: 02-13 10:03:23] {1087} INFO - at 41.4s,\tbest xgboost's error=0.3571,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:23] {939} INFO - iteration 40 current learner rf\n", + "[flaml.automl: 02-13 10:03:23] {1087} INFO - at 41.6s,\tbest rf's error=0.4002,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:23] {939} INFO - iteration 41 current learner rf\n", + "[flaml.automl: 02-13 10:03:23] {1087} INFO - at 41.7s,\tbest rf's error=0.4002,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:23] {939} INFO - iteration 42 current learner rf\n", + "[flaml.automl: 02-13 10:03:24] {1087} INFO - at 42.0s,\tbest rf's error=0.3977,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:24] {939} INFO - iteration 43 current learner xgboost\n", + "[flaml.automl: 02-13 10:03:24] {1087} INFO - at 42.1s,\tbest xgboost's error=0.3571,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:24] {939} INFO - iteration 44 current learner xgboost\n", + "[flaml.automl: 02-13 10:03:24] {1087} INFO - at 42.6s,\tbest xgboost's error=0.3559,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:24] {939} INFO - iteration 45 current learner rf\n", + "[flaml.automl: 02-13 10:03:25] {1087} INFO - at 42.8s,\tbest rf's error=0.3977,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:25] {939} INFO - iteration 46 current learner lgbm\n", + "[flaml.automl: 02-13 10:03:26] {1087} INFO - at 44.6s,\tbest lgbm's error=0.3359,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:26] {939} INFO - iteration 47 current learner rf\n", + "[flaml.automl: 02-13 10:03:27] {1087} INFO - at 44.9s,\tbest rf's error=0.3904,\tbest lgbm's error=0.3359\n", + "[flaml.automl: 02-13 10:03:27] {939} INFO - iteration 48 current learner lgbm\n", + "[flaml.automl: 02-13 10:03:35] {1087} INFO - at 53.4s,\tbest lgbm's error=0.3336,\tbest lgbm's error=0.3336\n", + "[flaml.automl: 02-13 10:03:35] {939} INFO - iteration 49 current learner rf\n", + "[flaml.automl: 02-13 10:03:35] {1087} INFO - at 53.7s,\tbest rf's error=0.3904,\tbest lgbm's error=0.3336\n", + "[flaml.automl: 02-13 10:03:35] {939} INFO - iteration 50 current learner xgboost\n", + "[flaml.automl: 02-13 10:03:35] {1095} INFO - no enough budget for learner xgboost\n", + "[flaml.automl: 02-13 10:03:35] {939} INFO - iteration 51 current learner rf\n", + "[flaml.automl: 02-13 10:03:35] {1095} INFO - no enough budget for learner rf\n", + "[flaml.automl: 02-13 10:03:35] {939} INFO - iteration 52 current learner RGF\n", + "[flaml.automl: 02-13 10:03:35] {1095} INFO - no enough budget for learner RGF\n", + "[flaml.automl: 02-13 10:03:35] {1133} INFO - selected model: LGBMClassifier(colsample_bytree=0.9817199261897989,\n", + " learning_rate=0.04177273970377335, max_bin=1023,\n", + " min_child_weight=18.922277448271377, n_estimators=31,\n", + " num_leaves=1771, objective='binary',\n", + " reg_alpha=1.112259151174658e-10, reg_lambda=1.0,\n", + " subsample=0.9695636894945154)\n", + "[flaml.automl: 02-13 10:03:35] {894} INFO - fit succeeded\n" ] } ], @@ -713,15 +997,160 @@ "'''The main flaml automl API'''\n", "automl.fit(X_train = X_train, y_train = y_train, **settings)" ] + }, + { + "source": [ + "## 4. Comparison with alternatives\n", + "\n", + "### FLAML's accuracy" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "flaml accuracy = 0.6720332824110467\n" + ] + } + ], + "source": [ + "print('flaml accuracy', '=', 1 - sklearn_metric_loss_score('accuracy', y_pred, y_test))" + ] + }, + { + "source": [ + "### Default LightGBM" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "from lightgbm import LGBMClassifier\n", + "lgbm = LGBMClassifier()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "LGBMClassifier()" + ] + }, + "metadata": {}, + "execution_count": 18 + } + ], + "source": [ + "lgbm.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "default lgbm accuracy = 0.6602346380315323\n" + ] + } + ], + "source": [ + "y_pred = lgbm.predict(X_test)\n", + "from flaml.ml import sklearn_metric_loss_score\n", + "print('default lgbm accuracy', '=', 1 - sklearn_metric_loss_score('accuracy', y_pred, y_test))" + ] + }, + { + "source": [ + "### Default XGBoost" + ], + "cell_type": "markdown", + "metadata": {} + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "from xgboost import XGBClassifier\n", + "xgb = XGBClassifier()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n", + " colsample_bynode=1, colsample_bytree=1, gamma=0, gpu_id=-1,\n", + " importance_type='gain', interaction_constraints='',\n", + " learning_rate=0.300000012, max_delta_step=0, max_depth=6,\n", + " min_child_weight=1, missing=nan, monotone_constraints='()',\n", + " n_estimators=100, n_jobs=0, num_parallel_tree=1, random_state=0,\n", + " reg_alpha=0, reg_lambda=1, scale_pos_weight=1, subsample=1,\n", + " tree_method='exact', validate_parameters=1, verbosity=None)" + ] + }, + "metadata": {}, + "execution_count": 21 + } + ], + "source": [ + "xgb.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "default xgboost accuracy = 0.6676060098186078\n" + ] + } + ], + "source": [ + "y_pred = xgb.predict(X_test)\n", + "from flaml.ml import sklearn_metric_loss_score\n", + "print('default xgboost accuracy', '=', 1 - sklearn_metric_loss_score('accuracy', y_pred, y_test))" + ] } ], "metadata": { "kernelspec": { "name": "python3", - "display_name": "Python 3.7.7 64-bit ('flaml': conda)", + "display_name": "Python 3.8.0 64-bit ('blend': conda)", "metadata": { "interpreter": { - "hash": "bfcd9a6a9254a5e160761a1fd7a9e444f011592c6770d9f4180dde058a9df5dd" + "hash": "0cfea3304185a9579d09e0953576b57c8581e46e6ebc6dfeb681bc5a511f7544" } } }, @@ -735,7 +1164,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.7-final" + "version": "3.8.0-final" } }, "nbformat": 4, diff --git a/notebook/transformers_requirements.txt b/notebook/transformers_requirements.txt deleted file mode 100644 index 9e1b3466b..000000000 --- a/notebook/transformers_requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -torch -transformers -datasets -ipywidgets \ No newline at end of file diff --git a/setup.py b/setup.py index 47d8b2898..0a2aba41e 100644 --- a/setup.py +++ b/setup.py @@ -20,7 +20,6 @@ install_requires = [ "scipy>=1.4.1", "catboost>=0.23", "scikit-learn>=0.23.2", - "optuna==2.3.0" ], @@ -48,6 +47,10 @@ setuptools.setup( "coverage>=5.3", "xgboost<1.3", "rgf-python", + "optuna==2.3.0", + ], + "blendsearch": [ + "optuna==2.3.0" ], "ray": [ "ray[tune]==1.1.0", diff --git a/test/test_pytorch_cifar10.py b/test/test_pytorch_cifar10.py index a7460594e..7841e2d93 100644 --- a/test/test_pytorch_cifar10.py +++ b/test/test_pytorch_cifar10.py @@ -1,3 +1,5 @@ +'''Require: pip install torchvision ray +''' import unittest import os import time diff --git a/test/test_tune.py b/test/test_tune.py index 6c9c9e828..50f92d29e 100644 --- a/test/test_tune.py +++ b/test/test_tune.py @@ -1,5 +1,6 @@ +'''Require: pip install flaml[test,ray] +''' import unittest -import os import time from sklearn.model_selection import train_test_split import sklearn.metrics @@ -138,6 +139,7 @@ def _test_xgboost(method='BlendSearch'): scheduler=scheduler, search_alg=algo) ray.shutdown() # # Load the best model checkpoint + # import os # best_bst = xgb.Booster() # best_bst.load_model(os.path.join(analysis.best_checkpoint, # "model.xgb"))