{
"cells": [
{
"cell_type": "markdown",
"id": "e4793ef5",
"metadata": {},
"source": [
"# Ensembles\n",
"\n",
"[](https://mybinder.org/v2/gh/etna-team/etna/master?filepath=examples/203-ensembles.ipynb)"
]
},
{
"cell_type": "markdown",
"id": "4949ce7f",
"metadata": {},
"source": [
"This notebook contains the simple examples of using the ensemble models with ETNA library.\n",
"\n",
"**Table of contents**\n",
"\n",
"* [Loading dataset](#chapter1) \n",
"* [Building pipelines](#chapter2)\n",
"* [Ensembles](#chapter3)\n",
" * [VotingEnsemble](#section_3_1)\n",
" * [StackingEnsamble](#section_3_2)\n",
" * [Results](#section_3_3)"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "7b9df4dc",
"metadata": {},
"outputs": [],
"source": [
"import warnings\n",
"\n",
"warnings.filterwarnings(\"ignore\")"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "37e118e3",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"\n",
"from etna.datasets import TSDataset\n",
"from etna.metrics import MAE\n",
"from etna.metrics import MAPE\n",
"from etna.metrics import MSE\n",
"from etna.metrics import SMAPE\n",
"from etna.models import CatBoostMultiSegmentModel\n",
"from etna.models import NaiveModel\n",
"from etna.models import SeasonalMovingAverageModel\n",
"from etna.pipeline import Pipeline\n",
"from etna.transforms import LagTransform"
]
},
{
"cell_type": "markdown",
"id": "f82360d8",
"metadata": {},
"source": [
"## 1. Loading dataset \n",
"\n",
"In this notebook we will work with the dataset contains only one segment with monthly wine sales. Working process with the dataset containing more segments will be absolutely the same."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "01e2fcee",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df = pd.read_csv(\"data/monthly-australian-wine-sales.csv\")\n",
"df[\"timestamp\"] = pd.to_datetime(df[\"month\"])\n",
"df[\"target\"] = df[\"sales\"]\n",
"df.drop(columns=[\"month\", \"sales\"], inplace=True)\n",
"df[\"segment\"] = \"main\"\n",
"ts = TSDataset(df=df, freq=\"MS\")\n",
"ts.plot()"
]
},
{
"cell_type": "markdown",
"id": "c879183c",
"metadata": {},
"source": [
"## 2. Building pipelines \n",
"\n",
"Given the sales' history, we want to select the best model(pipeline) to forecast future sales."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "0ee58fa6",
"metadata": {},
"outputs": [],
"source": [
"HORIZON = 3\n",
"N_FOLDS = 5"
]
},
{
"cell_type": "markdown",
"id": "b6815f49",
"metadata": {},
"source": [
"Let's build four pipelines using the different models"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "f0dc26e4",
"metadata": {},
"outputs": [],
"source": [
"naive_pipeline = Pipeline(model=NaiveModel(lag=12), transforms=[], horizon=HORIZON)\n",
"seasonalma_pipeline = Pipeline(\n",
" model=SeasonalMovingAverageModel(window=5, seasonality=12),\n",
" transforms=[],\n",
" horizon=HORIZON,\n",
")\n",
"catboost_pipeline = Pipeline(\n",
" model=CatBoostMultiSegmentModel(),\n",
" transforms=[LagTransform(lags=[6, 7, 8, 9, 10, 11, 12], in_column=\"target\")],\n",
" horizon=HORIZON,\n",
")\n",
"pipeline_names = [\"naive\", \"moving average\", \"catboost\"]\n",
"pipelines = [naive_pipeline, seasonalma_pipeline, catboost_pipeline]"
]
},
{
"cell_type": "markdown",
"id": "106e3885",
"metadata": {},
"source": [
"And evaluate their performance on the backtest"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "53c1a0b9",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[Parallel(n_jobs=5)]: Using backend MultiprocessingBackend with 5 concurrent workers.\n",
"[Parallel(n_jobs=5)]: Done 1 tasks | elapsed: 9.8s\n",
"[Parallel(n_jobs=5)]: Done 2 out of 5 | elapsed: 18.9s remaining: 28.3s\n",
"[Parallel(n_jobs=5)]: Done 3 out of 5 | elapsed: 28.4s remaining: 18.9s\n",
"[Parallel(n_jobs=5)]: Done 5 out of 5 | elapsed: 45.9s finished\n",
"[Parallel(n_jobs=5)]: Using backend MultiprocessingBackend with 5 concurrent workers.\n",
"[Parallel(n_jobs=5)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=5)]: Done 2 out of 5 | elapsed: 0.0s remaining: 0.0s\n",
"[Parallel(n_jobs=5)]: Done 3 out of 5 | elapsed: 0.0s remaining: 0.0s\n",
"[Parallel(n_jobs=5)]: Done 5 out of 5 | elapsed: 0.0s finished\n",
"[Parallel(n_jobs=5)]: Using backend MultiprocessingBackend with 5 concurrent workers.\n",
"[Parallel(n_jobs=5)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=5)]: Done 2 out of 5 | elapsed: 0.0s remaining: 0.0s\n",
"[Parallel(n_jobs=5)]: Done 3 out of 5 | elapsed: 0.0s remaining: 0.0s\n",
"[Parallel(n_jobs=5)]: Done 5 out of 5 | elapsed: 0.0s finished\n",
"[Parallel(n_jobs=5)]: Using backend MultiprocessingBackend with 5 concurrent workers.\n",
"[Parallel(n_jobs=5)]: Done 1 tasks | elapsed: 9.0s\n",
"[Parallel(n_jobs=5)]: Done 2 out of 5 | elapsed: 16.2s remaining: 24.3s\n",
"[Parallel(n_jobs=5)]: Done 3 out of 5 | elapsed: 24.1s remaining: 16.1s\n",
"[Parallel(n_jobs=5)]: Done 5 out of 5 | elapsed: 38.7s finished\n",
"[Parallel(n_jobs=5)]: Using backend MultiprocessingBackend with 5 concurrent workers.\n",
"[Parallel(n_jobs=5)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=5)]: Done 2 out of 5 | elapsed: 0.0s remaining: 0.0s\n",
"[Parallel(n_jobs=5)]: Done 3 out of 5 | elapsed: 0.0s remaining: 0.0s\n",
"[Parallel(n_jobs=5)]: Done 5 out of 5 | elapsed: 0.0s finished\n",
"[Parallel(n_jobs=5)]: Using backend MultiprocessingBackend with 5 concurrent workers.\n",
"[Parallel(n_jobs=5)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=5)]: Done 2 out of 5 | elapsed: 0.0s remaining: 0.0s\n",
"[Parallel(n_jobs=5)]: Done 3 out of 5 | elapsed: 0.0s remaining: 0.0s\n",
"[Parallel(n_jobs=5)]: Done 5 out of 5 | elapsed: 0.0s finished\n",
"[Parallel(n_jobs=5)]: Using backend MultiprocessingBackend with 5 concurrent workers.\n",
"[Parallel(n_jobs=5)]: Done 1 tasks | elapsed: 9.4s\n",
"[Parallel(n_jobs=5)]: Done 2 out of 5 | elapsed: 18.1s remaining: 27.2s\n",
"[Parallel(n_jobs=5)]: Done 3 out of 5 | elapsed: 26.4s remaining: 17.6s\n",
"[Parallel(n_jobs=5)]: Done 5 out of 5 | elapsed: 42.7s finished\n",
"[Parallel(n_jobs=5)]: Using backend MultiprocessingBackend with 5 concurrent workers.\n",
"[Parallel(n_jobs=5)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=5)]: Done 2 out of 5 | elapsed: 0.0s remaining: 0.1s\n",
"[Parallel(n_jobs=5)]: Done 3 out of 5 | elapsed: 0.0s remaining: 0.0s\n",
"[Parallel(n_jobs=5)]: Done 5 out of 5 | elapsed: 0.0s finished\n",
"[Parallel(n_jobs=5)]: Using backend MultiprocessingBackend with 5 concurrent workers.\n",
"[Parallel(n_jobs=5)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=5)]: Done 2 out of 5 | elapsed: 0.0s remaining: 0.0s\n",
"[Parallel(n_jobs=5)]: Done 3 out of 5 | elapsed: 0.0s remaining: 0.0s\n",
"[Parallel(n_jobs=5)]: Done 5 out of 5 | elapsed: 0.0s finished\n"
]
}
],
"source": [
"metrics = []\n",
"for pipeline in pipelines:\n",
" metrics.append(\n",
" pipeline.backtest(\n",
" ts=ts,\n",
" metrics=[MAE(), MSE(), SMAPE(), MAPE()],\n",
" n_folds=N_FOLDS,\n",
" aggregate_metrics=True,\n",
" n_jobs=5,\n",
" )[\"metrics\"].iloc[:, 1:]\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "928e04bd",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" MAE | \n",
" MSE | \n",
" SMAPE | \n",
" MAPE | \n",
"
\n",
" \n",
" \n",
" \n",
" | naive | \n",
" 2437.466667 | \n",
" 1.089199e+07 | \n",
" 9.949886 | \n",
" 10.222106 | \n",
"
\n",
" \n",
" | moving average | \n",
" 1913.826667 | \n",
" 6.113701e+06 | \n",
" 7.897570 | \n",
" 7.824056 | \n",
"
\n",
" \n",
" | catboost | \n",
" 2271.766726 | \n",
" 8.923741e+06 | \n",
" 9.376638 | \n",
" 10.013138 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" MAE MSE SMAPE MAPE\n",
"naive 2437.466667 1.089199e+07 9.949886 10.222106\n",
"moving average 1913.826667 6.113701e+06 7.897570 7.824056\n",
"catboost 2271.766726 8.923741e+06 9.376638 10.013138"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"metrics = pd.concat(metrics)\n",
"metrics.index = pipeline_names\n",
"metrics"
]
},
{
"cell_type": "markdown",
"id": "b9581f2a",
"metadata": {},
"source": [
"## 3. Ensembles \n",
"To improve the performance of the individual models, we can try to make ensembles out of them. Our library contains two ensembling methods, which we will try on now."
]
},
{
"cell_type": "markdown",
"id": "f0e7e3e6",
"metadata": {},
"source": [
"### 3.1 `VotingEnsemble` \n",
"\n",
"`VotingEnsemble` forecasts future values with weighted averaging of it's `pipelines` forecasts."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "5338aeea",
"metadata": {},
"outputs": [],
"source": [
"from etna.ensembles import VotingEnsemble"
]
},
{
"cell_type": "markdown",
"id": "9f7ee7db",
"metadata": {},
"source": [
"By default, `VotingEnsemble` uses **uniform** weights for the pipelines' forecasts. However, you can specify the weights manually using the `weights` parameter. The higher weight the more you trust the base model. In addition, you can set `weights` with the literal `auto`. In this case, the weights of pipelines are assigned with the importances got from `feature_importance_` property of `regressor`.\n",
"\n",
"*Note*: The `weights` are automatically normalized."
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "1c4029fc",
"metadata": {},
"outputs": [],
"source": [
"voting_ensemble = VotingEnsemble(pipelines=pipelines, weights=[1, 9, 4], n_jobs=4)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "f1cb83b8",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 8.8s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 27.2s finished\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 27.3s\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 10.3s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 29.2s finished\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 56.5s\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 10.3s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 29.4s finished\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 1.4min\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 9.9s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 28.4s finished\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 1.9min\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 9.7s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 30.3s finished\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 2.4min\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 2.4min\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 10.6s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 30.7s finished\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 30.8s\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 10.4s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 30.7s finished\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 1.0min\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 10.9s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 32.4s finished\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 1.6min\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 11.4s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 32.1s finished\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 2.1min\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 16.2s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 45.0s finished\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 2.9min\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 2.9min\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.1s\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" MAE | \n",
" MSE | \n",
" SMAPE | \n",
" MAPE | \n",
"
\n",
" \n",
" \n",
" \n",
" | voting ensemble | \n",
" 1972.207943 | \n",
" 6.685831e+06 | \n",
" 8.172377 | \n",
" 8.299714 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" MAE MSE SMAPE MAPE\n",
"voting ensemble 1972.207943 6.685831e+06 8.172377 8.299714"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"voting_ensamble_metrics = voting_ensemble.backtest(\n",
" ts=ts,\n",
" metrics=[MAE(), MSE(), SMAPE(), MAPE()],\n",
" n_folds=N_FOLDS,\n",
" aggregate_metrics=True,\n",
" n_jobs=1,\n",
")[\"metrics\"].iloc[:, 1:]\n",
"voting_ensamble_metrics.index = [\"voting ensemble\"]\n",
"voting_ensamble_metrics"
]
},
{
"cell_type": "markdown",
"id": "a26b503b",
"metadata": {},
"source": [
"### 3.2 `StackingEnsemble` \n",
"`StackingEnsemble` forecasts future using the metamodel to combine the forecasts of it's `pipelines`."
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "78c46663",
"metadata": {},
"outputs": [],
"source": [
"from etna.ensembles import StackingEnsemble"
]
},
{
"cell_type": "markdown",
"id": "3b430668",
"metadata": {},
"source": [
"By default, `StackingEnsemble` uses only the pipelines' forecasts as features for the `final_model`. However, you can specify the additional features using the `features_to_use` parameter. The following values are possible:\n",
"\n",
"+ **None** - use only the pipelines' forecasts(default)\n",
"+ **List[str]** - use the pipelines' forecasts + features from the list\n",
"+ **\"all\"** - use all the available features\n",
"\n",
"*Note:* It is possible to use only the features available for the base models."
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "273626b1",
"metadata": {},
"outputs": [],
"source": [
"stacking_ensemble_unfeatured = StackingEnsemble(pipelines=pipelines, n_folds=10, n_jobs=4)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "272cc433",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 11.6s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.6s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 1.1s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 1.5s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 2.1s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 2.6s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 3.1s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 3.6s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 4.2s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 4.7s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 5.2s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 5.2s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 36.8s finished\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 10.7s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 30.6s finished\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 1.1min\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 10.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.5s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 1.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 1.5s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 2.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 2.5s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 3.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 3.5s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 4.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 4.6s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 5.2s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 5.2s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.2s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.2s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 35.2s finished\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 12.1s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 31.4s finished\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 2.2min\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 11.1s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.6s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 1.1s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 1.6s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 2.1s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 2.7s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 3.2s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 3.7s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 4.2s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 4.8s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 5.3s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 5.3s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 36.1s finished\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 10.2s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 28.7s finished\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 3.3min\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 9.4s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.5s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 1.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 1.5s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 2.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 2.6s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 3.2s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 3.7s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 4.2s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 4.8s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 5.3s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 5.3s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.1s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 32.4s finished\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 9.6s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 26.9s finished\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 4.3min\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 9.3s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.6s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 1.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 1.6s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 2.1s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 2.6s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 3.1s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 3.7s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 4.2s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 4.8s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 5.3s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 5.3s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.2s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.2s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.2s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.2s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.2s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.2s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.2s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.2s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.3s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.3s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.3s\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 6 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 7 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 8 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 9 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 10 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 31.2s finished\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 9.4s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 25.1s finished\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 5.2min\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 5.2min\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 8.3s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 25.2s finished\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 25.2s\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 9.5s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 30.3s finished\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 55.6s\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 11.5s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 33.7s finished\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 1.5min\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 11.2s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 30.4s finished\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 2.0min\n",
"[Parallel(n_jobs=4)]: Using backend MultiprocessingBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1 tasks | elapsed: 8.1s\n",
"[Parallel(n_jobs=4)]: Done 3 out of 3 | elapsed: 27.4s finished\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 2.5min\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 2.5min\n",
"[Parallel(n_jobs=1)]: Done 1 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 2 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 3 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 4 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n",
"[Parallel(n_jobs=1)]: Done 5 tasks | elapsed: 0.0s\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" MAE | \n",
" MSE | \n",
" SMAPE | \n",
" MAPE | \n",
"
\n",
" \n",
" \n",
" \n",
" | stacking ensemble | \n",
" 1986.453478 | \n",
" 7.309679e+06 | \n",
" 8.276998 | \n",
" 8.328746 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" MAE MSE SMAPE MAPE\n",
"stacking ensemble 1986.453478 7.309679e+06 8.276998 8.328746"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stacking_ensamble_metrics = stacking_ensemble_unfeatured.backtest(\n",
" ts=ts,\n",
" metrics=[MAE(), MSE(), SMAPE(), MAPE()],\n",
" n_folds=N_FOLDS,\n",
" aggregate_metrics=True,\n",
" n_jobs=1,\n",
")[\"metrics\"].iloc[:, 1:]\n",
"stacking_ensamble_metrics.index = [\"stacking ensemble\"]\n",
"stacking_ensamble_metrics"
]
},
{
"cell_type": "markdown",
"id": "051a0ba0",
"metadata": {},
"source": [
"In addition, it is also possible to specify the `final_model`. You can use any regression model with the sklearn interface for this purpose."
]
},
{
"cell_type": "markdown",
"id": "c975d5c5",
"metadata": {},
"source": [
"### 3.3 Results\n",
"\n",
"Finally, let's take a look at the results of our experiments"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "c2f1d397",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" MAE | \n",
" MSE | \n",
" SMAPE | \n",
" MAPE | \n",
"
\n",
" \n",
" \n",
" \n",
" | naive | \n",
" 2437.466667 | \n",
" 1.089199e+07 | \n",
" 9.949886 | \n",
" 10.222106 | \n",
"
\n",
" \n",
" | moving average | \n",
" 1913.826667 | \n",
" 6.113701e+06 | \n",
" 7.897570 | \n",
" 7.824056 | \n",
"
\n",
" \n",
" | catboost | \n",
" 2271.766726 | \n",
" 8.923741e+06 | \n",
" 9.376638 | \n",
" 10.013138 | \n",
"
\n",
" \n",
" | voting ensemble | \n",
" 1972.207943 | \n",
" 6.685831e+06 | \n",
" 8.172377 | \n",
" 8.299714 | \n",
"
\n",
" \n",
" | stacking ensemble | \n",
" 1986.453478 | \n",
" 7.309679e+06 | \n",
" 8.276998 | \n",
" 8.328746 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" MAE MSE SMAPE MAPE\n",
"naive 2437.466667 1.089199e+07 9.949886 10.222106\n",
"moving average 1913.826667 6.113701e+06 7.897570 7.824056\n",
"catboost 2271.766726 8.923741e+06 9.376638 10.013138\n",
"voting ensemble 1972.207943 6.685831e+06 8.172377 8.299714\n",
"stacking ensemble 1986.453478 7.309679e+06 8.276998 8.328746"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"metrics = pd.concat([metrics, voting_ensamble_metrics, stacking_ensamble_metrics])\n",
"metrics"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.16"
}
},
"nbformat": 4,
"nbformat_minor": 5
}