Files
pytorch-ts/examples/Implicit-Quantile-Network-Example.ipynb
wassname 3fb53f620e wip
2022-12-23 14:34:54 +08:00

931 lines
59 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import json\n",
"\n",
"from gluonts.dataset.repository.datasets import get_dataset\n",
"from gluonts.evaluation import Evaluator\n",
"from gluonts.evaluation.backtest import make_evaluation_predictions\n",
"\n",
"from pts.model.deepar import DeepAREstimator\n",
"from pts.modules.distribution_output import ImplicitQuantileOutput\n",
"from pts import Trainer\n",
"from pts.dataset.repository.datasets import dataset_recipes"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import torch"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"dataset = get_dataset(\"m5\", regenerate=False)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Recommended prediction horizon: 28\n",
"Frequency of the time series: D\n"
]
}
],
"source": [
"print(f\"Recommended prediction horizon: {dataset.metadata.prediction_length}\")\n",
"print(f\"Frequency of the time series: {dataset.metadata.freq}\")"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"estimator = DeepAREstimator(\n",
" distr_output=ImplicitQuantileOutput(output_domain=\"Positive\"),\n",
" cell_type='GRU',\n",
" input_size=63,\n",
" num_cells=64,\n",
" num_layers=3,\n",
" dropout_rate=0.2,\n",
" use_feat_dynamic_real=True,\n",
" use_feat_static_cat=True,\n",
" cardinality=[int(cat_feat_info.cardinality) for cat_feat_info in dataset.metadata.feat_static_cat],\n",
" embedding_dimension = [4, 4, 4, 4, 16],\n",
" prediction_length=dataset.metadata.prediction_length,\n",
" context_length=dataset.metadata.prediction_length*2,\n",
" freq=dataset.metadata.freq,\n",
" scaling=True,\n",
" trainer=Trainer(device=device,\n",
" epochs=20,\n",
" learning_rate=1e-3,\n",
" num_batches_per_epoch=120,\n",
" batch_size=256,\n",
" )\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "db24034ea1834b1681d2dd1dcb67ec93",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/119 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "28f3571f496e4989a3a5ec2e2ac7e86b",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/119 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "7280681a29704c46bddc9829c787c34b",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/119 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "e384f812e2e249198127af09f27b9783",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/119 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "4c4bcb25b5c6430fa0e608319648b156",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/119 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "fd052f36dcde48eba8d1aa35ba4bf01c",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/119 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Exception ignored in: Exception ignored in: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>Exception ignored in: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" self._shutdown_workers()\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" if w.is_alive():\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process' File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
"\n",
"\n",
"Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" self._shutdown_workers()\n",
"<function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>Exception ignored in: \n",
"Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" self._shutdown_workers()\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" if w.is_alive():\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
"AssertionError: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>can only test a child processAssertionError: if w.is_alive():\n",
"can only test a child process\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
"\n",
" Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
"\n",
" self._shutdown_workers()\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
"assert self._parent_pid == os.getpid(), 'can only test a child process'Exception ignored in: \n",
"<function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>AssertionError : Exception ignored in: can only test a child process\n",
"if w.is_alive():\n",
"Traceback (most recent call last):\n",
"Exception ignored in: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"\n",
"<function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0> File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
"\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
"Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
"Exception ignored in: Traceback (most recent call last):\n",
"self._shutdown_workers()<function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"self._shutdown_workers()\n",
"\n",
"Exception ignored in: File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process'if w.is_alive():\n",
"AssertionError: can only test a child process\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" self._shutdown_workers()Traceback (most recent call last):\n",
"\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
"<function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
" \n",
"if w.is_alive():Exception ignored in: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0> File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
"self._shutdown_workers() File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" if w.is_alive():\n",
"\n",
"\n",
"Exception ignored in: File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
"assert self._parent_pid == os.getpid(), 'can only test a child process'<function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"Traceback (most recent call last):\n",
"Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
"\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process'if w.is_alive():\n",
" self._shutdown_workers() File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
"AssertionErrorself._shutdown_workers()\n",
": File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" \n",
"can only test a child process\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
"self._shutdown_workers() \n",
"AssertionError: assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
"AssertionError: can only test a child process File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
"\n",
" \n",
"if w.is_alive():\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" \n",
"Exception ignored in: can only test a child process\n",
"AssertionErrorassert self._parent_pid == os.getpid(), 'can only test a child process' File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
"if w.is_alive():can only test a child process<function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>: \n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" \n",
"assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
"Exception ignored in: \n",
" AssertionError\n",
"if w.is_alive():Traceback (most recent call last):\n",
"AssertionError<function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>: \n",
": can only test a child process File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
"can only test a child process \n",
"assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
"\n",
"Traceback (most recent call last):\n",
"\n",
"AssertionError File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
"Exception ignored in: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>self._shutdown_workers()Exception ignored in: \n",
"\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
"<function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0> \n",
"if w.is_alive():Traceback (most recent call last):\n",
"\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
"Traceback (most recent call last):\n",
"AssertionError: File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
"can only test a child process: \n",
"self._shutdown_workers()can only test a child process\n",
"\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" if w.is_alive(): File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
"Exception ignored in: \n",
"<function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0> File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
"self._shutdown_workers() assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" if w.is_alive():\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
"\n",
"\n",
"Traceback (most recent call last):\n",
"AssertionErrorAssertionError File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
": : can only test a child processcan only test a child processself._shutdown_workers()\n",
"\n",
"\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" if w.is_alive(): \n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
"AssertionError: can only test a child process\n",
"self._shutdown_workers()\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" if w.is_alive():\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
"AssertionError: can only test a child process\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "bfe38d1effb1421dbff348a15e66c185",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/119 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "ee7a78cc60844a3f9e93f001f70dd00a",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/119 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Exception ignored in: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"Exception ignored in: Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
"<function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" self._shutdown_workers()\n",
"self._shutdown_workers()Exception ignored in: File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
"\n",
"<function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0> File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" \n",
" if w.is_alive():\n",
"if w.is_alive():Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" self._shutdown_workers()\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" if w.is_alive():\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
"AssertionError: can only test a child process\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" "
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "5358e294e3a4480f9f10d759d63ae194",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/119 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
"\n",
"AssertionError File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" : Exception ignored in: Exception ignored in: Exception ignored in: Exception ignored in: assert self._parent_pid == os.getpid(), 'can only test a child process'Exception ignored in: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0><function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0><function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>can only test a child process<function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"<function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"\n",
"\n",
"\n",
"AssertionError\n",
"\n",
"Traceback (most recent call last):\n",
"Traceback (most recent call last):\n",
"Traceback (most recent call last):\n",
": Traceback (most recent call last):\n",
"Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
"can only test a child process File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" \n",
" self._shutdown_workers()self._shutdown_workers() self._shutdown_workers()self._shutdown_workers()\n",
"\n",
"\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
"self._shutdown_workers() \n",
"if w.is_alive():\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
"if w.is_alive():if w.is_alive():\n",
" \n",
"\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
"if w.is_alive(): File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
"if w.is_alive():\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" \n",
" assert self._parent_pid == os.getpid(), 'can only test a child process' File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
"\n",
"assert self._parent_pid == os.getpid(), 'can only test a child process'AssertionErrorassert self._parent_pid == os.getpid(), 'can only test a child process' File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process': \n",
"AssertionError: can only test a child process\n",
"\n",
"\n",
" AssertionErrorAssertionErrorcan only test a child processassert self._parent_pid == os.getpid(), 'can only test a child process'\n",
": : AssertionErrorcan only test a child process\n",
"\n",
": can only test a child processcan only test a child process\n",
"\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "b764025bfdab45a6aa47b4b63bf0cf28",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/119 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "edb0f74e2dea428c9bbee6157c3ef4d0",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/119 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Exception ignored in: Exception ignored in: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"<function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" self._shutdown_workers()Traceback (most recent call last):\n",
"\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" if w.is_alive(): File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" self._shutdown_workers()\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" if w.is_alive():\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" \n",
"assert self._parent_pid == os.getpid(), 'can only test a child process' File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
"AssertionError: can only test a child process\n",
"\n",
"AssertionError: can only test a child process\n",
"Exception ignored in: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" self._shutdown_workers()\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" if w.is_alive():\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
"AssertionError: can only test a child process\n",
"Exception ignored in: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" self._shutdown_workers()\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" if w.is_alive():\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
"AssertionError: can only test a child process\n",
"Exception ignored in: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" self._shutdown_workers()\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" if w.is_alive():\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
"AssertionError: can only test a child process\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "0ac86f1d7a7d47c88625f0ab4dacf7dd",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/119 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "b929282853a746dc9db8b76bf3030936",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/119 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "3f0bcd641835458d9f55c04107363d2f",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/119 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Exception ignored in: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"Exception ignored in: Traceback (most recent call last):\n",
"Traceback (most recent call last):\n",
"Exception ignored in: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"<function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0> File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" self._shutdown_workers() \n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" if w.is_alive():self._shutdown_workers()\n",
"\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" Traceback (most recent call last):\n",
"assert self._parent_pid == os.getpid(), 'can only test a child process' File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
"\n",
"AssertionError : can only test a child processself._shutdown_workers()\n",
"\n",
"\n",
"Exception ignored in: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" self._shutdown_workers()\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" if w.is_alive():if w.is_alive(): File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
"\n",
"\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process'assert self._parent_pid == os.getpid(), 'can only test a child process' \n",
"\n",
"AssertionErrorif w.is_alive():AssertionError: : can only test a child processcan only test a child process\n",
"\n",
"Exception ignored in: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" \n",
"self._shutdown_workers() File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
"\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" if w.is_alive():\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
"AssertionError : assert self._parent_pid == os.getpid(), 'can only test a child process'can only test a child process\n",
"\n",
"AssertionError: can only test a child process\n",
"Exception ignored in: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" self._shutdown_workers()\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" if w.is_alive():\n",
"Exception ignored in: File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
"<function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" self._shutdown_workers()assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
"AssertionError: \n",
"can only test a child process File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" \n",
"if w.is_alive():\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
"AssertionError: can only test a child process\n",
"Exception ignored in: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" self._shutdown_workers()\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" if w.is_alive():\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process'AssertionError\n",
"Exception ignored in: : <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"can only test a child processTraceback (most recent call last):\n",
"\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" self._shutdown_workers()\n",
"Exception ignored in: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"Exception ignored in: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" self._shutdown_workers()\n",
"Traceback (most recent call last):\n",
"Exception ignored in: <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0> File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
"\n",
" self._shutdown_workers() File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" \n",
"Traceback (most recent call last):\n",
"if w.is_alive(): File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
"\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process' File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
"\n",
"AssertionErrorself._shutdown_workers() : can only test a child process\n",
" if w.is_alive():\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" if w.is_alive():if w.is_alive():\n",
"\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process' assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
"AssertionError: can only test a child process\n",
"\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
"\n",
"Exception ignored in: assert self._parent_pid == os.getpid(), 'can only test a child process'<function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"AssertionErrorAssertionError: : Exception ignored in: can only test a child processcan only test a child process<function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0>\n",
"\n",
"\n",
"\n",
"Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
" Traceback (most recent call last):\n",
"Exception ignored in: File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
"<function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0> \n",
"self._shutdown_workers()Traceback (most recent call last):\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
"\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
"self._shutdown_workers() \n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
"if w.is_alive():Exception ignored in: \n",
" <function _MultiProcessingDataLoaderIter.__del__ at 0x7fd49bea94c0> File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
"\n",
"if w.is_alive(): Traceback (most recent call last):\n",
"assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1466, in __del__\n",
"\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
"AssertionErrorself._shutdown_workers(): \n",
"can only test a child process File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
"\n",
" if w.is_alive():\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
"assert self._parent_pid == os.getpid(), 'can only test a child process' \n",
"assert self._parent_pid == os.getpid(), 'can only test a child process'AssertionError\n",
": AssertionErrorcan only test a child process: \n",
"can only test a child process\n",
"self._shutdown_workers()\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/site-packages/torch/utils/data/dataloader.py\", line 1449, in _shutdown_workers\n",
" if w.is_alive():\n",
" File \"/home/wassname/miniforge3/envs/glounts/lib/python3.9/multiprocessing/process.py\", line 160, in is_alive\n",
" assert self._parent_pid == os.getpid(), 'can only test a child process'\n",
"AssertionError: can only test a child process\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "fee43915fc494d12842a2d2ca100dbed",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/119 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "bbf59412dd6c4d3f835a933f919bac15",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/119 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"predictor = estimator.train(dataset.train, num_workers=8)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"forecast_it, ts_it = make_evaluation_predictions(\n",
" dataset=dataset.test, # test dataset\n",
" predictor=predictor, # predictor\n",
" num_samples=100, # number of sample paths we want for evaluation\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"forecasts = list(forecast_it)\n",
"tss = list(ts_it)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Running evaluation: 100%|██████████| 30490/30490 [00:01<00:00, 27259.18it/s]\n",
"/home/krasul/.env/pytorch/lib/python3.8/site-packages/pandas/core/dtypes/cast.py:1672: UserWarning: Warning: converting a masked element to nan.\n",
" subarr = np.array(values, dtype=dtype, copy=copy)\n"
]
}
],
"source": [
"evaluator = Evaluator()\n",
"agg_metrics, item_metrics = evaluator(iter(tss), iter(forecasts), num_series=len(dataset.test))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{\n",
" \"MSE\": 4.755984111358613,\n",
" \"abs_error\": 834177.9219083469,\n",
" \"abs_target_sum\": 1231764.0,\n",
" \"abs_target_mean\": 1.4428196598416543,\n",
" \"seasonal_error\": 1.12721783493784,\n",
" \"MASE\": 0.8981968607451877,\n",
" \"MAPE\": 0.8099336448562378,\n",
" \"sMAPE\": 1.6020707415533486,\n",
" \"OWA\": NaN,\n",
" \"MSIS\": 8.260408136542406,\n",
" \"QuantileLoss[0.1]\": 232933.92667773535,\n",
" \"Coverage[0.1]\": 0.5482148713864025,\n",
" \"QuantileLoss[0.2]\": 432863.72900996683,\n",
" \"Coverage[0.2]\": 0.5567293726280275,\n",
" \"QuantileLoss[0.3]\": 602256.93819869,\n",
" \"Coverage[0.3]\": 0.5704551843695826,\n",
" \"QuantileLoss[0.4]\": 737814.7064298784,\n",
" \"Coverage[0.4]\": 0.5920418872698383,\n",
" \"QuantileLoss[0.5]\": 834177.922027275,\n",
" \"Coverage[0.5]\": 0.6226373986787334,\n",
" \"QuantileLoss[0.6]\": 884780.6868602519,\n",
" \"Coverage[0.6]\": 0.6591399990629399,\n",
" \"QuantileLoss[0.7]\": 876329.6622192905,\n",
" \"Coverage[0.7]\": 0.7127079136016631,\n",
" \"QuantileLoss[0.8]\": 791094.1399574431,\n",
" \"Coverage[0.8]\": 0.7817387433819231,\n",
" \"QuantileLoss[0.9]\": 586032.7896624055,\n",
" \"Coverage[0.9]\": 0.8721290352809268,\n",
" \"RMSE\": 2.1808218889580626,\n",
" \"NRMSE\": 1.5114999813610817,\n",
" \"ND\": 0.677222196710041,\n",
" \"wQuantileLoss[0.1]\": 0.18910597052498315,\n",
" \"wQuantileLoss[0.2]\": 0.35141774642704837,\n",
" \"wQuantileLoss[0.3]\": 0.4889385776810249,\n",
" \"wQuantileLoss[0.4]\": 0.5989903150521353,\n",
" \"wQuantileLoss[0.5]\": 0.677222196806592,\n",
" \"wQuantileLoss[0.6]\": 0.7183037390768459,\n",
" \"wQuantileLoss[0.7]\": 0.711442826888341,\n",
" \"wQuantileLoss[0.8]\": 0.6422448942796211,\n",
" \"wQuantileLoss[0.9]\": 0.4757671028398342,\n",
" \"mean_absolute_QuantileLoss\": 664253.8334492152,\n",
" \"mean_wQuantileLoss\": 0.5392703743973806,\n",
" \"MAE_Coverage\": 0.16756209425937085\n",
"}\n"
]
}
],
"source": [
"print(json.dumps(agg_metrics, indent=4))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"item_metrics.plot(x='MSIS', y='MASE', kind='scatter')\n",
"plt.grid(which=\"both\")\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.9.15 ('glounts')",
"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.9.15"
},
"vscode": {
"interpreter": {
"hash": "7f25a1f13147a60511cf6766827402baf95cbe50d53a241197155306ee38fe70"
}
}
},
"nbformat": 4,
"nbformat_minor": 4
}