diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7fc779ae..b2d37c13 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -41,4 +41,4 @@ jobs: run: | source $VENV # Ignore the MySQL test, as it requires a MySQL server: - pytest --ignore=test/test_run_experiments/test_run_mysql_experiment.py --ignore=test/test_logtables/test_mysql.py + pytest --ignore=test/test_run_experiments/test_run_mysql_experiment.py --ignore=test/test_logtables/test_mysql.py --ignore=test/test_run_experiments/test_run_mysql_experiment.py --ignore=test/test_codecarbon/test_codecarbon_core_functions_mysql.py --ignore=test/test_codecarbon/test_integration_mysql.py diff --git a/.gitignore b/.gitignore index 9920d3ab..0e5cb73e 100644 --- a/.gitignore +++ b/.gitignore @@ -139,4 +139,8 @@ dmypy.json todo.md config/database_credentials.cfg config/example*.cfg -output/ \ No newline at end of file +output/ + +# codecarbon +.codecarbon.config +emissions.csv diff --git a/.vscode/settings.json b/.vscode/settings.json index ce1114fd..74b9678a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -58,5 +58,5 @@ "**/.git/subtree-cache/**": true, "**/node_modules/*/**": true }, - "esbonio.sphinx.confDir": "${workspaceFolder}/docs/source" + "esbonio.sphinx.confDir": "${workspaceFolder}\\docs" } \ No newline at end of file diff --git a/docs/source/examples/example_conditional_grid.ipynb b/docs/source/examples/example_conditional_grid.ipynb index 6262df96..f657388b 100644 --- a/docs/source/examples/example_conditional_grid.ipynb +++ b/docs/source/examples/example_conditional_grid.ipynb @@ -84,7 +84,6 @@ }, "outputs": [], "source": [ - "import os\n", "import random\n", "\n", "import numpy as np\n", @@ -260,9 +259,9 @@ " 1\n", " rbf\n", " 0.1\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -282,9 +281,9 @@ " 1\n", " rbf\n", " 0.3\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -304,9 +303,9 @@ " 1\n", " poly\n", " 0.1\n", - " 3\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 3.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -326,9 +325,9 @@ " 1\n", " poly\n", " 0.1\n", - " 3\n", + " 3.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -348,9 +347,9 @@ " 1\n", " poly\n", " 0.1\n", - " 4\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 4.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -370,9 +369,9 @@ " 1\n", " poly\n", " 0.1\n", - " 4\n", + " 4.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -392,9 +391,9 @@ " 1\n", " poly\n", " 0.3\n", - " 3\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 3.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -414,9 +413,9 @@ " 1\n", " poly\n", " 0.3\n", - " 3\n", + " 3.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -436,9 +435,9 @@ " 1\n", " poly\n", " 0.3\n", - " 4\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 4.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -458,9 +457,9 @@ " 1\n", " poly\n", " 0.3\n", - " 4\n", + " 4.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -479,10 +478,10 @@ " 5\n", " 1\n", " linear\n", - " nan\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -502,9 +501,9 @@ " 2\n", " rbf\n", " 0.1\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -524,9 +523,9 @@ " 2\n", " rbf\n", " 0.3\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -546,9 +545,9 @@ " 2\n", " poly\n", " 0.1\n", - " 3\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 3.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -568,9 +567,9 @@ " 2\n", " poly\n", " 0.1\n", - " 3\n", + " 3.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -590,9 +589,9 @@ " 2\n", " poly\n", " 0.1\n", - " 4\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 4.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -612,9 +611,9 @@ " 2\n", " poly\n", " 0.1\n", - " 4\n", + " 4.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -634,9 +633,9 @@ " 2\n", " poly\n", " 0.3\n", - " 3\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 3.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -656,9 +655,9 @@ " 2\n", " poly\n", " 0.3\n", - " 3\n", + " 3.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -678,9 +677,9 @@ " 2\n", " poly\n", " 0.3\n", - " 4\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 4.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -700,9 +699,9 @@ " 2\n", " poly\n", " 0.3\n", - " 4\n", + " 4.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -721,10 +720,10 @@ " 5\n", " 2\n", " linear\n", - " nan\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -744,9 +743,9 @@ " 3\n", " rbf\n", " 0.1\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -766,9 +765,9 @@ " 3\n", " rbf\n", " 0.3\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -788,9 +787,9 @@ " 3\n", " poly\n", " 0.1\n", - " 3\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 3.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -810,9 +809,9 @@ " 3\n", " poly\n", " 0.1\n", - " 3\n", + " 3.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -832,9 +831,9 @@ " 3\n", " poly\n", " 0.1\n", - " 4\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 4.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -854,9 +853,9 @@ " 3\n", " poly\n", " 0.1\n", - " 4\n", + " 4.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -876,9 +875,9 @@ " 3\n", " poly\n", " 0.3\n", - " 3\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 3.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -898,9 +897,9 @@ " 3\n", " poly\n", " 0.3\n", - " 3\n", + " 3.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -920,9 +919,9 @@ " 3\n", " poly\n", " 0.3\n", - " 4\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 4.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -942,9 +941,9 @@ " 3\n", " poly\n", " 0.3\n", - " 4\n", + " 4.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -963,10 +962,10 @@ " 5\n", " 3\n", " linear\n", - " nan\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -986,9 +985,9 @@ " 4\n", " rbf\n", " 0.1\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1008,9 +1007,9 @@ " 4\n", " rbf\n", " 0.3\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1030,9 +1029,9 @@ " 4\n", " poly\n", " 0.1\n", - " 3\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 3.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1052,9 +1051,9 @@ " 4\n", " poly\n", " 0.1\n", - " 3\n", + " 3.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1074,9 +1073,9 @@ " 4\n", " poly\n", " 0.1\n", - " 4\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 4.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1096,9 +1095,9 @@ " 4\n", " poly\n", " 0.1\n", - " 4\n", + " 4.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1118,9 +1117,9 @@ " 4\n", " poly\n", " 0.3\n", - " 3\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 3.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1140,9 +1139,9 @@ " 4\n", " poly\n", " 0.3\n", - " 3\n", + " 3.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1162,9 +1161,9 @@ " 4\n", " poly\n", " 0.3\n", - " 4\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 4.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1184,9 +1183,9 @@ " 4\n", " poly\n", " 0.3\n", - " 4\n", + " 4.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1205,10 +1204,10 @@ " 5\n", " 4\n", " linear\n", - " nan\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1228,9 +1227,9 @@ " 5\n", " rbf\n", " 0.1\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1250,9 +1249,9 @@ " 5\n", " rbf\n", " 0.3\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1272,9 +1271,9 @@ " 5\n", " poly\n", " 0.1\n", - " 3\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 3.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1294,9 +1293,9 @@ " 5\n", " poly\n", " 0.1\n", - " 3\n", + " 3.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1316,9 +1315,9 @@ " 5\n", " poly\n", " 0.1\n", - " 4\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 4.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1338,9 +1337,9 @@ " 5\n", " poly\n", " 0.1\n", - " 4\n", + " 4.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1360,9 +1359,9 @@ " 5\n", " poly\n", " 0.3\n", - " 3\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 3.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1382,9 +1381,9 @@ " 5\n", " poly\n", " 0.3\n", - " 3\n", + " 3.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1404,9 +1403,9 @@ " 5\n", " poly\n", " 0.3\n", - " 4\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 4.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1426,9 +1425,9 @@ " 5\n", " poly\n", " 0.3\n", - " 4\n", + " 4.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1447,10 +1446,10 @@ " 5\n", " 5\n", " linear\n", - " nan\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " created\n", " None\n", " None\n", @@ -1467,119 +1466,119 @@ "" ], "text/plain": [ - " ID dataset cross_validation_splits seed kernel gamma degree coef0 \\\n", - "0 1 iris 5 1 rbf 0.1 nan nan \n", - "1 2 iris 5 1 rbf 0.3 nan nan \n", - "2 3 iris 5 1 poly 0.1 3 0 \n", - "3 4 iris 5 1 poly 0.1 3 0.1 \n", - "4 5 iris 5 1 poly 0.1 4 0 \n", - "5 6 iris 5 1 poly 0.1 4 0.1 \n", - "6 7 iris 5 1 poly 0.3 3 0 \n", - "7 8 iris 5 1 poly 0.3 3 0.1 \n", - "8 9 iris 5 1 poly 0.3 4 0 \n", - "9 10 iris 5 1 poly 0.3 4 0.1 \n", - "10 11 iris 5 1 linear nan nan nan \n", - "11 12 iris 5 2 rbf 0.1 nan nan \n", - "12 13 iris 5 2 rbf 0.3 nan nan \n", - "13 14 iris 5 2 poly 0.1 3 0 \n", - "14 15 iris 5 2 poly 0.1 3 0.1 \n", - "15 16 iris 5 2 poly 0.1 4 0 \n", - "16 17 iris 5 2 poly 0.1 4 0.1 \n", - "17 18 iris 5 2 poly 0.3 3 0 \n", - "18 19 iris 5 2 poly 0.3 3 0.1 \n", - "19 20 iris 5 2 poly 0.3 4 0 \n", - "20 21 iris 5 2 poly 0.3 4 0.1 \n", - "21 22 iris 5 2 linear nan nan nan \n", - "22 23 iris 5 3 rbf 0.1 nan nan \n", - "23 24 iris 5 3 rbf 0.3 nan nan \n", - "24 25 iris 5 3 poly 0.1 3 0 \n", - "25 26 iris 5 3 poly 0.1 3 0.1 \n", - "26 27 iris 5 3 poly 0.1 4 0 \n", - "27 28 iris 5 3 poly 0.1 4 0.1 \n", - "28 29 iris 5 3 poly 0.3 3 0 \n", - "29 30 iris 5 3 poly 0.3 3 0.1 \n", - "30 31 iris 5 3 poly 0.3 4 0 \n", - "31 32 iris 5 3 poly 0.3 4 0.1 \n", - "32 33 iris 5 3 linear nan nan nan \n", - "33 34 iris 5 4 rbf 0.1 nan nan \n", - "34 35 iris 5 4 rbf 0.3 nan nan \n", - "35 36 iris 5 4 poly 0.1 3 0 \n", - "36 37 iris 5 4 poly 0.1 3 0.1 \n", - "37 38 iris 5 4 poly 0.1 4 0 \n", - "38 39 iris 5 4 poly 0.1 4 0.1 \n", - "39 40 iris 5 4 poly 0.3 3 0 \n", - "40 41 iris 5 4 poly 0.3 3 0.1 \n", - "41 42 iris 5 4 poly 0.3 4 0 \n", - "42 43 iris 5 4 poly 0.3 4 0.1 \n", - "43 44 iris 5 4 linear nan nan nan \n", - "44 45 iris 5 5 rbf 0.1 nan nan \n", - "45 46 iris 5 5 rbf 0.3 nan nan \n", - "46 47 iris 5 5 poly 0.1 3 0 \n", - "47 48 iris 5 5 poly 0.1 3 0.1 \n", - "48 49 iris 5 5 poly 0.1 4 0 \n", - "49 50 iris 5 5 poly 0.1 4 0.1 \n", - "50 51 iris 5 5 poly 0.3 3 0 \n", - "51 52 iris 5 5 poly 0.3 3 0.1 \n", - "52 53 iris 5 5 poly 0.3 4 0 \n", - "53 54 iris 5 5 poly 0.3 4 0.1 \n", - "54 55 iris 5 5 linear nan nan nan \n", + " ID dataset cross_validation_splits seed kernel gamma degree coef0 \\\n", + "0 1 iris 5 1 rbf 0.1 NaN NaN \n", + "1 2 iris 5 1 rbf 0.3 NaN NaN \n", + "2 3 iris 5 1 poly 0.1 3.0 0.0 \n", + "3 4 iris 5 1 poly 0.1 3.0 0.1 \n", + "4 5 iris 5 1 poly 0.1 4.0 0.0 \n", + "5 6 iris 5 1 poly 0.1 4.0 0.1 \n", + "6 7 iris 5 1 poly 0.3 3.0 0.0 \n", + "7 8 iris 5 1 poly 0.3 3.0 0.1 \n", + "8 9 iris 5 1 poly 0.3 4.0 0.0 \n", + "9 10 iris 5 1 poly 0.3 4.0 0.1 \n", + "10 11 iris 5 1 linear NaN NaN NaN \n", + "11 12 iris 5 2 rbf 0.1 NaN NaN \n", + "12 13 iris 5 2 rbf 0.3 NaN NaN \n", + "13 14 iris 5 2 poly 0.1 3.0 0.0 \n", + "14 15 iris 5 2 poly 0.1 3.0 0.1 \n", + "15 16 iris 5 2 poly 0.1 4.0 0.0 \n", + "16 17 iris 5 2 poly 0.1 4.0 0.1 \n", + "17 18 iris 5 2 poly 0.3 3.0 0.0 \n", + "18 19 iris 5 2 poly 0.3 3.0 0.1 \n", + "19 20 iris 5 2 poly 0.3 4.0 0.0 \n", + "20 21 iris 5 2 poly 0.3 4.0 0.1 \n", + "21 22 iris 5 2 linear NaN NaN NaN \n", + "22 23 iris 5 3 rbf 0.1 NaN NaN \n", + "23 24 iris 5 3 rbf 0.3 NaN NaN \n", + "24 25 iris 5 3 poly 0.1 3.0 0.0 \n", + "25 26 iris 5 3 poly 0.1 3.0 0.1 \n", + "26 27 iris 5 3 poly 0.1 4.0 0.0 \n", + "27 28 iris 5 3 poly 0.1 4.0 0.1 \n", + "28 29 iris 5 3 poly 0.3 3.0 0.0 \n", + "29 30 iris 5 3 poly 0.3 3.0 0.1 \n", + "30 31 iris 5 3 poly 0.3 4.0 0.0 \n", + "31 32 iris 5 3 poly 0.3 4.0 0.1 \n", + "32 33 iris 5 3 linear NaN NaN NaN \n", + "33 34 iris 5 4 rbf 0.1 NaN NaN \n", + "34 35 iris 5 4 rbf 0.3 NaN NaN \n", + "35 36 iris 5 4 poly 0.1 3.0 0.0 \n", + "36 37 iris 5 4 poly 0.1 3.0 0.1 \n", + "37 38 iris 5 4 poly 0.1 4.0 0.0 \n", + "38 39 iris 5 4 poly 0.1 4.0 0.1 \n", + "39 40 iris 5 4 poly 0.3 3.0 0.0 \n", + "40 41 iris 5 4 poly 0.3 3.0 0.1 \n", + "41 42 iris 5 4 poly 0.3 4.0 0.0 \n", + "42 43 iris 5 4 poly 0.3 4.0 0.1 \n", + "43 44 iris 5 4 linear NaN NaN NaN \n", + "44 45 iris 5 5 rbf 0.1 NaN NaN \n", + "45 46 iris 5 5 rbf 0.3 NaN NaN \n", + "46 47 iris 5 5 poly 0.1 3.0 0.0 \n", + "47 48 iris 5 5 poly 0.1 3.0 0.1 \n", + "48 49 iris 5 5 poly 0.1 4.0 0.0 \n", + "49 50 iris 5 5 poly 0.1 4.0 0.1 \n", + "50 51 iris 5 5 poly 0.3 3.0 0.0 \n", + "51 52 iris 5 5 poly 0.3 3.0 0.1 \n", + "52 53 iris 5 5 poly 0.3 4.0 0.0 \n", + "53 54 iris 5 5 poly 0.3 4.0 0.1 \n", + "54 55 iris 5 5 linear NaN NaN NaN \n", "\n", " creation_date status start_date name machine train_f1 \\\n", - "0 2023-03-31 20:48:29 created None None None None \n", - "1 2023-03-31 20:48:29 created None None None None \n", - "2 2023-03-31 20:48:29 created None None None None \n", - "3 2023-03-31 20:48:29 created None None None None \n", - "4 2023-03-31 20:48:29 created None None None None \n", - "5 2023-03-31 20:48:29 created None None None None \n", - "6 2023-03-31 20:48:29 created None None None None \n", - "7 2023-03-31 20:48:29 created None None None None \n", - "8 2023-03-31 20:48:29 created None None None None \n", - "9 2023-03-31 20:48:29 created None None None None \n", - "10 2023-03-31 20:48:29 created None None None None \n", - "11 2023-03-31 20:48:29 created None None None None \n", - "12 2023-03-31 20:48:29 created None None None None \n", - "13 2023-03-31 20:48:29 created None None None None \n", - "14 2023-03-31 20:48:29 created None None None None \n", - "15 2023-03-31 20:48:29 created None None None None \n", - "16 2023-03-31 20:48:29 created None None None None \n", - "17 2023-03-31 20:48:29 created None None None None \n", - "18 2023-03-31 20:48:29 created None None None None \n", - "19 2023-03-31 20:48:29 created None None None None \n", - "20 2023-03-31 20:48:29 created None None None None \n", - "21 2023-03-31 20:48:29 created None None None None \n", - "22 2023-03-31 20:48:29 created None None None None \n", - "23 2023-03-31 20:48:29 created None None None None \n", - "24 2023-03-31 20:48:29 created None None None None \n", - "25 2023-03-31 20:48:29 created None None None None \n", - "26 2023-03-31 20:48:29 created None None None None \n", - "27 2023-03-31 20:48:29 created None None None None \n", - "28 2023-03-31 20:48:29 created None None None None \n", - "29 2023-03-31 20:48:29 created None None None None \n", - "30 2023-03-31 20:48:29 created None None None None \n", - "31 2023-03-31 20:48:29 created None None None None \n", - "32 2023-03-31 20:48:29 created None None None None \n", - "33 2023-03-31 20:48:29 created None None None None \n", - "34 2023-03-31 20:48:29 created None None None None \n", - "35 2023-03-31 20:48:29 created None None None None \n", - "36 2023-03-31 20:48:29 created None None None None \n", - "37 2023-03-31 20:48:29 created None None None None \n", - "38 2023-03-31 20:48:29 created None None None None \n", - "39 2023-03-31 20:48:29 created None None None None \n", - "40 2023-03-31 20:48:29 created None None None None \n", - "41 2023-03-31 20:48:29 created None None None None \n", - "42 2023-03-31 20:48:29 created None None None None \n", - "43 2023-03-31 20:48:29 created None None None None \n", - "44 2023-03-31 20:48:29 created None None None None \n", - "45 2023-03-31 20:48:29 created None None None None \n", - "46 2023-03-31 20:48:29 created None None None None \n", - "47 2023-03-31 20:48:29 created None None None None \n", - "48 2023-03-31 20:48:29 created None None None None \n", - "49 2023-03-31 20:48:29 created None None None None \n", - "50 2023-03-31 20:48:29 created None None None None \n", - "51 2023-03-31 20:48:29 created None None None None \n", - "52 2023-03-31 20:48:29 created None None None None \n", - "53 2023-03-31 20:48:29 created None None None None \n", - "54 2023-03-31 20:48:29 created None None None None \n", + "0 2023-05-19 12:35:20 created None None None None \n", + "1 2023-05-19 12:35:20 created None None None None \n", + "2 2023-05-19 12:35:20 created None None None None \n", + "3 2023-05-19 12:35:20 created None None None None \n", + "4 2023-05-19 12:35:20 created None None None None \n", + "5 2023-05-19 12:35:20 created None None None None \n", + "6 2023-05-19 12:35:20 created None None None None \n", + "7 2023-05-19 12:35:20 created None None None None \n", + "8 2023-05-19 12:35:20 created None None None None \n", + "9 2023-05-19 12:35:20 created None None None None \n", + "10 2023-05-19 12:35:20 created None None None None \n", + "11 2023-05-19 12:35:20 created None None None None \n", + "12 2023-05-19 12:35:20 created None None None None \n", + "13 2023-05-19 12:35:20 created None None None None \n", + "14 2023-05-19 12:35:20 created None None None None \n", + "15 2023-05-19 12:35:20 created None None None None \n", + "16 2023-05-19 12:35:20 created None None None None \n", + "17 2023-05-19 12:35:20 created None None None None \n", + "18 2023-05-19 12:35:20 created None None None None \n", + "19 2023-05-19 12:35:20 created None None None None \n", + "20 2023-05-19 12:35:20 created None None None None \n", + "21 2023-05-19 12:35:20 created None None None None \n", + "22 2023-05-19 12:35:20 created None None None None \n", + "23 2023-05-19 12:35:20 created None None None None \n", + "24 2023-05-19 12:35:20 created None None None None \n", + "25 2023-05-19 12:35:20 created None None None None \n", + "26 2023-05-19 12:35:20 created None None None None \n", + "27 2023-05-19 12:35:20 created None None None None \n", + "28 2023-05-19 12:35:20 created None None None None \n", + "29 2023-05-19 12:35:20 created None None None None \n", + "30 2023-05-19 12:35:20 created None None None None \n", + "31 2023-05-19 12:35:20 created None None None None \n", + "32 2023-05-19 12:35:20 created None None None None \n", + "33 2023-05-19 12:35:20 created None None None None \n", + "34 2023-05-19 12:35:20 created None None None None \n", + "35 2023-05-19 12:35:20 created None None None None \n", + "36 2023-05-19 12:35:20 created None None None None \n", + "37 2023-05-19 12:35:20 created None None None None \n", + "38 2023-05-19 12:35:20 created None None None None \n", + "39 2023-05-19 12:35:20 created None None None None \n", + "40 2023-05-19 12:35:20 created None None None None \n", + "41 2023-05-19 12:35:20 created None None None None \n", + "42 2023-05-19 12:35:20 created None None None None \n", + "43 2023-05-19 12:35:20 created None None None None \n", + "44 2023-05-19 12:35:20 created None None None None \n", + "45 2023-05-19 12:35:20 created None None None None \n", + "46 2023-05-19 12:35:20 created None None None None \n", + "47 2023-05-19 12:35:20 created None None None None \n", + "48 2023-05-19 12:35:20 created None None None None \n", + "49 2023-05-19 12:35:20 created None None None None \n", + "50 2023-05-19 12:35:20 created None None None None \n", + "51 2023-05-19 12:35:20 created None None None None \n", + "52 2023-05-19 12:35:20 created None None None None \n", + "53 2023-05-19 12:35:20 created None None None None \n", + "54 2023-05-19 12:35:20 created None None None None \n", "\n", " train_accuracy test_f1 test_accuracy end_date error \n", "0 None None None None None \n", @@ -1646,9 +1645,9 @@ ], "source": [ "# Create parameter configurations for each kernel\n", - "combinations = [{'kernel': 'rbf', 'gamma': gamma, 'degree':'nan', 'coef0':'nan'} for gamma in ['0.1','0.3']]\n", + "combinations = [{'kernel': 'rbf', 'gamma': gamma, 'degree':None, 'coef0':None} for gamma in ['0.1','0.3']]\n", "combinations += [{'kernel': 'poly', 'gamma': gamma, 'degree': degree, 'coef0': coef0} for gamma in ['0.1','0.3'] for degree in ['3','4'] for coef0 in ['0.0', '0.1']]\n", - "combinations += [{'kernel': 'linear','gamma': 'nan', 'degree':'nan', 'coef0':'nan'}]\n", + "combinations += [{'kernel': 'linear','gamma': None, 'degree':None, 'coef0':None}]\n", "\n", "# Fill experimenter\n", "experimenter.fill_table_from_combination(parameters={'seed': ['1', '2', '3', '4', '5'], \n", @@ -1735,18 +1734,18 @@ " 1\n", " rbf\n", " 0.1\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:21\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:29\n", " None\n", " \n", " \n", @@ -1757,18 +1756,18 @@ " 1\n", " rbf\n", " 0.3\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:29\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:30\n", + " 2023-05-19 12:35:34\n", " None\n", " \n", " \n", @@ -1779,18 +1778,18 @@ " 1\n", " poly\n", " 0.1\n", - " 3\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 3.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:30\n", + " 2023-05-19 12:35:35\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:31\n", + " 2023-05-19 12:35:41\n", " None\n", " \n", " \n", @@ -1801,18 +1800,18 @@ " 1\n", " poly\n", " 0.1\n", - " 3\n", + " 3.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:31\n", + " 2023-05-19 12:35:41\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:32\n", + " 2023-05-19 12:35:46\n", " None\n", " \n", " \n", @@ -1823,18 +1822,18 @@ " 1\n", " poly\n", " 0.1\n", - " 4\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 4.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:32\n", + " 2023-05-19 12:35:47\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:33\n", + " 2023-05-19 12:35:52\n", " None\n", " \n", " \n", @@ -1845,18 +1844,18 @@ " 1\n", " poly\n", " 0.1\n", - " 4\n", + " 4.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:33\n", + " 2023-05-19 12:35:53\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:35\n", + " 2023-05-19 12:35:58\n", " None\n", " \n", " \n", @@ -1867,18 +1866,18 @@ " 1\n", " poly\n", " 0.3\n", - " 3\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 3.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:35\n", + " 2023-05-19 12:35:58\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:36\n", + " 2023-05-19 12:36:04\n", " None\n", " \n", " \n", @@ -1889,18 +1888,18 @@ " 1\n", " poly\n", " 0.3\n", - " 3\n", + " 3.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:36\n", + " 2023-05-19 12:36:04\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:37\n", + " 2023-05-19 12:36:10\n", " None\n", " \n", " \n", @@ -1911,18 +1910,18 @@ " 1\n", " poly\n", " 0.3\n", - " 4\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 4.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:37\n", + " 2023-05-19 12:36:10\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:38\n", + " 2023-05-19 12:36:16\n", " None\n", " \n", " \n", @@ -1933,18 +1932,18 @@ " 1\n", " poly\n", " 0.3\n", - " 4\n", + " 4.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:38\n", + " 2023-05-19 12:36:16\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:39\n", + " 2023-05-19 12:36:22\n", " None\n", " \n", " \n", @@ -1954,19 +1953,19 @@ " 5\n", " 1\n", " linear\n", - " nan\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:39\n", + " 2023-05-19 12:36:22\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:40\n", + " 2023-05-19 12:36:28\n", " None\n", " \n", " \n", @@ -1977,18 +1976,18 @@ " 2\n", " rbf\n", " 0.1\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:40\n", + " 2023-05-19 12:36:28\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:36:34\n", " None\n", " \n", " \n", @@ -1999,18 +1998,18 @@ " 2\n", " rbf\n", " 0.3\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:36:34\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:36:39\n", " None\n", " \n", " \n", @@ -2021,18 +2020,18 @@ " 2\n", " poly\n", " 0.1\n", - " 3\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 3.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:36:39\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:36:44\n", " None\n", " \n", " \n", @@ -2043,18 +2042,18 @@ " 2\n", " poly\n", " 0.1\n", - " 3\n", + " 3.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:36:44\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:36:49\n", " None\n", " \n", " \n", @@ -2065,18 +2064,18 @@ " 2\n", " poly\n", " 0.1\n", - " 4\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 4.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:36:49\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:36:54\n", " None\n", " \n", " \n", @@ -2087,18 +2086,18 @@ " 2\n", " poly\n", " 0.1\n", - " 4\n", + " 4.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:36:54\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:36:59\n", " None\n", " \n", " \n", @@ -2109,18 +2108,18 @@ " 2\n", " poly\n", " 0.3\n", - " 3\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 3.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:36:59\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:37:04\n", " None\n", " \n", " \n", @@ -2131,18 +2130,18 @@ " 2\n", " poly\n", " 0.3\n", - " 3\n", + " 3.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:37:04\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:37:09\n", " None\n", " \n", " \n", @@ -2153,18 +2152,18 @@ " 2\n", " poly\n", " 0.3\n", - " 4\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 4.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:37:09\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:37:14\n", " None\n", " \n", " \n", @@ -2175,18 +2174,18 @@ " 2\n", " poly\n", " 0.3\n", - " 4\n", + " 4.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:37:14\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:37:19\n", " None\n", " \n", " \n", @@ -2196,19 +2195,19 @@ " 5\n", " 2\n", " linear\n", - " nan\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:37:19\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:37:24\n", " None\n", " \n", " \n", @@ -2219,18 +2218,18 @@ " 3\n", " rbf\n", " 0.1\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:37:24\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:37:28\n", " None\n", " \n", " \n", @@ -2241,18 +2240,18 @@ " 3\n", " rbf\n", " 0.3\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:41\n", + " 2023-05-19 12:37:28\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:42\n", + " 2023-05-19 12:37:34\n", " None\n", " \n", " \n", @@ -2263,18 +2262,18 @@ " 3\n", " poly\n", " 0.1\n", - " 3\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 3.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:42\n", + " 2023-05-19 12:37:35\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:43\n", + " 2023-05-19 12:37:40\n", " None\n", " \n", " \n", @@ -2285,18 +2284,18 @@ " 3\n", " poly\n", " 0.1\n", - " 3\n", + " 3.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:43\n", + " 2023-05-19 12:37:41\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:44\n", + " 2023-05-19 12:37:46\n", " None\n", " \n", " \n", @@ -2307,18 +2306,18 @@ " 3\n", " poly\n", " 0.1\n", - " 4\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 4.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:44\n", + " 2023-05-19 12:37:46\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:45\n", + " 2023-05-19 12:37:52\n", " None\n", " \n", " \n", @@ -2329,18 +2328,18 @@ " 3\n", " poly\n", " 0.1\n", - " 4\n", + " 4.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:45\n", + " 2023-05-19 12:37:52\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:46\n", + " 2023-05-19 12:37:58\n", " None\n", " \n", " \n", @@ -2351,18 +2350,18 @@ " 3\n", " poly\n", " 0.3\n", - " 3\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 3.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:46\n", + " 2023-05-19 12:37:58\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:47\n", + " 2023-05-19 12:38:04\n", " None\n", " \n", " \n", @@ -2373,18 +2372,18 @@ " 3\n", " poly\n", " 0.3\n", - " 3\n", + " 3.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:47\n", + " 2023-05-19 12:38:04\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:48\n", + " 2023-05-19 12:38:10\n", " None\n", " \n", " \n", @@ -2395,18 +2394,18 @@ " 3\n", " poly\n", " 0.3\n", - " 4\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 4.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:48\n", + " 2023-05-19 12:38:10\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:49\n", + " 2023-05-19 12:38:16\n", " None\n", " \n", " \n", @@ -2417,18 +2416,18 @@ " 3\n", " poly\n", " 0.3\n", - " 4\n", + " 4.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:49\n", + " 2023-05-19 12:38:16\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:50\n", + " 2023-05-19 12:38:22\n", " None\n", " \n", " \n", @@ -2438,19 +2437,19 @@ " 5\n", " 3\n", " linear\n", - " nan\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:50\n", + " 2023-05-19 12:38:22\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:51\n", + " 2023-05-19 12:38:28\n", " None\n", " \n", " \n", @@ -2461,18 +2460,18 @@ " 4\n", " rbf\n", " 0.1\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:51\n", + " 2023-05-19 12:38:28\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:52\n", + " 2023-05-19 12:38:34\n", " None\n", " \n", " \n", @@ -2483,18 +2482,18 @@ " 4\n", " rbf\n", " 0.3\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:52\n", + " 2023-05-19 12:38:34\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:53\n", + " 2023-05-19 12:38:39\n", " None\n", " \n", " \n", @@ -2505,18 +2504,18 @@ " 4\n", " poly\n", " 0.1\n", - " 3\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 3.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:53\n", + " 2023-05-19 12:38:40\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:54\n", + " 2023-05-19 12:38:45\n", " None\n", " \n", " \n", @@ -2527,18 +2526,18 @@ " 4\n", " poly\n", " 0.1\n", - " 3\n", + " 3.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:54\n", + " 2023-05-19 12:38:46\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:55\n", + " 2023-05-19 12:38:52\n", " None\n", " \n", " \n", @@ -2549,18 +2548,18 @@ " 4\n", " poly\n", " 0.1\n", - " 4\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 4.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:55\n", + " 2023-05-19 12:38:52\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:57\n", + " 2023-05-19 12:38:57\n", " None\n", " \n", " \n", @@ -2571,18 +2570,18 @@ " 4\n", " poly\n", " 0.1\n", - " 4\n", + " 4.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:57\n", + " 2023-05-19 12:38:58\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:58\n", + " 2023-05-19 12:39:03\n", " None\n", " \n", " \n", @@ -2593,18 +2592,18 @@ " 4\n", " poly\n", " 0.3\n", - " 3\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 3.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:58\n", + " 2023-05-19 12:39:03\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:48:59\n", + " 2023-05-19 12:39:09\n", " None\n", " \n", " \n", @@ -2615,18 +2614,18 @@ " 4\n", " poly\n", " 0.3\n", - " 3\n", + " 3.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:48:59\n", + " 2023-05-19 12:39:09\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:49:00\n", + " 2023-05-19 12:39:15\n", " None\n", " \n", " \n", @@ -2637,18 +2636,18 @@ " 4\n", " poly\n", " 0.3\n", - " 4\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 4.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:49:00\n", + " 2023-05-19 12:39:15\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:49:01\n", + " 2023-05-19 12:39:21\n", " None\n", " \n", " \n", @@ -2659,18 +2658,18 @@ " 4\n", " poly\n", " 0.3\n", - " 4\n", + " 4.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:49:01\n", + " 2023-05-19 12:39:21\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:49:02\n", + " 2023-05-19 12:39:27\n", " None\n", " \n", " \n", @@ -2680,19 +2679,19 @@ " 5\n", " 4\n", " linear\n", - " nan\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:49:02\n", + " 2023-05-19 12:39:27\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:49:03\n", + " 2023-05-19 12:39:33\n", " None\n", " \n", " \n", @@ -2703,18 +2702,18 @@ " 5\n", " rbf\n", " 0.1\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:49:03\n", + " 2023-05-19 12:39:33\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:49:04\n", + " 2023-05-19 12:39:39\n", " None\n", " \n", " \n", @@ -2725,18 +2724,18 @@ " 5\n", " rbf\n", " 0.3\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:49:04\n", + " 2023-05-19 12:39:39\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:49:08\n", + " 2023-05-19 12:39:48\n", " None\n", " \n", " \n", @@ -2747,18 +2746,18 @@ " 5\n", " poly\n", " 0.1\n", - " 3\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 3.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:49:08\n", + " 2023-05-19 12:39:48\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:49:12\n", + " 2023-05-19 12:39:58\n", " None\n", " \n", " \n", @@ -2769,18 +2768,18 @@ " 5\n", " poly\n", " 0.1\n", - " 3\n", + " 3.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:49:12\n", + " 2023-05-19 12:39:58\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:49:16\n", + " 2023-05-19 12:40:07\n", " None\n", " \n", " \n", @@ -2791,18 +2790,18 @@ " 5\n", " poly\n", " 0.1\n", - " 4\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 4.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:49:16\n", + " 2023-05-19 12:40:07\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:49:20\n", + " 2023-05-19 12:40:15\n", " None\n", " \n", " \n", @@ -2813,18 +2812,18 @@ " 5\n", " poly\n", " 0.1\n", - " 4\n", + " 4.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:49:20\n", + " 2023-05-19 12:40:15\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:49:24\n", + " 2023-05-19 12:40:24\n", " None\n", " \n", " \n", @@ -2835,18 +2834,18 @@ " 5\n", " poly\n", " 0.3\n", - " 3\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 3.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:49:24\n", + " 2023-05-19 12:40:24\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:49:28\n", + " 2023-05-19 12:40:33\n", " None\n", " \n", " \n", @@ -2857,18 +2856,18 @@ " 5\n", " poly\n", " 0.3\n", - " 3\n", + " 3.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:49:28\n", + " 2023-05-19 12:40:33\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:49:32\n", + " 2023-05-19 12:40:42\n", " None\n", " \n", " \n", @@ -2879,18 +2878,18 @@ " 5\n", " poly\n", " 0.3\n", - " 4\n", - " 0\n", - " 2023-03-31 20:48:29\n", + " 4.0\n", + " 0.0\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:49:32\n", + " 2023-05-19 12:40:42\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:49:36\n", + " 2023-05-19 12:40:51\n", " None\n", " \n", " \n", @@ -2901,18 +2900,18 @@ " 5\n", " poly\n", " 0.3\n", - " 4\n", + " 4.0\n", " 0.1\n", - " 2023-03-31 20:48:29\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:49:36\n", + " 2023-05-19 12:40:51\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:49:40\n", + " 2023-05-19 12:41:00\n", " None\n", " \n", " \n", @@ -2922,19 +2921,19 @@ " 5\n", " 5\n", " linear\n", - " nan\n", - " nan\n", - " nan\n", - " 2023-03-31 20:48:29\n", + " NaN\n", + " NaN\n", + " NaN\n", + " 2023-05-19 12:35:20\n", " done\n", - " 2023-03-31 20:49:40\n", + " 2023-05-19 12:41:00\n", " SVM_experimenter_01\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " 0.975\n", " 0.975\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:49:44\n", + " 2023-05-19 12:41:09\n", " None\n", " \n", " \n", @@ -2942,233 +2941,233 @@ "" ], "text/plain": [ - " ID dataset cross_validation_splits seed kernel gamma degree coef0 \\\n", - "0 1 iris 5 1 rbf 0.1 nan nan \n", - "1 2 iris 5 1 rbf 0.3 nan nan \n", - "2 3 iris 5 1 poly 0.1 3 0 \n", - "3 4 iris 5 1 poly 0.1 3 0.1 \n", - "4 5 iris 5 1 poly 0.1 4 0 \n", - "5 6 iris 5 1 poly 0.1 4 0.1 \n", - "6 7 iris 5 1 poly 0.3 3 0 \n", - "7 8 iris 5 1 poly 0.3 3 0.1 \n", - "8 9 iris 5 1 poly 0.3 4 0 \n", - "9 10 iris 5 1 poly 0.3 4 0.1 \n", - "10 11 iris 5 1 linear nan nan nan \n", - "11 12 iris 5 2 rbf 0.1 nan nan \n", - "12 13 iris 5 2 rbf 0.3 nan nan \n", - "13 14 iris 5 2 poly 0.1 3 0 \n", - "14 15 iris 5 2 poly 0.1 3 0.1 \n", - "15 16 iris 5 2 poly 0.1 4 0 \n", - "16 17 iris 5 2 poly 0.1 4 0.1 \n", - "17 18 iris 5 2 poly 0.3 3 0 \n", - "18 19 iris 5 2 poly 0.3 3 0.1 \n", - "19 20 iris 5 2 poly 0.3 4 0 \n", - "20 21 iris 5 2 poly 0.3 4 0.1 \n", - "21 22 iris 5 2 linear nan nan nan \n", - "22 23 iris 5 3 rbf 0.1 nan nan \n", - "23 24 iris 5 3 rbf 0.3 nan nan \n", - "24 25 iris 5 3 poly 0.1 3 0 \n", - "25 26 iris 5 3 poly 0.1 3 0.1 \n", - "26 27 iris 5 3 poly 0.1 4 0 \n", - "27 28 iris 5 3 poly 0.1 4 0.1 \n", - "28 29 iris 5 3 poly 0.3 3 0 \n", - "29 30 iris 5 3 poly 0.3 3 0.1 \n", - "30 31 iris 5 3 poly 0.3 4 0 \n", - "31 32 iris 5 3 poly 0.3 4 0.1 \n", - "32 33 iris 5 3 linear nan nan nan \n", - "33 34 iris 5 4 rbf 0.1 nan nan \n", - "34 35 iris 5 4 rbf 0.3 nan nan \n", - "35 36 iris 5 4 poly 0.1 3 0 \n", - "36 37 iris 5 4 poly 0.1 3 0.1 \n", - "37 38 iris 5 4 poly 0.1 4 0 \n", - "38 39 iris 5 4 poly 0.1 4 0.1 \n", - "39 40 iris 5 4 poly 0.3 3 0 \n", - "40 41 iris 5 4 poly 0.3 3 0.1 \n", - "41 42 iris 5 4 poly 0.3 4 0 \n", - "42 43 iris 5 4 poly 0.3 4 0.1 \n", - "43 44 iris 5 4 linear nan nan nan \n", - "44 45 iris 5 5 rbf 0.1 nan nan \n", - "45 46 iris 5 5 rbf 0.3 nan nan \n", - "46 47 iris 5 5 poly 0.1 3 0 \n", - "47 48 iris 5 5 poly 0.1 3 0.1 \n", - "48 49 iris 5 5 poly 0.1 4 0 \n", - "49 50 iris 5 5 poly 0.1 4 0.1 \n", - "50 51 iris 5 5 poly 0.3 3 0 \n", - "51 52 iris 5 5 poly 0.3 3 0.1 \n", - "52 53 iris 5 5 poly 0.3 4 0 \n", - "53 54 iris 5 5 poly 0.3 4 0.1 \n", - "54 55 iris 5 5 linear nan nan nan \n", + " ID dataset cross_validation_splits seed kernel gamma degree coef0 \\\n", + "0 1 iris 5 1 rbf 0.1 NaN NaN \n", + "1 2 iris 5 1 rbf 0.3 NaN NaN \n", + "2 3 iris 5 1 poly 0.1 3.0 0.0 \n", + "3 4 iris 5 1 poly 0.1 3.0 0.1 \n", + "4 5 iris 5 1 poly 0.1 4.0 0.0 \n", + "5 6 iris 5 1 poly 0.1 4.0 0.1 \n", + "6 7 iris 5 1 poly 0.3 3.0 0.0 \n", + "7 8 iris 5 1 poly 0.3 3.0 0.1 \n", + "8 9 iris 5 1 poly 0.3 4.0 0.0 \n", + "9 10 iris 5 1 poly 0.3 4.0 0.1 \n", + "10 11 iris 5 1 linear NaN NaN NaN \n", + "11 12 iris 5 2 rbf 0.1 NaN NaN \n", + "12 13 iris 5 2 rbf 0.3 NaN NaN \n", + "13 14 iris 5 2 poly 0.1 3.0 0.0 \n", + "14 15 iris 5 2 poly 0.1 3.0 0.1 \n", + "15 16 iris 5 2 poly 0.1 4.0 0.0 \n", + "16 17 iris 5 2 poly 0.1 4.0 0.1 \n", + "17 18 iris 5 2 poly 0.3 3.0 0.0 \n", + "18 19 iris 5 2 poly 0.3 3.0 0.1 \n", + "19 20 iris 5 2 poly 0.3 4.0 0.0 \n", + "20 21 iris 5 2 poly 0.3 4.0 0.1 \n", + "21 22 iris 5 2 linear NaN NaN NaN \n", + "22 23 iris 5 3 rbf 0.1 NaN NaN \n", + "23 24 iris 5 3 rbf 0.3 NaN NaN \n", + "24 25 iris 5 3 poly 0.1 3.0 0.0 \n", + "25 26 iris 5 3 poly 0.1 3.0 0.1 \n", + "26 27 iris 5 3 poly 0.1 4.0 0.0 \n", + "27 28 iris 5 3 poly 0.1 4.0 0.1 \n", + "28 29 iris 5 3 poly 0.3 3.0 0.0 \n", + "29 30 iris 5 3 poly 0.3 3.0 0.1 \n", + "30 31 iris 5 3 poly 0.3 4.0 0.0 \n", + "31 32 iris 5 3 poly 0.3 4.0 0.1 \n", + "32 33 iris 5 3 linear NaN NaN NaN \n", + "33 34 iris 5 4 rbf 0.1 NaN NaN \n", + "34 35 iris 5 4 rbf 0.3 NaN NaN \n", + "35 36 iris 5 4 poly 0.1 3.0 0.0 \n", + "36 37 iris 5 4 poly 0.1 3.0 0.1 \n", + "37 38 iris 5 4 poly 0.1 4.0 0.0 \n", + "38 39 iris 5 4 poly 0.1 4.0 0.1 \n", + "39 40 iris 5 4 poly 0.3 3.0 0.0 \n", + "40 41 iris 5 4 poly 0.3 3.0 0.1 \n", + "41 42 iris 5 4 poly 0.3 4.0 0.0 \n", + "42 43 iris 5 4 poly 0.3 4.0 0.1 \n", + "43 44 iris 5 4 linear NaN NaN NaN \n", + "44 45 iris 5 5 rbf 0.1 NaN NaN \n", + "45 46 iris 5 5 rbf 0.3 NaN NaN \n", + "46 47 iris 5 5 poly 0.1 3.0 0.0 \n", + "47 48 iris 5 5 poly 0.1 3.0 0.1 \n", + "48 49 iris 5 5 poly 0.1 4.0 0.0 \n", + "49 50 iris 5 5 poly 0.1 4.0 0.1 \n", + "50 51 iris 5 5 poly 0.3 3.0 0.0 \n", + "51 52 iris 5 5 poly 0.3 3.0 0.1 \n", + "52 53 iris 5 5 poly 0.3 4.0 0.0 \n", + "53 54 iris 5 5 poly 0.3 4.0 0.1 \n", + "54 55 iris 5 5 linear NaN NaN NaN \n", "\n", " creation_date status start_date name \\\n", - "0 2023-03-31 20:48:29 done 2023-03-31 20:48:29 SVM_experimenter_01 \n", - "1 2023-03-31 20:48:29 done 2023-03-31 20:48:29 SVM_experimenter_01 \n", - "2 2023-03-31 20:48:29 done 2023-03-31 20:48:30 SVM_experimenter_01 \n", - "3 2023-03-31 20:48:29 done 2023-03-31 20:48:31 SVM_experimenter_01 \n", - "4 2023-03-31 20:48:29 done 2023-03-31 20:48:32 SVM_experimenter_01 \n", - "5 2023-03-31 20:48:29 done 2023-03-31 20:48:33 SVM_experimenter_01 \n", - "6 2023-03-31 20:48:29 done 2023-03-31 20:48:35 SVM_experimenter_01 \n", - "7 2023-03-31 20:48:29 done 2023-03-31 20:48:36 SVM_experimenter_01 \n", - "8 2023-03-31 20:48:29 done 2023-03-31 20:48:37 SVM_experimenter_01 \n", - "9 2023-03-31 20:48:29 done 2023-03-31 20:48:38 SVM_experimenter_01 \n", - "10 2023-03-31 20:48:29 done 2023-03-31 20:48:39 SVM_experimenter_01 \n", - "11 2023-03-31 20:48:29 done 2023-03-31 20:48:40 SVM_experimenter_01 \n", - "12 2023-03-31 20:48:29 done 2023-03-31 20:48:41 SVM_experimenter_01 \n", - "13 2023-03-31 20:48:29 done 2023-03-31 20:48:41 SVM_experimenter_01 \n", - "14 2023-03-31 20:48:29 done 2023-03-31 20:48:41 SVM_experimenter_01 \n", - "15 2023-03-31 20:48:29 done 2023-03-31 20:48:41 SVM_experimenter_01 \n", - "16 2023-03-31 20:48:29 done 2023-03-31 20:48:41 SVM_experimenter_01 \n", - "17 2023-03-31 20:48:29 done 2023-03-31 20:48:41 SVM_experimenter_01 \n", - "18 2023-03-31 20:48:29 done 2023-03-31 20:48:41 SVM_experimenter_01 \n", - "19 2023-03-31 20:48:29 done 2023-03-31 20:48:41 SVM_experimenter_01 \n", - "20 2023-03-31 20:48:29 done 2023-03-31 20:48:41 SVM_experimenter_01 \n", - "21 2023-03-31 20:48:29 done 2023-03-31 20:48:41 SVM_experimenter_01 \n", - "22 2023-03-31 20:48:29 done 2023-03-31 20:48:41 SVM_experimenter_01 \n", - "23 2023-03-31 20:48:29 done 2023-03-31 20:48:41 SVM_experimenter_01 \n", - "24 2023-03-31 20:48:29 done 2023-03-31 20:48:42 SVM_experimenter_01 \n", - "25 2023-03-31 20:48:29 done 2023-03-31 20:48:43 SVM_experimenter_01 \n", - "26 2023-03-31 20:48:29 done 2023-03-31 20:48:44 SVM_experimenter_01 \n", - "27 2023-03-31 20:48:29 done 2023-03-31 20:48:45 SVM_experimenter_01 \n", - "28 2023-03-31 20:48:29 done 2023-03-31 20:48:46 SVM_experimenter_01 \n", - "29 2023-03-31 20:48:29 done 2023-03-31 20:48:47 SVM_experimenter_01 \n", - "30 2023-03-31 20:48:29 done 2023-03-31 20:48:48 SVM_experimenter_01 \n", - "31 2023-03-31 20:48:29 done 2023-03-31 20:48:49 SVM_experimenter_01 \n", - "32 2023-03-31 20:48:29 done 2023-03-31 20:48:50 SVM_experimenter_01 \n", - "33 2023-03-31 20:48:29 done 2023-03-31 20:48:51 SVM_experimenter_01 \n", - "34 2023-03-31 20:48:29 done 2023-03-31 20:48:52 SVM_experimenter_01 \n", - "35 2023-03-31 20:48:29 done 2023-03-31 20:48:53 SVM_experimenter_01 \n", - "36 2023-03-31 20:48:29 done 2023-03-31 20:48:54 SVM_experimenter_01 \n", - "37 2023-03-31 20:48:29 done 2023-03-31 20:48:55 SVM_experimenter_01 \n", - "38 2023-03-31 20:48:29 done 2023-03-31 20:48:57 SVM_experimenter_01 \n", - "39 2023-03-31 20:48:29 done 2023-03-31 20:48:58 SVM_experimenter_01 \n", - "40 2023-03-31 20:48:29 done 2023-03-31 20:48:59 SVM_experimenter_01 \n", - "41 2023-03-31 20:48:29 done 2023-03-31 20:49:00 SVM_experimenter_01 \n", - "42 2023-03-31 20:48:29 done 2023-03-31 20:49:01 SVM_experimenter_01 \n", - "43 2023-03-31 20:48:29 done 2023-03-31 20:49:02 SVM_experimenter_01 \n", - "44 2023-03-31 20:48:29 done 2023-03-31 20:49:03 SVM_experimenter_01 \n", - "45 2023-03-31 20:48:29 done 2023-03-31 20:49:04 SVM_experimenter_01 \n", - "46 2023-03-31 20:48:29 done 2023-03-31 20:49:08 SVM_experimenter_01 \n", - "47 2023-03-31 20:48:29 done 2023-03-31 20:49:12 SVM_experimenter_01 \n", - "48 2023-03-31 20:48:29 done 2023-03-31 20:49:16 SVM_experimenter_01 \n", - "49 2023-03-31 20:48:29 done 2023-03-31 20:49:20 SVM_experimenter_01 \n", - "50 2023-03-31 20:48:29 done 2023-03-31 20:49:24 SVM_experimenter_01 \n", - "51 2023-03-31 20:48:29 done 2023-03-31 20:49:28 SVM_experimenter_01 \n", - "52 2023-03-31 20:48:29 done 2023-03-31 20:49:32 SVM_experimenter_01 \n", - "53 2023-03-31 20:48:29 done 2023-03-31 20:49:36 SVM_experimenter_01 \n", - "54 2023-03-31 20:48:29 done 2023-03-31 20:49:40 SVM_experimenter_01 \n", + "0 2023-05-19 12:35:20 done 2023-05-19 12:35:21 SVM_experimenter_01 \n", + "1 2023-05-19 12:35:20 done 2023-05-19 12:35:29 SVM_experimenter_01 \n", + "2 2023-05-19 12:35:20 done 2023-05-19 12:35:35 SVM_experimenter_01 \n", + "3 2023-05-19 12:35:20 done 2023-05-19 12:35:41 SVM_experimenter_01 \n", + "4 2023-05-19 12:35:20 done 2023-05-19 12:35:47 SVM_experimenter_01 \n", + "5 2023-05-19 12:35:20 done 2023-05-19 12:35:53 SVM_experimenter_01 \n", + "6 2023-05-19 12:35:20 done 2023-05-19 12:35:58 SVM_experimenter_01 \n", + "7 2023-05-19 12:35:20 done 2023-05-19 12:36:04 SVM_experimenter_01 \n", + "8 2023-05-19 12:35:20 done 2023-05-19 12:36:10 SVM_experimenter_01 \n", + "9 2023-05-19 12:35:20 done 2023-05-19 12:36:16 SVM_experimenter_01 \n", + "10 2023-05-19 12:35:20 done 2023-05-19 12:36:22 SVM_experimenter_01 \n", + "11 2023-05-19 12:35:20 done 2023-05-19 12:36:28 SVM_experimenter_01 \n", + "12 2023-05-19 12:35:20 done 2023-05-19 12:36:34 SVM_experimenter_01 \n", + "13 2023-05-19 12:35:20 done 2023-05-19 12:36:39 SVM_experimenter_01 \n", + "14 2023-05-19 12:35:20 done 2023-05-19 12:36:44 SVM_experimenter_01 \n", + "15 2023-05-19 12:35:20 done 2023-05-19 12:36:49 SVM_experimenter_01 \n", + "16 2023-05-19 12:35:20 done 2023-05-19 12:36:54 SVM_experimenter_01 \n", + "17 2023-05-19 12:35:20 done 2023-05-19 12:36:59 SVM_experimenter_01 \n", + "18 2023-05-19 12:35:20 done 2023-05-19 12:37:04 SVM_experimenter_01 \n", + "19 2023-05-19 12:35:20 done 2023-05-19 12:37:09 SVM_experimenter_01 \n", + "20 2023-05-19 12:35:20 done 2023-05-19 12:37:14 SVM_experimenter_01 \n", + "21 2023-05-19 12:35:20 done 2023-05-19 12:37:19 SVM_experimenter_01 \n", + "22 2023-05-19 12:35:20 done 2023-05-19 12:37:24 SVM_experimenter_01 \n", + "23 2023-05-19 12:35:20 done 2023-05-19 12:37:28 SVM_experimenter_01 \n", + "24 2023-05-19 12:35:20 done 2023-05-19 12:37:35 SVM_experimenter_01 \n", + "25 2023-05-19 12:35:20 done 2023-05-19 12:37:41 SVM_experimenter_01 \n", + "26 2023-05-19 12:35:20 done 2023-05-19 12:37:46 SVM_experimenter_01 \n", + "27 2023-05-19 12:35:20 done 2023-05-19 12:37:52 SVM_experimenter_01 \n", + "28 2023-05-19 12:35:20 done 2023-05-19 12:37:58 SVM_experimenter_01 \n", + "29 2023-05-19 12:35:20 done 2023-05-19 12:38:04 SVM_experimenter_01 \n", + "30 2023-05-19 12:35:20 done 2023-05-19 12:38:10 SVM_experimenter_01 \n", + "31 2023-05-19 12:35:20 done 2023-05-19 12:38:16 SVM_experimenter_01 \n", + "32 2023-05-19 12:35:20 done 2023-05-19 12:38:22 SVM_experimenter_01 \n", + "33 2023-05-19 12:35:20 done 2023-05-19 12:38:28 SVM_experimenter_01 \n", + "34 2023-05-19 12:35:20 done 2023-05-19 12:38:34 SVM_experimenter_01 \n", + "35 2023-05-19 12:35:20 done 2023-05-19 12:38:40 SVM_experimenter_01 \n", + "36 2023-05-19 12:35:20 done 2023-05-19 12:38:46 SVM_experimenter_01 \n", + "37 2023-05-19 12:35:20 done 2023-05-19 12:38:52 SVM_experimenter_01 \n", + "38 2023-05-19 12:35:20 done 2023-05-19 12:38:58 SVM_experimenter_01 \n", + "39 2023-05-19 12:35:20 done 2023-05-19 12:39:03 SVM_experimenter_01 \n", + "40 2023-05-19 12:35:20 done 2023-05-19 12:39:09 SVM_experimenter_01 \n", + "41 2023-05-19 12:35:20 done 2023-05-19 12:39:15 SVM_experimenter_01 \n", + "42 2023-05-19 12:35:20 done 2023-05-19 12:39:21 SVM_experimenter_01 \n", + "43 2023-05-19 12:35:20 done 2023-05-19 12:39:27 SVM_experimenter_01 \n", + "44 2023-05-19 12:35:20 done 2023-05-19 12:39:33 SVM_experimenter_01 \n", + "45 2023-05-19 12:35:20 done 2023-05-19 12:39:39 SVM_experimenter_01 \n", + "46 2023-05-19 12:35:20 done 2023-05-19 12:39:48 SVM_experimenter_01 \n", + "47 2023-05-19 12:35:20 done 2023-05-19 12:39:58 SVM_experimenter_01 \n", + "48 2023-05-19 12:35:20 done 2023-05-19 12:40:07 SVM_experimenter_01 \n", + "49 2023-05-19 12:35:20 done 2023-05-19 12:40:15 SVM_experimenter_01 \n", + "50 2023-05-19 12:35:20 done 2023-05-19 12:40:24 SVM_experimenter_01 \n", + "51 2023-05-19 12:35:20 done 2023-05-19 12:40:33 SVM_experimenter_01 \n", + "52 2023-05-19 12:35:20 done 2023-05-19 12:40:42 SVM_experimenter_01 \n", + "53 2023-05-19 12:35:20 done 2023-05-19 12:40:51 SVM_experimenter_01 \n", + "54 2023-05-19 12:35:20 done 2023-05-19 12:41:00 SVM_experimenter_01 \n", "\n", - " machine train_f1 train_accuracy test_f1 \\\n", - "0 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "1 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "2 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "3 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "4 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "5 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "6 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "7 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "8 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "9 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "10 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "11 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "12 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "13 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "14 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "15 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "16 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "17 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "18 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "19 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "20 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "21 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "22 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "23 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "24 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "25 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "26 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "27 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "28 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "29 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "30 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "31 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "32 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "33 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "34 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "35 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "36 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "37 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "38 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "39 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "40 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "41 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "42 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "43 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "44 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "45 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "46 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "47 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "48 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "49 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "50 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "51 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "52 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "53 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", - "54 MacBook-Pro-von-Tanja.local 0.975 0.975 0.966667 \n", + " machine train_f1 train_accuracy test_f1 test_accuracy \\\n", + "0 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "1 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "2 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "3 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "4 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "5 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "6 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "7 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "8 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "9 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "10 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "11 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "12 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "13 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "14 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "15 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "16 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "17 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "18 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "19 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "20 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "21 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "22 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "23 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "24 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "25 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "26 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "27 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "28 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "29 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "30 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "31 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "32 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "33 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "34 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "35 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "36 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "37 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "38 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "39 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "40 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "41 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "42 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "43 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "44 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "45 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "46 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "47 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "48 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "49 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "50 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "51 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "52 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "53 Worklaptop 0.975 0.975 0.966667 0.966667 \n", + "54 Worklaptop 0.975 0.975 0.966667 0.966667 \n", "\n", - " test_accuracy end_date error \n", - "0 0.966667 2023-03-31 20:48:29 None \n", - "1 0.966667 2023-03-31 20:48:30 None \n", - "2 0.966667 2023-03-31 20:48:31 None \n", - "3 0.966667 2023-03-31 20:48:32 None \n", - "4 0.966667 2023-03-31 20:48:33 None \n", - "5 0.966667 2023-03-31 20:48:35 None \n", - "6 0.966667 2023-03-31 20:48:36 None \n", - "7 0.966667 2023-03-31 20:48:37 None \n", - "8 0.966667 2023-03-31 20:48:38 None \n", - "9 0.966667 2023-03-31 20:48:39 None \n", - "10 0.966667 2023-03-31 20:48:40 None \n", - "11 0.966667 2023-03-31 20:48:41 None \n", - "12 0.966667 2023-03-31 20:48:41 None \n", - "13 0.966667 2023-03-31 20:48:41 None \n", - "14 0.966667 2023-03-31 20:48:41 None \n", - "15 0.966667 2023-03-31 20:48:41 None \n", - "16 0.966667 2023-03-31 20:48:41 None \n", - "17 0.966667 2023-03-31 20:48:41 None \n", - "18 0.966667 2023-03-31 20:48:41 None \n", - "19 0.966667 2023-03-31 20:48:41 None \n", - "20 0.966667 2023-03-31 20:48:41 None \n", - "21 0.966667 2023-03-31 20:48:41 None \n", - "22 0.966667 2023-03-31 20:48:41 None \n", - "23 0.966667 2023-03-31 20:48:42 None \n", - "24 0.966667 2023-03-31 20:48:43 None \n", - "25 0.966667 2023-03-31 20:48:44 None \n", - "26 0.966667 2023-03-31 20:48:45 None \n", - "27 0.966667 2023-03-31 20:48:46 None \n", - "28 0.966667 2023-03-31 20:48:47 None \n", - "29 0.966667 2023-03-31 20:48:48 None \n", - "30 0.966667 2023-03-31 20:48:49 None \n", - "31 0.966667 2023-03-31 20:48:50 None \n", - "32 0.966667 2023-03-31 20:48:51 None \n", - "33 0.966667 2023-03-31 20:48:52 None \n", - "34 0.966667 2023-03-31 20:48:53 None \n", - "35 0.966667 2023-03-31 20:48:54 None \n", - "36 0.966667 2023-03-31 20:48:55 None \n", - "37 0.966667 2023-03-31 20:48:57 None \n", - "38 0.966667 2023-03-31 20:48:58 None \n", - "39 0.966667 2023-03-31 20:48:59 None \n", - "40 0.966667 2023-03-31 20:49:00 None \n", - "41 0.966667 2023-03-31 20:49:01 None \n", - "42 0.966667 2023-03-31 20:49:02 None \n", - "43 0.966667 2023-03-31 20:49:03 None \n", - "44 0.966667 2023-03-31 20:49:04 None \n", - "45 0.966667 2023-03-31 20:49:08 None \n", - "46 0.966667 2023-03-31 20:49:12 None \n", - "47 0.966667 2023-03-31 20:49:16 None \n", - "48 0.966667 2023-03-31 20:49:20 None \n", - "49 0.966667 2023-03-31 20:49:24 None \n", - "50 0.966667 2023-03-31 20:49:28 None \n", - "51 0.966667 2023-03-31 20:49:32 None \n", - "52 0.966667 2023-03-31 20:49:36 None \n", - "53 0.966667 2023-03-31 20:49:40 None \n", - "54 0.966667 2023-03-31 20:49:44 None " + " end_date error \n", + "0 2023-05-19 12:35:29 None \n", + "1 2023-05-19 12:35:34 None \n", + "2 2023-05-19 12:35:41 None \n", + "3 2023-05-19 12:35:46 None \n", + "4 2023-05-19 12:35:52 None \n", + "5 2023-05-19 12:35:58 None \n", + "6 2023-05-19 12:36:04 None \n", + "7 2023-05-19 12:36:10 None \n", + "8 2023-05-19 12:36:16 None \n", + "9 2023-05-19 12:36:22 None \n", + "10 2023-05-19 12:36:28 None \n", + "11 2023-05-19 12:36:34 None \n", + "12 2023-05-19 12:36:39 None \n", + "13 2023-05-19 12:36:44 None \n", + "14 2023-05-19 12:36:49 None \n", + "15 2023-05-19 12:36:54 None \n", + "16 2023-05-19 12:36:59 None \n", + "17 2023-05-19 12:37:04 None \n", + "18 2023-05-19 12:37:09 None \n", + "19 2023-05-19 12:37:14 None \n", + "20 2023-05-19 12:37:19 None \n", + "21 2023-05-19 12:37:24 None \n", + "22 2023-05-19 12:37:28 None \n", + "23 2023-05-19 12:37:34 None \n", + "24 2023-05-19 12:37:40 None \n", + "25 2023-05-19 12:37:46 None \n", + "26 2023-05-19 12:37:52 None \n", + "27 2023-05-19 12:37:58 None \n", + "28 2023-05-19 12:38:04 None \n", + "29 2023-05-19 12:38:10 None \n", + "30 2023-05-19 12:38:16 None \n", + "31 2023-05-19 12:38:22 None \n", + "32 2023-05-19 12:38:28 None \n", + "33 2023-05-19 12:38:34 None \n", + "34 2023-05-19 12:38:39 None \n", + "35 2023-05-19 12:38:45 None \n", + "36 2023-05-19 12:38:52 None \n", + "37 2023-05-19 12:38:57 None \n", + "38 2023-05-19 12:39:03 None \n", + "39 2023-05-19 12:39:09 None \n", + "40 2023-05-19 12:39:15 None \n", + "41 2023-05-19 12:39:21 None \n", + "42 2023-05-19 12:39:27 None \n", + "43 2023-05-19 12:39:33 None \n", + "44 2023-05-19 12:39:39 None \n", + "45 2023-05-19 12:39:48 None \n", + "46 2023-05-19 12:39:58 None \n", + "47 2023-05-19 12:40:07 None \n", + "48 2023-05-19 12:40:15 None \n", + "49 2023-05-19 12:40:24 None \n", + "50 2023-05-19 12:40:33 None \n", + "51 2023-05-19 12:40:42 None \n", + "52 2023-05-19 12:40:51 None \n", + "53 2023-05-19 12:41:00 None \n", + "54 2023-05-19 12:41:09 None " ] }, "execution_count": 5, @@ -3182,6 +3181,1688 @@ "# showing database table\n", "experimenter.get_table() " ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### CodeCarbon table\n", + "Lastly one should note that `CodeCarbon`is beeing used unless `use_codecarbon=False` is set in the `PyExperimenter` constructor. This will create a table called with suffix `_codecarbon` in the database, which contains the carbon footprint of the executed experiments. See below for an example of how to obtain this table." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDexperiment_idcodecarbon_timestampproject_namerun_iddurationemissionsemissions_ratecpu_powergpu_power...cpu_countcpu_modelgpu_countgpu_modellongitudelatituderam_total_sizetracking_modeon_cloudoffline_mode
0112023-05-19T12:35:29codecarbon06d563d3-0e78-47c1-b241-137074bfba223.084900856018071.09425916691682e-053.54714533137142e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
1222023-05-19T12:35:35codecarbon5a4fd7dc-9649-4d09-a81e-87f638e983441.079064607620243.80538977373226e-063.52656342063209e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
2332023-05-19T12:35:41codecarbon51233d63-d4e2-4023-bc16-2cbc3a7aadfc1.083540678024293.82178268545673e-063.52712432764897e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
3442023-05-19T12:35:47codecarbon56486bfc-a67b-4cfa-b708-fa92eec9e2651.085682392120363.83004974819692e-063.52778103061684e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
4552023-05-19T12:35:53codecarbonb60ef3be-7415-4ea0-9dc6-2bb7d696afa81.08612918853763.83197575475978e-063.52810309786379e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
5662023-05-19T12:35:58codecarbon520864f6-3fba-4969-acab-67b1a2a9bf3e1.085148096084593.82731169364381e-063.526994801404e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
6772023-05-19T12:36:04codecarbon4192af20-3f0a-4b37-8b22-a223f412e0c61.073585748672493.78597746769453e-063.52647887919152e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
7882023-05-19T12:36:10codecarbon9ccccf83-293b-494a-8d83-22a49d819a541.074320077896123.78038400819344e-063.5188619164567e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
8992023-05-19T12:36:16codecarbonc5cc1ee7-7adb-4136-80a7-6ff6aa5354f61.071204423904423.77649743156749e-063.52546847949207e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
910102023-05-19T12:36:22codecarbon640e77cb-8eef-4ae8-82b4-e9b246fdeaac1.079541683197023.80762955898711e-063.52707970266693e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
1011112023-05-19T12:36:28codecarbon9dd99a5f-88e4-41ab-8d05-24afb8391de81.076187133789063.79666466117743e-063.52788519949133e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
1112122023-05-19T12:36:34codecarbon772194d2-05c2-498c-8a77-b722230b7de91.088048934936523.83629093084057e-063.52584411202459e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
1213132023-05-19T12:36:39codecarbon2a467325-1106-4afa-8eeb-5cebd37038440.07872200012207032.46429718486838e-073.13037928539304e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
1314142023-05-19T12:36:44codecarbon066230d7-35d1-4a13-920c-47d2d231773b0.07246160507202152.23807950991659e-073.08864191966505e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
1415152023-05-19T12:36:49codecarbonf1fd15d2-1e3a-4751-ba67-d294f3595c7c0.072042703628542.19593147741606e-073.04809698528045e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
1516162023-05-19T12:36:54codecarbon174ddeaa-e8f1-42d6-83d9-58ffd5dc69f40.07809305191040042.43369839328174e-073.11640835355497e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
1617172023-05-19T12:36:59codecarbon9e1fadcd-f9a3-4281-8269-16861e396ef30.07274866104125982.20229200722005e-073.02726122474064e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
1718182023-05-19T12:37:04codecarbonde5ef04b-c1e6-4202-913f-c2b0b5b250680.07339215278625492.24548170749224e-073.05956648258012e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
1819192023-05-19T12:37:09codecarbon226fcf89-c914-4795-aa59-31996c0b67100.06952548027038572.12476291883872e-073.05609240033364e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
1920202023-05-19T12:37:14codecarbon637d20b3-40e4-483d-808b-4fae841048910.06656956672668462.01763090722936e-073.03086080688067e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
2021212023-05-19T12:37:19codecarbonff8d2162-aa18-44b9-a7d9-4c917be0c5270.06716251373291022.06389879657236e-073.07299218248443e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
2122222023-05-19T12:37:24codecarbondc64f069-3274-42e0-98a4-219608cb44e10.0737843513488772.25377520074846e-073.05454362550653e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
2223232023-05-19T12:37:28codecarbon910df388-d69b-4f0b-9b88-f5b28f1cf6300.07026338577270512.17003045113299e-073.08842283540509e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
2324242023-05-19T12:37:35codecarbon3e904b90-1516-49da-a7d5-5b17c0bf325e1.072011470794683.78074106356503e-063.52677295585502e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
2425252023-05-19T12:37:41codecarbond3664c8c-e011-4e9f-9958-4be58a48c42e1.065543651580813.75121192305875e-063.52046761997367e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
2526262023-05-19T12:37:46codecarbon89346e7d-30cc-48d4-813f-9a8e5c5388c31.063736200332643.7501467281695e-063.52544806409407e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
2627272023-05-19T12:37:52codecarbon4e43c549-f225-43de-b356-17b6df3ef2a11.070300817489623.77353211202833e-063.52567432479319e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
2728282023-05-19T12:37:58codecarbon4ee9027c-9279-47cc-af10-35d7726720241.062943220138553.7470264221061e-063.52514259568605e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
2829292023-05-19T12:38:04codecarbon22321182-b9a5-4941-87b2-3d179c25c8d01.072390556335453.76550771324514e-063.51132121688254e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
2930302023-05-19T12:38:10codecarbon5f30b06b-78e5-4f22-b59b-18af28654b151.068105459213263.76506775521457e-063.52499626580678e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
3031312023-05-19T12:38:16codecarbonc03f1b59-a583-4f2e-b146-01637f9ce9681.085703134536743.82607877165699e-063.52405611621406e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
3132322023-05-19T12:38:22codecarbone7ce214a-4554-4fed-9f31-92e5104b2bb51.085236310958863.82605020846788e-063.52554569897073e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
3233332023-05-19T12:38:28codecarbon1453b05a-f762-4ac1-8c7c-e593e2e5796d1.071876525878913.77644726917521e-063.52321109567973e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
3334342023-05-19T12:38:34codecarbonc5f88f71-5264-4992-bd70-5efb7f38f7201.077123880386353.78969364158273e-063.51834520670307e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
3435352023-05-19T12:38:40codecarbon11123d37-6e98-4578-bb14-477e1d5e83e71.088052511215213.83498643102442e-063.52463359212438e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
3536362023-05-19T12:38:46codecarbona6fbe77c-0c62-4673-a8af-09bd231a13be1.092878103256233.85004164375536e-063.52284635613449e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
3637372023-05-19T12:38:52codecarbon5fb7345e-f378-4eea-a208-b20386d7aab31.091056108474733.84318255180576e-063.52244263329265e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
3738382023-05-19T12:38:58codecarbon93327852-2241-414e-9c50-8b025a53ff3f1.074050664901733.78797035218345e-063.52680788343445e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
3839392023-05-19T12:39:03codecarbon986c0916-3af1-4b5b-87c9-6f8736d159911.085020542144783.82725234821744e-063.52735473620809e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
3940402023-05-19T12:39:09codecarbon237a3535-d8fc-4ead-827a-6b686865e8b21.092403411865233.85210222813307e-063.52626345386066e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
4041412023-05-19T12:39:15codecarbon70993086-0f6a-48da-a3eb-894ee706735d1.080163478851323.80131812235055e-063.51920630235805e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
4142422023-05-19T12:39:21codecarbona1b7f9a1-b0bd-4024-adea-3c52784a749c1.083028793334963.80095258787536e-063.50955820497728e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
4243432023-05-19T12:39:27codecarbon79edfa87-ecdb-46d5-8dbb-0121b88cd7eb1.073147296905523.77907743608043e-063.52148996412479e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
4344442023-05-19T12:39:33codecarbonaad86555-5cc6-40a4-a324-67ac26e28d481.070850610733033.76784412093808e-063.51855252560286e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
4445452023-05-19T12:39:39codecarbonfe15f099-33b9-4de6-8122-2068f3bf03401.0802469253543.80808654074918e-063.52520007358618e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
4546462023-05-19T12:39:48codecarbon617c3782-e435-4e85-a4a0-d5b2e2f1eac94.06983566284181.4439342434211e-053.54789323953405e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
4647472023-05-19T12:39:58codecarbon9c41d993-4f4b-48ec-96e5-e36fdffe25184.096447467803961.45225789063942e-053.5451641991102e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
4748482023-05-19T12:40:07codecarbon04e22fca-2490-45c9-aab9-9773b9811b924.10800147056581.45745905431977e-053.5478542662718e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
4849492023-05-19T12:40:15codecarbona5f82177-0cf2-4e2e-aef4-52fddbd9c6ee4.074949502944951.44631811869071e-053.54929089954479e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
4950502023-05-19T12:40:24codecarbon3a490e44-d21f-4b68-b350-6c770efdc8754.090702295303341.45019421028167e-053.54509838554295e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
5051512023-05-19T12:40:33codecarboncc075733-49bb-41ca-8dab-ec8fdcc832fe4.090598583221441.45127969979698e-053.5478418873701e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
5152522023-05-19T12:40:42codecarbon6b1b5dcf-6c66-4ad3-b7d1-49ff741f2d2c4.078764200210571.44760445753805e-053.549125143011e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
5253532023-05-19T12:40:51codecarbon711badb2-1173-497d-96e9-f8b2344f09c94.077890634536741.44733585974861e-053.54922676810097e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
5354542023-05-19T12:41:00codecarbon8755695c-80a2-4128-8db5-1e3ed37e373a4.085171222686771.44968737007491e-053.5486575495885e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
5455552023-05-19T12:41:09codecarbone1dc96fe-b3ad-4f31-8ce4-04ef0f15125f4.087292909622191.44935111215096e-053.54599277369853e-0642.50.0...1612th Gen Intel(R) Core(TM) i7-1260PNoneNone9.49151.299315.4748764038086processN0
\n", + "

55 rows × 33 columns

\n", + "
" + ], + "text/plain": [ + " ID experiment_id codecarbon_timestamp project_name \\\n", + "0 1 1 2023-05-19T12:35:29 codecarbon \n", + "1 2 2 2023-05-19T12:35:35 codecarbon \n", + "2 3 3 2023-05-19T12:35:41 codecarbon \n", + "3 4 4 2023-05-19T12:35:47 codecarbon \n", + "4 5 5 2023-05-19T12:35:53 codecarbon \n", + "5 6 6 2023-05-19T12:35:58 codecarbon \n", + "6 7 7 2023-05-19T12:36:04 codecarbon \n", + "7 8 8 2023-05-19T12:36:10 codecarbon \n", + "8 9 9 2023-05-19T12:36:16 codecarbon \n", + "9 10 10 2023-05-19T12:36:22 codecarbon \n", + "10 11 11 2023-05-19T12:36:28 codecarbon \n", + "11 12 12 2023-05-19T12:36:34 codecarbon \n", + "12 13 13 2023-05-19T12:36:39 codecarbon \n", + "13 14 14 2023-05-19T12:36:44 codecarbon \n", + "14 15 15 2023-05-19T12:36:49 codecarbon \n", + "15 16 16 2023-05-19T12:36:54 codecarbon \n", + "16 17 17 2023-05-19T12:36:59 codecarbon \n", + "17 18 18 2023-05-19T12:37:04 codecarbon \n", + "18 19 19 2023-05-19T12:37:09 codecarbon \n", + "19 20 20 2023-05-19T12:37:14 codecarbon \n", + "20 21 21 2023-05-19T12:37:19 codecarbon \n", + "21 22 22 2023-05-19T12:37:24 codecarbon \n", + "22 23 23 2023-05-19T12:37:28 codecarbon \n", + "23 24 24 2023-05-19T12:37:35 codecarbon \n", + "24 25 25 2023-05-19T12:37:41 codecarbon \n", + "25 26 26 2023-05-19T12:37:46 codecarbon \n", + "26 27 27 2023-05-19T12:37:52 codecarbon \n", + "27 28 28 2023-05-19T12:37:58 codecarbon \n", + "28 29 29 2023-05-19T12:38:04 codecarbon \n", + "29 30 30 2023-05-19T12:38:10 codecarbon \n", + "30 31 31 2023-05-19T12:38:16 codecarbon \n", + "31 32 32 2023-05-19T12:38:22 codecarbon \n", + "32 33 33 2023-05-19T12:38:28 codecarbon \n", + "33 34 34 2023-05-19T12:38:34 codecarbon \n", + "34 35 35 2023-05-19T12:38:40 codecarbon \n", + "35 36 36 2023-05-19T12:38:46 codecarbon \n", + "36 37 37 2023-05-19T12:38:52 codecarbon \n", + "37 38 38 2023-05-19T12:38:58 codecarbon \n", + "38 39 39 2023-05-19T12:39:03 codecarbon \n", + "39 40 40 2023-05-19T12:39:09 codecarbon \n", + "40 41 41 2023-05-19T12:39:15 codecarbon \n", + "41 42 42 2023-05-19T12:39:21 codecarbon \n", + "42 43 43 2023-05-19T12:39:27 codecarbon \n", + "43 44 44 2023-05-19T12:39:33 codecarbon \n", + "44 45 45 2023-05-19T12:39:39 codecarbon \n", + "45 46 46 2023-05-19T12:39:48 codecarbon \n", + "46 47 47 2023-05-19T12:39:58 codecarbon \n", + "47 48 48 2023-05-19T12:40:07 codecarbon \n", + "48 49 49 2023-05-19T12:40:15 codecarbon \n", + "49 50 50 2023-05-19T12:40:24 codecarbon \n", + "50 51 51 2023-05-19T12:40:33 codecarbon \n", + "51 52 52 2023-05-19T12:40:42 codecarbon \n", + "52 53 53 2023-05-19T12:40:51 codecarbon \n", + "53 54 54 2023-05-19T12:41:00 codecarbon \n", + "54 55 55 2023-05-19T12:41:09 codecarbon \n", + "\n", + " run_id duration \\\n", + "0 06d563d3-0e78-47c1-b241-137074bfba22 3.08490085601807 \n", + "1 5a4fd7dc-9649-4d09-a81e-87f638e98344 1.07906460762024 \n", + "2 51233d63-d4e2-4023-bc16-2cbc3a7aadfc 1.08354067802429 \n", + "3 56486bfc-a67b-4cfa-b708-fa92eec9e265 1.08568239212036 \n", + "4 b60ef3be-7415-4ea0-9dc6-2bb7d696afa8 1.0861291885376 \n", + "5 520864f6-3fba-4969-acab-67b1a2a9bf3e 1.08514809608459 \n", + "6 4192af20-3f0a-4b37-8b22-a223f412e0c6 1.07358574867249 \n", + "7 9ccccf83-293b-494a-8d83-22a49d819a54 1.07432007789612 \n", + "8 c5cc1ee7-7adb-4136-80a7-6ff6aa5354f6 1.07120442390442 \n", + "9 640e77cb-8eef-4ae8-82b4-e9b246fdeaac 1.07954168319702 \n", + "10 9dd99a5f-88e4-41ab-8d05-24afb8391de8 1.07618713378906 \n", + "11 772194d2-05c2-498c-8a77-b722230b7de9 1.08804893493652 \n", + "12 2a467325-1106-4afa-8eeb-5cebd3703844 0.0787220001220703 \n", + "13 066230d7-35d1-4a13-920c-47d2d231773b 0.0724616050720215 \n", + "14 f1fd15d2-1e3a-4751-ba67-d294f3595c7c 0.07204270362854 \n", + "15 174ddeaa-e8f1-42d6-83d9-58ffd5dc69f4 0.0780930519104004 \n", + "16 9e1fadcd-f9a3-4281-8269-16861e396ef3 0.0727486610412598 \n", + "17 de5ef04b-c1e6-4202-913f-c2b0b5b25068 0.0733921527862549 \n", + "18 226fcf89-c914-4795-aa59-31996c0b6710 0.0695254802703857 \n", + "19 637d20b3-40e4-483d-808b-4fae84104891 0.0665695667266846 \n", + "20 ff8d2162-aa18-44b9-a7d9-4c917be0c527 0.0671625137329102 \n", + "21 dc64f069-3274-42e0-98a4-219608cb44e1 0.073784351348877 \n", + "22 910df388-d69b-4f0b-9b88-f5b28f1cf630 0.0702633857727051 \n", + "23 3e904b90-1516-49da-a7d5-5b17c0bf325e 1.07201147079468 \n", + "24 d3664c8c-e011-4e9f-9958-4be58a48c42e 1.06554365158081 \n", + "25 89346e7d-30cc-48d4-813f-9a8e5c5388c3 1.06373620033264 \n", + "26 4e43c549-f225-43de-b356-17b6df3ef2a1 1.07030081748962 \n", + "27 4ee9027c-9279-47cc-af10-35d772672024 1.06294322013855 \n", + "28 22321182-b9a5-4941-87b2-3d179c25c8d0 1.07239055633545 \n", + "29 5f30b06b-78e5-4f22-b59b-18af28654b15 1.06810545921326 \n", + "30 c03f1b59-a583-4f2e-b146-01637f9ce968 1.08570313453674 \n", + "31 e7ce214a-4554-4fed-9f31-92e5104b2bb5 1.08523631095886 \n", + "32 1453b05a-f762-4ac1-8c7c-e593e2e5796d 1.07187652587891 \n", + "33 c5f88f71-5264-4992-bd70-5efb7f38f720 1.07712388038635 \n", + "34 11123d37-6e98-4578-bb14-477e1d5e83e7 1.08805251121521 \n", + "35 a6fbe77c-0c62-4673-a8af-09bd231a13be 1.09287810325623 \n", + "36 5fb7345e-f378-4eea-a208-b20386d7aab3 1.09105610847473 \n", + "37 93327852-2241-414e-9c50-8b025a53ff3f 1.07405066490173 \n", + "38 986c0916-3af1-4b5b-87c9-6f8736d15991 1.08502054214478 \n", + "39 237a3535-d8fc-4ead-827a-6b686865e8b2 1.09240341186523 \n", + "40 70993086-0f6a-48da-a3eb-894ee706735d 1.08016347885132 \n", + "41 a1b7f9a1-b0bd-4024-adea-3c52784a749c 1.08302879333496 \n", + "42 79edfa87-ecdb-46d5-8dbb-0121b88cd7eb 1.07314729690552 \n", + "43 aad86555-5cc6-40a4-a324-67ac26e28d48 1.07085061073303 \n", + "44 fe15f099-33b9-4de6-8122-2068f3bf0340 1.080246925354 \n", + "45 617c3782-e435-4e85-a4a0-d5b2e2f1eac9 4.0698356628418 \n", + "46 9c41d993-4f4b-48ec-96e5-e36fdffe2518 4.09644746780396 \n", + "47 04e22fca-2490-45c9-aab9-9773b9811b92 4.1080014705658 \n", + "48 a5f82177-0cf2-4e2e-aef4-52fddbd9c6ee 4.07494950294495 \n", + "49 3a490e44-d21f-4b68-b350-6c770efdc875 4.09070229530334 \n", + "50 cc075733-49bb-41ca-8dab-ec8fdcc832fe 4.09059858322144 \n", + "51 6b1b5dcf-6c66-4ad3-b7d1-49ff741f2d2c 4.07876420021057 \n", + "52 711badb2-1173-497d-96e9-f8b2344f09c9 4.07789063453674 \n", + "53 8755695c-80a2-4128-8db5-1e3ed37e373a 4.08517122268677 \n", + "54 e1dc96fe-b3ad-4f31-8ce4-04ef0f15125f 4.08729290962219 \n", + "\n", + " emissions emissions_rate cpu_power gpu_power ... \\\n", + "0 1.09425916691682e-05 3.54714533137142e-06 42.5 0.0 ... \n", + "1 3.80538977373226e-06 3.52656342063209e-06 42.5 0.0 ... \n", + "2 3.82178268545673e-06 3.52712432764897e-06 42.5 0.0 ... \n", + "3 3.83004974819692e-06 3.52778103061684e-06 42.5 0.0 ... \n", + "4 3.83197575475978e-06 3.52810309786379e-06 42.5 0.0 ... \n", + "5 3.82731169364381e-06 3.526994801404e-06 42.5 0.0 ... \n", + "6 3.78597746769453e-06 3.52647887919152e-06 42.5 0.0 ... \n", + "7 3.78038400819344e-06 3.5188619164567e-06 42.5 0.0 ... \n", + "8 3.77649743156749e-06 3.52546847949207e-06 42.5 0.0 ... \n", + "9 3.80762955898711e-06 3.52707970266693e-06 42.5 0.0 ... \n", + "10 3.79666466117743e-06 3.52788519949133e-06 42.5 0.0 ... \n", + "11 3.83629093084057e-06 3.52584411202459e-06 42.5 0.0 ... \n", + "12 2.46429718486838e-07 3.13037928539304e-06 42.5 0.0 ... \n", + "13 2.23807950991659e-07 3.08864191966505e-06 42.5 0.0 ... \n", + "14 2.19593147741606e-07 3.04809698528045e-06 42.5 0.0 ... \n", + "15 2.43369839328174e-07 3.11640835355497e-06 42.5 0.0 ... \n", + "16 2.20229200722005e-07 3.02726122474064e-06 42.5 0.0 ... \n", + "17 2.24548170749224e-07 3.05956648258012e-06 42.5 0.0 ... \n", + "18 2.12476291883872e-07 3.05609240033364e-06 42.5 0.0 ... \n", + "19 2.01763090722936e-07 3.03086080688067e-06 42.5 0.0 ... \n", + "20 2.06389879657236e-07 3.07299218248443e-06 42.5 0.0 ... \n", + "21 2.25377520074846e-07 3.05454362550653e-06 42.5 0.0 ... \n", + "22 2.17003045113299e-07 3.08842283540509e-06 42.5 0.0 ... \n", + "23 3.78074106356503e-06 3.52677295585502e-06 42.5 0.0 ... \n", + "24 3.75121192305875e-06 3.52046761997367e-06 42.5 0.0 ... \n", + "25 3.7501467281695e-06 3.52544806409407e-06 42.5 0.0 ... \n", + "26 3.77353211202833e-06 3.52567432479319e-06 42.5 0.0 ... \n", + "27 3.7470264221061e-06 3.52514259568605e-06 42.5 0.0 ... \n", + "28 3.76550771324514e-06 3.51132121688254e-06 42.5 0.0 ... \n", + "29 3.76506775521457e-06 3.52499626580678e-06 42.5 0.0 ... \n", + "30 3.82607877165699e-06 3.52405611621406e-06 42.5 0.0 ... \n", + "31 3.82605020846788e-06 3.52554569897073e-06 42.5 0.0 ... \n", + "32 3.77644726917521e-06 3.52321109567973e-06 42.5 0.0 ... \n", + "33 3.78969364158273e-06 3.51834520670307e-06 42.5 0.0 ... \n", + "34 3.83498643102442e-06 3.52463359212438e-06 42.5 0.0 ... \n", + "35 3.85004164375536e-06 3.52284635613449e-06 42.5 0.0 ... \n", + "36 3.84318255180576e-06 3.52244263329265e-06 42.5 0.0 ... \n", + "37 3.78797035218345e-06 3.52680788343445e-06 42.5 0.0 ... \n", + "38 3.82725234821744e-06 3.52735473620809e-06 42.5 0.0 ... \n", + "39 3.85210222813307e-06 3.52626345386066e-06 42.5 0.0 ... \n", + "40 3.80131812235055e-06 3.51920630235805e-06 42.5 0.0 ... \n", + "41 3.80095258787536e-06 3.50955820497728e-06 42.5 0.0 ... \n", + "42 3.77907743608043e-06 3.52148996412479e-06 42.5 0.0 ... \n", + "43 3.76784412093808e-06 3.51855252560286e-06 42.5 0.0 ... \n", + "44 3.80808654074918e-06 3.52520007358618e-06 42.5 0.0 ... \n", + "45 1.4439342434211e-05 3.54789323953405e-06 42.5 0.0 ... \n", + "46 1.45225789063942e-05 3.5451641991102e-06 42.5 0.0 ... \n", + "47 1.45745905431977e-05 3.5478542662718e-06 42.5 0.0 ... \n", + "48 1.44631811869071e-05 3.54929089954479e-06 42.5 0.0 ... \n", + "49 1.45019421028167e-05 3.54509838554295e-06 42.5 0.0 ... \n", + "50 1.45127969979698e-05 3.5478418873701e-06 42.5 0.0 ... \n", + "51 1.44760445753805e-05 3.549125143011e-06 42.5 0.0 ... \n", + "52 1.44733585974861e-05 3.54922676810097e-06 42.5 0.0 ... \n", + "53 1.44968737007491e-05 3.5486575495885e-06 42.5 0.0 ... \n", + "54 1.44935111215096e-05 3.54599277369853e-06 42.5 0.0 ... \n", + "\n", + " cpu_count cpu_model gpu_count gpu_model \\\n", + "0 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "1 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "2 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "3 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "4 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "5 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "6 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "7 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "8 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "9 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "10 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "11 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "12 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "13 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "14 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "15 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "16 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "17 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "18 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "19 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "20 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "21 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "22 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "23 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "24 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "25 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "26 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "27 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "28 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "29 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "30 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "31 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "32 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "33 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "34 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "35 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "36 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "37 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "38 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "39 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "40 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "41 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "42 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "43 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "44 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "45 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "46 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "47 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "48 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "49 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "50 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "51 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "52 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "53 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "54 16 12th Gen Intel(R) Core(TM) i7-1260P None None \n", + "\n", + " longitude latitude ram_total_size tracking_mode on_cloud offline_mode \n", + "0 9.491 51.2993 15.4748764038086 process N 0 \n", + "1 9.491 51.2993 15.4748764038086 process N 0 \n", + "2 9.491 51.2993 15.4748764038086 process N 0 \n", + "3 9.491 51.2993 15.4748764038086 process N 0 \n", + "4 9.491 51.2993 15.4748764038086 process N 0 \n", + "5 9.491 51.2993 15.4748764038086 process N 0 \n", + "6 9.491 51.2993 15.4748764038086 process N 0 \n", + "7 9.491 51.2993 15.4748764038086 process N 0 \n", + "8 9.491 51.2993 15.4748764038086 process N 0 \n", + "9 9.491 51.2993 15.4748764038086 process N 0 \n", + "10 9.491 51.2993 15.4748764038086 process N 0 \n", + "11 9.491 51.2993 15.4748764038086 process N 0 \n", + "12 9.491 51.2993 15.4748764038086 process N 0 \n", + "13 9.491 51.2993 15.4748764038086 process N 0 \n", + "14 9.491 51.2993 15.4748764038086 process N 0 \n", + "15 9.491 51.2993 15.4748764038086 process N 0 \n", + "16 9.491 51.2993 15.4748764038086 process N 0 \n", + "17 9.491 51.2993 15.4748764038086 process N 0 \n", + "18 9.491 51.2993 15.4748764038086 process N 0 \n", + "19 9.491 51.2993 15.4748764038086 process N 0 \n", + "20 9.491 51.2993 15.4748764038086 process N 0 \n", + "21 9.491 51.2993 15.4748764038086 process N 0 \n", + "22 9.491 51.2993 15.4748764038086 process N 0 \n", + "23 9.491 51.2993 15.4748764038086 process N 0 \n", + "24 9.491 51.2993 15.4748764038086 process N 0 \n", + "25 9.491 51.2993 15.4748764038086 process N 0 \n", + "26 9.491 51.2993 15.4748764038086 process N 0 \n", + "27 9.491 51.2993 15.4748764038086 process N 0 \n", + "28 9.491 51.2993 15.4748764038086 process N 0 \n", + "29 9.491 51.2993 15.4748764038086 process N 0 \n", + "30 9.491 51.2993 15.4748764038086 process N 0 \n", + "31 9.491 51.2993 15.4748764038086 process N 0 \n", + "32 9.491 51.2993 15.4748764038086 process N 0 \n", + "33 9.491 51.2993 15.4748764038086 process N 0 \n", + "34 9.491 51.2993 15.4748764038086 process N 0 \n", + "35 9.491 51.2993 15.4748764038086 process N 0 \n", + "36 9.491 51.2993 15.4748764038086 process N 0 \n", + "37 9.491 51.2993 15.4748764038086 process N 0 \n", + "38 9.491 51.2993 15.4748764038086 process N 0 \n", + "39 9.491 51.2993 15.4748764038086 process N 0 \n", + "40 9.491 51.2993 15.4748764038086 process N 0 \n", + "41 9.491 51.2993 15.4748764038086 process N 0 \n", + "42 9.491 51.2993 15.4748764038086 process N 0 \n", + "43 9.491 51.2993 15.4748764038086 process N 0 \n", + "44 9.491 51.2993 15.4748764038086 process N 0 \n", + "45 9.491 51.2993 15.4748764038086 process N 0 \n", + "46 9.491 51.2993 15.4748764038086 process N 0 \n", + "47 9.491 51.2993 15.4748764038086 process N 0 \n", + "48 9.491 51.2993 15.4748764038086 process N 0 \n", + "49 9.491 51.2993 15.4748764038086 process N 0 \n", + "50 9.491 51.2993 15.4748764038086 process N 0 \n", + "51 9.491 51.2993 15.4748764038086 process N 0 \n", + "52 9.491 51.2993 15.4748764038086 process N 0 \n", + "53 9.491 51.2993 15.4748764038086 process N 0 \n", + "54 9.491 51.2993 15.4748764038086 process N 0 \n", + "\n", + "[55 rows x 33 columns]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "experimenter.get_codecarbon_table()" + ] } ], "metadata": { diff --git a/docs/source/examples/example_general_usage.ipynb b/docs/source/examples/example_general_usage.ipynb index bc123ccb..57ec2515 100644 --- a/docs/source/examples/example_general_usage.ipynb +++ b/docs/source/examples/example_general_usage.ipynb @@ -19,6 +19,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "qkmxwSl8DW-V" @@ -55,6 +56,14 @@ "\n", "[CUSTOM] \n", "path = sample_data\n", + "\n", + "[codecarbon]\n", + "offline_mode = False\n", + "measure_power_secs = 25\n", + "tracking_mode = process\n", + "log_level = error\n", + "save_to_file = True\n", + "output_dir = output/CodeCarbon\n", "\"\"\"\n", "# Create config directory if it does not exist\n", "if not os.path.exists('config'):\n", @@ -67,6 +76,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "b5pjc0TMBjnr" @@ -137,6 +147,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "Sa6mN98NBua-" @@ -164,6 +175,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "tdLXOI7eFhBh" @@ -236,7 +248,7 @@ " 5\n", " 2\n", " linear\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " created\n", " None\n", " None\n", @@ -256,7 +268,7 @@ " 5\n", " 4\n", " linear\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " created\n", " None\n", " None\n", @@ -276,7 +288,7 @@ " 5\n", " 6\n", " linear\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " created\n", " None\n", " None\n", @@ -296,7 +308,7 @@ " 5\n", " 2\n", " poly\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " created\n", " None\n", " None\n", @@ -316,7 +328,7 @@ " 5\n", " 4\n", " poly\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " created\n", " None\n", " None\n", @@ -336,7 +348,7 @@ " 5\n", " 6\n", " poly\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " created\n", " None\n", " None\n", @@ -356,7 +368,7 @@ " 5\n", " 2\n", " rbf\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " created\n", " None\n", " None\n", @@ -376,7 +388,7 @@ " 5\n", " 4\n", " rbf\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " created\n", " None\n", " None\n", @@ -396,7 +408,7 @@ " 5\n", " 6\n", " rbf\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " created\n", " None\n", " None\n", @@ -416,7 +428,7 @@ " 5\n", " 2\n", " sigmoid\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " created\n", " None\n", " None\n", @@ -436,7 +448,7 @@ " 5\n", " 4\n", " sigmoid\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " created\n", " None\n", " None\n", @@ -456,7 +468,7 @@ " 5\n", " 6\n", " sigmoid\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " created\n", " None\n", " None\n", @@ -476,7 +488,7 @@ " 3\n", " 42\n", " linear\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " created\n", " None\n", " None\n", @@ -510,19 +522,19 @@ "12 13 error_dataset 3 42 linear \n", "\n", " creation_date status start_date name machine pipeline train_f1 \\\n", - "0 2023-03-31 20:47:09 created None None None None None \n", - "1 2023-03-31 20:47:09 created None None None None None \n", - "2 2023-03-31 20:47:09 created None None None None None \n", - "3 2023-03-31 20:47:09 created None None None None None \n", - "4 2023-03-31 20:47:09 created None None None None None \n", - "5 2023-03-31 20:47:09 created None None None None None \n", - "6 2023-03-31 20:47:09 created None None None None None \n", - "7 2023-03-31 20:47:09 created None None None None None \n", - "8 2023-03-31 20:47:09 created None None None None None \n", - "9 2023-03-31 20:47:09 created None None None None None \n", - "10 2023-03-31 20:47:09 created None None None None None \n", - "11 2023-03-31 20:47:09 created None None None None None \n", - "12 2023-03-31 20:47:09 created None None None None None \n", + "0 2023-06-14 14:24:12 created None None None None None \n", + "1 2023-06-14 14:24:12 created None None None None None \n", + "2 2023-06-14 14:24:12 created None None None None None \n", + "3 2023-06-14 14:24:12 created None None None None None \n", + "4 2023-06-14 14:24:12 created None None None None None \n", + "5 2023-06-14 14:24:12 created None None None None None \n", + "6 2023-06-14 14:24:12 created None None None None None \n", + "7 2023-06-14 14:24:12 created None None None None None \n", + "8 2023-06-14 14:24:12 created None None None None None \n", + "9 2023-06-14 14:24:12 created None None None None None \n", + "10 2023-06-14 14:24:12 created None None None None None \n", + "11 2023-06-14 14:24:12 created None None None None None \n", + "12 2023-06-14 14:24:12 created None None None None None \n", "\n", " train_accuracy test_f1 test_accuracy end_date error \n", "0 None None None None None \n", @@ -585,9 +597,9 @@ "output_type": "stream", "text": [ "ERROR:root:Traceback (most recent call last):\n", - " File \"/Users/tanja/Development/py_experimenter/py_experimenter/experimenter.py\", line 370, in _execution_wrapper\n", + " File \"/Users/tanja/Development/py_experimenter/py_experimenter/experimenter.py\", line 382, in _execution_wrapper\n", " experiment_function(keyfield_values, result_processor, custom_fields)\n", - " File \"/var/folders/8l/vv83bgdn0zg97jp8pbsfxq040000gn/T/ipykernel_13290/1244630566.py\", line 31, in run_ml\n", + " File \"/var/folders/8l/vv83bgdn0zg97jp8pbsfxq040000gn/T/ipykernel_84131/1244630566.py\", line 31, in run_ml\n", " raise ValueError(\"Example error\")\n", "ValueError: Example error\n", "\n" @@ -641,17 +653,17 @@ " 5\n", " 2\n", " linear\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.971667\n", " 0.971667\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:17\n", " None\n", " \n", " \n", @@ -661,17 +673,17 @@ " 5\n", " 4\n", " linear\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:17\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.971667\n", " 0.971667\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:20\n", " None\n", " \n", " \n", @@ -681,17 +693,17 @@ " 5\n", " 6\n", " linear\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:20\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.971667\n", " 0.971667\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:22\n", " None\n", " \n", " \n", @@ -701,17 +713,17 @@ " 5\n", " 2\n", " poly\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:22\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.936667\n", " 0.936667\n", " 0.933333\n", " 0.933333\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:23\n", " None\n", " \n", " \n", @@ -721,17 +733,17 @@ " 5\n", " 4\n", " poly\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:23\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.936667\n", " 0.936667\n", " 0.933333\n", " 0.933333\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:24\n", " None\n", " \n", " \n", @@ -741,17 +753,17 @@ " 5\n", " 6\n", " poly\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:24\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.936667\n", " 0.936667\n", " 0.933333\n", " 0.933333\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:26\n", " None\n", " \n", " \n", @@ -761,17 +773,17 @@ " 5\n", " 2\n", " rbf\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:26\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.975000\n", " 0.975000\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:27\n", " None\n", " \n", " \n", @@ -781,17 +793,17 @@ " 5\n", " 4\n", " rbf\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:27\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.975000\n", " 0.975000\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:29\n", " None\n", " \n", " \n", @@ -801,17 +813,17 @@ " 5\n", " 6\n", " rbf\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:29\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.975000\n", " 0.975000\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:30\n", " None\n", " \n", " \n", @@ -821,17 +833,17 @@ " 5\n", " 2\n", " sigmoid\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:30\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.896667\n", " 0.896667\n", " 0.893333\n", " 0.893333\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:32\n", " None\n", " \n", " \n", @@ -841,17 +853,17 @@ " 5\n", " 4\n", " sigmoid\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:32\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.896667\n", " 0.896667\n", " 0.893333\n", " 0.893333\n", - " 2023-03-31 20:47:10\n", + " 2023-06-14 14:24:33\n", " None\n", " \n", " \n", @@ -861,17 +873,17 @@ " 5\n", " 6\n", " sigmoid\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:10\n", + " 2023-06-14 14:24:33\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.896667\n", " 0.896667\n", " 0.893333\n", " 0.893333\n", - " 2023-03-31 20:47:10\n", + " 2023-06-14 14:24:34\n", " None\n", " \n", " \n", @@ -881,17 +893,17 @@ " 3\n", " 42\n", " linear\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " error\n", - " 2023-03-31 20:47:10\n", + " 2023-06-14 14:24:34\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " NaN\n", " NaN\n", " NaN\n", " NaN\n", - " 2023-03-31 20:47:10\n", + " 2023-06-14 14:24:36\n", " Traceback (most recent call last):\\n File \"/U...\n", " \n", " \n", @@ -915,34 +927,34 @@ "12 13 error_dataset 3 42 linear \n", "\n", " creation_date status start_date name \\\n", - "0 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "1 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "2 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "3 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "4 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "5 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "6 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "7 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "8 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "9 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "10 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "11 2023-03-31 20:47:09 done 2023-03-31 20:47:10 example_notebook \n", - "12 2023-03-31 20:47:09 error 2023-03-31 20:47:10 example_notebook \n", + "0 2023-06-14 14:24:12 done 2023-06-14 14:24:12 example_notebook \n", + "1 2023-06-14 14:24:12 done 2023-06-14 14:24:17 example_notebook \n", + "2 2023-06-14 14:24:12 done 2023-06-14 14:24:20 example_notebook \n", + "3 2023-06-14 14:24:12 done 2023-06-14 14:24:22 example_notebook \n", + "4 2023-06-14 14:24:12 done 2023-06-14 14:24:23 example_notebook \n", + "5 2023-06-14 14:24:12 done 2023-06-14 14:24:24 example_notebook \n", + "6 2023-06-14 14:24:12 done 2023-06-14 14:24:26 example_notebook \n", + "7 2023-06-14 14:24:12 done 2023-06-14 14:24:27 example_notebook \n", + "8 2023-06-14 14:24:12 done 2023-06-14 14:24:29 example_notebook \n", + "9 2023-06-14 14:24:12 done 2023-06-14 14:24:30 example_notebook \n", + "10 2023-06-14 14:24:12 done 2023-06-14 14:24:32 example_notebook \n", + "11 2023-06-14 14:24:12 done 2023-06-14 14:24:33 example_notebook \n", + "12 2023-06-14 14:24:12 error 2023-06-14 14:24:34 example_notebook \n", "\n", " machine \\\n", - "0 MacBook-Pro-von-Tanja.local \n", - "1 MacBook-Pro-von-Tanja.local \n", - "2 MacBook-Pro-von-Tanja.local \n", - "3 MacBook-Pro-von-Tanja.local \n", - "4 MacBook-Pro-von-Tanja.local \n", - "5 MacBook-Pro-von-Tanja.local \n", - "6 MacBook-Pro-von-Tanja.local \n", - "7 MacBook-Pro-von-Tanja.local \n", - "8 MacBook-Pro-von-Tanja.local \n", - "9 MacBook-Pro-von-Tanja.local \n", - "10 MacBook-Pro-von-Tanja.local \n", - "11 MacBook-Pro-von-Tanja.local \n", - "12 MacBook-Pro-von-Tanja.local \n", + "0 mom-m005.ai.uni-hannover.de \n", + "1 mom-m005.ai.uni-hannover.de \n", + "2 mom-m005.ai.uni-hannover.de \n", + "3 mom-m005.ai.uni-hannover.de \n", + "4 mom-m005.ai.uni-hannover.de \n", + "5 mom-m005.ai.uni-hannover.de \n", + "6 mom-m005.ai.uni-hannover.de \n", + "7 mom-m005.ai.uni-hannover.de \n", + "8 mom-m005.ai.uni-hannover.de \n", + "9 mom-m005.ai.uni-hannover.de \n", + "10 mom-m005.ai.uni-hannover.de \n", + "11 mom-m005.ai.uni-hannover.de \n", + "12 mom-m005.ai.uni-hannover.de \n", "\n", " pipeline train_f1 \\\n", "0 Pipeline(steps=[('standardscaler', StandardSca... 0.971667 \n", @@ -960,19 +972,19 @@ "12 Pipeline(steps=[('standardscaler', StandardSca... NaN \n", "\n", " train_accuracy test_f1 test_accuracy end_date \\\n", - "0 0.971667 0.966667 0.966667 2023-03-31 20:47:09 \n", - "1 0.971667 0.966667 0.966667 2023-03-31 20:47:09 \n", - "2 0.971667 0.966667 0.966667 2023-03-31 20:47:09 \n", - "3 0.936667 0.933333 0.933333 2023-03-31 20:47:09 \n", - "4 0.936667 0.933333 0.933333 2023-03-31 20:47:09 \n", - "5 0.936667 0.933333 0.933333 2023-03-31 20:47:09 \n", - "6 0.975000 0.966667 0.966667 2023-03-31 20:47:09 \n", - "7 0.975000 0.966667 0.966667 2023-03-31 20:47:09 \n", - "8 0.975000 0.966667 0.966667 2023-03-31 20:47:09 \n", - "9 0.896667 0.893333 0.893333 2023-03-31 20:47:09 \n", - "10 0.896667 0.893333 0.893333 2023-03-31 20:47:10 \n", - "11 0.896667 0.893333 0.893333 2023-03-31 20:47:10 \n", - "12 NaN NaN NaN 2023-03-31 20:47:10 \n", + "0 0.971667 0.966667 0.966667 2023-06-14 14:24:17 \n", + "1 0.971667 0.966667 0.966667 2023-06-14 14:24:20 \n", + "2 0.971667 0.966667 0.966667 2023-06-14 14:24:22 \n", + "3 0.936667 0.933333 0.933333 2023-06-14 14:24:23 \n", + "4 0.936667 0.933333 0.933333 2023-06-14 14:24:24 \n", + "5 0.936667 0.933333 0.933333 2023-06-14 14:24:26 \n", + "6 0.975000 0.966667 0.966667 2023-06-14 14:24:27 \n", + "7 0.975000 0.966667 0.966667 2023-06-14 14:24:29 \n", + "8 0.975000 0.966667 0.966667 2023-06-14 14:24:30 \n", + "9 0.896667 0.893333 0.893333 2023-06-14 14:24:32 \n", + "10 0.896667 0.893333 0.893333 2023-06-14 14:24:33 \n", + "11 0.896667 0.893333 0.893333 2023-06-14 14:24:34 \n", + "12 NaN NaN NaN 2023-06-14 14:24:36 \n", "\n", " error \n", "0 None \n", @@ -1003,6 +1015,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "ivljpd70Fnal" @@ -1073,17 +1086,17 @@ " 5\n", " 2\n", " linear\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.971667\n", " 0.971667\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:17\n", " None\n", " \n", " \n", @@ -1093,17 +1106,17 @@ " 5\n", " 4\n", " linear\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:17\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.971667\n", " 0.971667\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:20\n", " None\n", " \n", " \n", @@ -1113,17 +1126,17 @@ " 5\n", " 6\n", " linear\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:20\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.971667\n", " 0.971667\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:22\n", " None\n", " \n", " \n", @@ -1133,17 +1146,17 @@ " 5\n", " 2\n", " poly\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:22\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.936667\n", " 0.936667\n", " 0.933333\n", " 0.933333\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:23\n", " None\n", " \n", " \n", @@ -1153,17 +1166,17 @@ " 5\n", " 4\n", " poly\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:23\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.936667\n", " 0.936667\n", " 0.933333\n", " 0.933333\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:24\n", " None\n", " \n", " \n", @@ -1173,17 +1186,17 @@ " 5\n", " 6\n", " poly\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:24\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.936667\n", " 0.936667\n", " 0.933333\n", " 0.933333\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:26\n", " None\n", " \n", " \n", @@ -1193,17 +1206,17 @@ " 5\n", " 2\n", " rbf\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:26\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.975000\n", " 0.975000\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:27\n", " None\n", " \n", " \n", @@ -1213,17 +1226,17 @@ " 5\n", " 4\n", " rbf\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:27\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.975000\n", " 0.975000\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:29\n", " None\n", " \n", " \n", @@ -1233,17 +1246,17 @@ " 5\n", " 6\n", " rbf\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:29\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.975000\n", " 0.975000\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:30\n", " None\n", " \n", " \n", @@ -1253,17 +1266,17 @@ " 5\n", " 2\n", " sigmoid\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:30\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.896667\n", " 0.896667\n", " 0.893333\n", " 0.893333\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:32\n", " None\n", " \n", " \n", @@ -1273,17 +1286,17 @@ " 5\n", " 4\n", " sigmoid\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:32\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.896667\n", " 0.896667\n", " 0.893333\n", " 0.893333\n", - " 2023-03-31 20:47:10\n", + " 2023-06-14 14:24:33\n", " None\n", " \n", " \n", @@ -1293,17 +1306,17 @@ " 5\n", " 6\n", " sigmoid\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:10\n", + " 2023-06-14 14:24:33\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.896667\n", " 0.896667\n", " 0.893333\n", " 0.893333\n", - " 2023-03-31 20:47:10\n", + " 2023-06-14 14:24:34\n", " None\n", " \n", " \n", @@ -1313,7 +1326,7 @@ " 3\n", " 42\n", " linear\n", - " 2023-03-31 20:47:10\n", + " 2023-06-14 14:24:36\n", " created\n", " None\n", " None\n", @@ -1347,33 +1360,33 @@ "12 14 error_dataset 3 42 linear \n", "\n", " creation_date status start_date name \\\n", - "0 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "1 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "2 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "3 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "4 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "5 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "6 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "7 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "8 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "9 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "10 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "11 2023-03-31 20:47:09 done 2023-03-31 20:47:10 example_notebook \n", - "12 2023-03-31 20:47:10 created None None \n", + "0 2023-06-14 14:24:12 done 2023-06-14 14:24:12 example_notebook \n", + "1 2023-06-14 14:24:12 done 2023-06-14 14:24:17 example_notebook \n", + "2 2023-06-14 14:24:12 done 2023-06-14 14:24:20 example_notebook \n", + "3 2023-06-14 14:24:12 done 2023-06-14 14:24:22 example_notebook \n", + "4 2023-06-14 14:24:12 done 2023-06-14 14:24:23 example_notebook \n", + "5 2023-06-14 14:24:12 done 2023-06-14 14:24:24 example_notebook \n", + "6 2023-06-14 14:24:12 done 2023-06-14 14:24:26 example_notebook \n", + "7 2023-06-14 14:24:12 done 2023-06-14 14:24:27 example_notebook \n", + "8 2023-06-14 14:24:12 done 2023-06-14 14:24:29 example_notebook \n", + "9 2023-06-14 14:24:12 done 2023-06-14 14:24:30 example_notebook \n", + "10 2023-06-14 14:24:12 done 2023-06-14 14:24:32 example_notebook \n", + "11 2023-06-14 14:24:12 done 2023-06-14 14:24:33 example_notebook \n", + "12 2023-06-14 14:24:36 created None None \n", "\n", " machine \\\n", - "0 MacBook-Pro-von-Tanja.local \n", - "1 MacBook-Pro-von-Tanja.local \n", - "2 MacBook-Pro-von-Tanja.local \n", - "3 MacBook-Pro-von-Tanja.local \n", - "4 MacBook-Pro-von-Tanja.local \n", - "5 MacBook-Pro-von-Tanja.local \n", - "6 MacBook-Pro-von-Tanja.local \n", - "7 MacBook-Pro-von-Tanja.local \n", - "8 MacBook-Pro-von-Tanja.local \n", - "9 MacBook-Pro-von-Tanja.local \n", - "10 MacBook-Pro-von-Tanja.local \n", - "11 MacBook-Pro-von-Tanja.local \n", + "0 mom-m005.ai.uni-hannover.de \n", + "1 mom-m005.ai.uni-hannover.de \n", + "2 mom-m005.ai.uni-hannover.de \n", + "3 mom-m005.ai.uni-hannover.de \n", + "4 mom-m005.ai.uni-hannover.de \n", + "5 mom-m005.ai.uni-hannover.de \n", + "6 mom-m005.ai.uni-hannover.de \n", + "7 mom-m005.ai.uni-hannover.de \n", + "8 mom-m005.ai.uni-hannover.de \n", + "9 mom-m005.ai.uni-hannover.de \n", + "10 mom-m005.ai.uni-hannover.de \n", + "11 mom-m005.ai.uni-hannover.de \n", "12 None \n", "\n", " pipeline train_f1 \\\n", @@ -1392,18 +1405,18 @@ "12 None NaN \n", "\n", " train_accuracy test_f1 test_accuracy end_date error \n", - "0 0.971667 0.966667 0.966667 2023-03-31 20:47:09 None \n", - "1 0.971667 0.966667 0.966667 2023-03-31 20:47:09 None \n", - "2 0.971667 0.966667 0.966667 2023-03-31 20:47:09 None \n", - "3 0.936667 0.933333 0.933333 2023-03-31 20:47:09 None \n", - "4 0.936667 0.933333 0.933333 2023-03-31 20:47:09 None \n", - "5 0.936667 0.933333 0.933333 2023-03-31 20:47:09 None \n", - "6 0.975000 0.966667 0.966667 2023-03-31 20:47:09 None \n", - "7 0.975000 0.966667 0.966667 2023-03-31 20:47:09 None \n", - "8 0.975000 0.966667 0.966667 2023-03-31 20:47:09 None \n", - "9 0.896667 0.893333 0.893333 2023-03-31 20:47:09 None \n", - "10 0.896667 0.893333 0.893333 2023-03-31 20:47:10 None \n", - "11 0.896667 0.893333 0.893333 2023-03-31 20:47:10 None \n", + "0 0.971667 0.966667 0.966667 2023-06-14 14:24:17 None \n", + "1 0.971667 0.966667 0.966667 2023-06-14 14:24:20 None \n", + "2 0.971667 0.966667 0.966667 2023-06-14 14:24:22 None \n", + "3 0.936667 0.933333 0.933333 2023-06-14 14:24:23 None \n", + "4 0.936667 0.933333 0.933333 2023-06-14 14:24:24 None \n", + "5 0.936667 0.933333 0.933333 2023-06-14 14:24:26 None \n", + "6 0.975000 0.966667 0.966667 2023-06-14 14:24:27 None \n", + "7 0.975000 0.966667 0.966667 2023-06-14 14:24:29 None \n", + "8 0.975000 0.966667 0.966667 2023-06-14 14:24:30 None \n", + "9 0.896667 0.893333 0.893333 2023-06-14 14:24:32 None \n", + "10 0.896667 0.893333 0.893333 2023-06-14 14:24:33 None \n", + "11 0.896667 0.893333 0.893333 2023-06-14 14:24:34 None \n", "12 NaN NaN NaN None None " ] }, @@ -1420,6 +1433,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "oLgmbd75Jtwm" @@ -1445,9 +1459,9 @@ "output_type": "stream", "text": [ "ERROR:root:Traceback (most recent call last):\n", - " File \"/Users/tanja/Development/py_experimenter/py_experimenter/experimenter.py\", line 370, in _execution_wrapper\n", + " File \"/Users/tanja/Development/py_experimenter/py_experimenter/experimenter.py\", line 382, in _execution_wrapper\n", " experiment_function(keyfield_values, result_processor, custom_fields)\n", - " File \"/var/folders/8l/vv83bgdn0zg97jp8pbsfxq040000gn/T/ipykernel_13290/1244630566.py\", line 31, in run_ml\n", + " File \"/var/folders/8l/vv83bgdn0zg97jp8pbsfxq040000gn/T/ipykernel_84131/1244630566.py\", line 31, in run_ml\n", " raise ValueError(\"Example error\")\n", "ValueError: Example error\n", "\n" @@ -1501,17 +1515,17 @@ " 5\n", " 2\n", " linear\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.971667\n", " 0.971667\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:17\n", " None\n", " \n", " \n", @@ -1521,17 +1535,17 @@ " 5\n", " 4\n", " linear\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:17\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.971667\n", " 0.971667\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:20\n", " None\n", " \n", " \n", @@ -1541,17 +1555,17 @@ " 5\n", " 6\n", " linear\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:20\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.971667\n", " 0.971667\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:22\n", " None\n", " \n", " \n", @@ -1561,17 +1575,17 @@ " 5\n", " 2\n", " poly\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:22\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.936667\n", " 0.936667\n", " 0.933333\n", " 0.933333\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:23\n", " None\n", " \n", " \n", @@ -1581,17 +1595,17 @@ " 5\n", " 4\n", " poly\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:23\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.936667\n", " 0.936667\n", " 0.933333\n", " 0.933333\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:24\n", " None\n", " \n", " \n", @@ -1601,17 +1615,17 @@ " 5\n", " 6\n", " poly\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:24\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.936667\n", " 0.936667\n", " 0.933333\n", " 0.933333\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:26\n", " None\n", " \n", " \n", @@ -1621,17 +1635,17 @@ " 5\n", " 2\n", " rbf\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:26\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.975000\n", " 0.975000\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:27\n", " None\n", " \n", " \n", @@ -1641,17 +1655,17 @@ " 5\n", " 4\n", " rbf\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:27\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.975000\n", " 0.975000\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:29\n", " None\n", " \n", " \n", @@ -1661,17 +1675,17 @@ " 5\n", " 6\n", " rbf\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:29\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.975000\n", " 0.975000\n", " 0.966667\n", " 0.966667\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:30\n", " None\n", " \n", " \n", @@ -1681,17 +1695,17 @@ " 5\n", " 2\n", " sigmoid\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:30\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.896667\n", " 0.896667\n", " 0.893333\n", " 0.893333\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:32\n", " None\n", " \n", " \n", @@ -1701,17 +1715,17 @@ " 5\n", " 4\n", " sigmoid\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:32\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.896667\n", " 0.896667\n", " 0.893333\n", " 0.893333\n", - " 2023-03-31 20:47:10\n", + " 2023-06-14 14:24:33\n", " None\n", " \n", " \n", @@ -1721,17 +1735,17 @@ " 5\n", " 6\n", " sigmoid\n", - " 2023-03-31 20:47:09\n", + " 2023-06-14 14:24:12\n", " done\n", - " 2023-03-31 20:47:10\n", + " 2023-06-14 14:24:33\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " 0.896667\n", " 0.896667\n", " 0.893333\n", " 0.893333\n", - " 2023-03-31 20:47:10\n", + " 2023-06-14 14:24:34\n", " None\n", " \n", " \n", @@ -1741,17 +1755,17 @@ " 3\n", " 42\n", " linear\n", - " 2023-03-31 20:47:10\n", + " 2023-06-14 14:24:36\n", " error\n", - " 2023-03-31 20:47:10\n", + " 2023-06-14 14:24:36\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " mom-m005.ai.uni-hannover.de\n", " Pipeline(steps=[('standardscaler', StandardSca...\n", " NaN\n", " NaN\n", " NaN\n", " NaN\n", - " 2023-03-31 20:47:10\n", + " 2023-06-14 14:24:37\n", " Traceback (most recent call last):\\n File \"/U...\n", " \n", " \n", @@ -1775,34 +1789,34 @@ "12 14 error_dataset 3 42 linear \n", "\n", " creation_date status start_date name \\\n", - "0 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "1 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "2 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "3 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "4 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "5 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "6 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "7 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "8 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "9 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "10 2023-03-31 20:47:09 done 2023-03-31 20:47:09 example_notebook \n", - "11 2023-03-31 20:47:09 done 2023-03-31 20:47:10 example_notebook \n", - "12 2023-03-31 20:47:10 error 2023-03-31 20:47:10 example_notebook \n", + "0 2023-06-14 14:24:12 done 2023-06-14 14:24:12 example_notebook \n", + "1 2023-06-14 14:24:12 done 2023-06-14 14:24:17 example_notebook \n", + "2 2023-06-14 14:24:12 done 2023-06-14 14:24:20 example_notebook \n", + "3 2023-06-14 14:24:12 done 2023-06-14 14:24:22 example_notebook \n", + "4 2023-06-14 14:24:12 done 2023-06-14 14:24:23 example_notebook \n", + "5 2023-06-14 14:24:12 done 2023-06-14 14:24:24 example_notebook \n", + "6 2023-06-14 14:24:12 done 2023-06-14 14:24:26 example_notebook \n", + "7 2023-06-14 14:24:12 done 2023-06-14 14:24:27 example_notebook \n", + "8 2023-06-14 14:24:12 done 2023-06-14 14:24:29 example_notebook \n", + "9 2023-06-14 14:24:12 done 2023-06-14 14:24:30 example_notebook \n", + "10 2023-06-14 14:24:12 done 2023-06-14 14:24:32 example_notebook \n", + "11 2023-06-14 14:24:12 done 2023-06-14 14:24:33 example_notebook \n", + "12 2023-06-14 14:24:36 error 2023-06-14 14:24:36 example_notebook \n", "\n", " machine \\\n", - "0 MacBook-Pro-von-Tanja.local \n", - "1 MacBook-Pro-von-Tanja.local \n", - "2 MacBook-Pro-von-Tanja.local \n", - "3 MacBook-Pro-von-Tanja.local \n", - "4 MacBook-Pro-von-Tanja.local \n", - "5 MacBook-Pro-von-Tanja.local \n", - "6 MacBook-Pro-von-Tanja.local \n", - "7 MacBook-Pro-von-Tanja.local \n", - "8 MacBook-Pro-von-Tanja.local \n", - "9 MacBook-Pro-von-Tanja.local \n", - "10 MacBook-Pro-von-Tanja.local \n", - "11 MacBook-Pro-von-Tanja.local \n", - "12 MacBook-Pro-von-Tanja.local \n", + "0 mom-m005.ai.uni-hannover.de \n", + "1 mom-m005.ai.uni-hannover.de \n", + "2 mom-m005.ai.uni-hannover.de \n", + "3 mom-m005.ai.uni-hannover.de \n", + "4 mom-m005.ai.uni-hannover.de \n", + "5 mom-m005.ai.uni-hannover.de \n", + "6 mom-m005.ai.uni-hannover.de \n", + "7 mom-m005.ai.uni-hannover.de \n", + "8 mom-m005.ai.uni-hannover.de \n", + "9 mom-m005.ai.uni-hannover.de \n", + "10 mom-m005.ai.uni-hannover.de \n", + "11 mom-m005.ai.uni-hannover.de \n", + "12 mom-m005.ai.uni-hannover.de \n", "\n", " pipeline train_f1 \\\n", "0 Pipeline(steps=[('standardscaler', StandardSca... 0.971667 \n", @@ -1820,19 +1834,19 @@ "12 Pipeline(steps=[('standardscaler', StandardSca... NaN \n", "\n", " train_accuracy test_f1 test_accuracy end_date \\\n", - "0 0.971667 0.966667 0.966667 2023-03-31 20:47:09 \n", - "1 0.971667 0.966667 0.966667 2023-03-31 20:47:09 \n", - "2 0.971667 0.966667 0.966667 2023-03-31 20:47:09 \n", - "3 0.936667 0.933333 0.933333 2023-03-31 20:47:09 \n", - "4 0.936667 0.933333 0.933333 2023-03-31 20:47:09 \n", - "5 0.936667 0.933333 0.933333 2023-03-31 20:47:09 \n", - "6 0.975000 0.966667 0.966667 2023-03-31 20:47:09 \n", - "7 0.975000 0.966667 0.966667 2023-03-31 20:47:09 \n", - "8 0.975000 0.966667 0.966667 2023-03-31 20:47:09 \n", - "9 0.896667 0.893333 0.893333 2023-03-31 20:47:09 \n", - "10 0.896667 0.893333 0.893333 2023-03-31 20:47:10 \n", - "11 0.896667 0.893333 0.893333 2023-03-31 20:47:10 \n", - "12 NaN NaN NaN 2023-03-31 20:47:10 \n", + "0 0.971667 0.966667 0.966667 2023-06-14 14:24:17 \n", + "1 0.971667 0.966667 0.966667 2023-06-14 14:24:20 \n", + "2 0.971667 0.966667 0.966667 2023-06-14 14:24:22 \n", + "3 0.936667 0.933333 0.933333 2023-06-14 14:24:23 \n", + "4 0.936667 0.933333 0.933333 2023-06-14 14:24:24 \n", + "5 0.936667 0.933333 0.933333 2023-06-14 14:24:26 \n", + "6 0.975000 0.966667 0.966667 2023-06-14 14:24:27 \n", + "7 0.975000 0.966667 0.966667 2023-06-14 14:24:29 \n", + "8 0.975000 0.966667 0.966667 2023-06-14 14:24:30 \n", + "9 0.896667 0.893333 0.893333 2023-06-14 14:24:32 \n", + "10 0.896667 0.893333 0.893333 2023-06-14 14:24:33 \n", + "11 0.896667 0.893333 0.893333 2023-06-14 14:24:34 \n", + "12 NaN NaN NaN 2023-06-14 14:24:37 \n", "\n", " error \n", "0 None \n", @@ -1863,6 +1877,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "ekECNVPGJxyH" @@ -1974,6 +1989,7 @@ ] }, { + "attachments": {}, "cell_type": "markdown", "metadata": { "id": "bjp-_uRDJ7oB" @@ -2012,6 +2028,653 @@ "source": [ "print(result_table_agg[['test_f1']].style.to_latex())" ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### CodeCarbon\n", + "[CodeCarbon](https://tornede.github.io/py_experimenter/usage/experiment_configuration_file.html#codecarbon) is integrated into `PyExperimenter` to provide information about the carbon emissions of experiments. `CodeCarbon` will create a table with suffix `_codecarbon` in the database, each row containing information about the carbon emissions of a single experiment." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDexperiment_idcodecarbon_timestampproject_namerun_iddurationemissionsemissions_ratecpu_powergpu_power...cpu_countcpu_modelgpu_countgpu_modellongitudelatituderam_total_sizetracking_modeon_cloudoffline_mode
0112023-06-14T14:24:17codecarbon46e50fe9-22de-4502-82c2-8c454f10c12a0.0461131.468009e-070.00000342.50.0...12.0Apple M2 MaxNoneNone9.77252.393332.0processN0
1222023-06-14T14:24:20codecarbon306d1149-97e0-4a37-9d4e-2179e0deed660.0612562.023806e-070.00000342.50.0...12.0Apple M2 MaxNoneNone9.77252.393332.0processN0
2332023-06-14T14:24:22codecarboncf694bf2-afe8-4084-90c3-58cb14f267ab0.0302609.610846e-080.00000342.50.0...12.0Apple M2 MaxNoneNone9.77252.393332.0processN0
3442023-06-14T14:24:23codecarbon37611b76-f596-4c49-951b-b48cb8f5bf010.0299349.590755e-080.00000342.50.0...12.0Apple M2 MaxNoneNone9.77252.393332.0processN0
4552023-06-14T14:24:24codecarbonaa3270b7-d5e3-4e18-860c-020435030e360.0299879.334660e-080.00000342.50.0...12.0Apple M2 MaxNoneNone9.77252.393332.0processN0
5662023-06-14T14:24:26codecarbon7f61446a-ce3c-4498-b7c0-3fbf9bd544f90.0312661.008725e-070.00000342.50.0...12.0Apple M2 MaxNoneNone9.77252.393332.0processN0
6772023-06-14T14:24:27codecarbonbcb587e8-a015-41e1-b2d7-72189fd495440.0314331.018887e-070.00000342.50.0...12.0Apple M2 MaxNoneNone9.77252.393332.0processN0
7882023-06-14T14:24:29codecarbon246c972e-be11-4f23-89ec-49d78ef81f4c0.0359901.176535e-070.00000342.50.0...12.0Apple M2 MaxNoneNone9.77252.393332.0processN0
8992023-06-14T14:24:30codecarbone0fec1b1-f27e-470d-ad87-b7f482c1c1ef0.0321781.009476e-070.00000342.50.0...12.0Apple M2 MaxNoneNone9.77252.393332.0processN0
910102023-06-14T14:24:32codecarbon2f95bb29-ee0b-4ce1-95a8-5ca545f5f1a10.0326881.022301e-070.00000342.50.0...12.0Apple M2 MaxNoneNone9.77252.393332.0processN0
1011112023-06-14T14:24:33codecarbon5fcb2e8e-0b23-4a0a-9725-dc4218097e8e0.0300459.554035e-080.00000342.50.0...12.0Apple M2 MaxNoneNone9.77252.393332.0processN0
1112122023-06-14T14:24:34codecarbon9a67be94-63b2-4ff2-846d-25d0131f35b30.0300109.610629e-080.00000342.50.0...12.0Apple M2 MaxNoneNone9.77252.393332.0processN0
1213132023-06-14T14:24:36codecarbon6dc17ea1-3307-4cff-b39d-0ab23ee76f9d0.0176635.110205e-080.00000342.50.0...12.0Apple M2 MaxNoneNone9.77252.393332.0processN0
1314142023-06-14T14:24:37codecarbon7e11386f-3abe-4a45-84fb-890a2703aca30.0175625.083177e-080.00000342.50.0...12.0Apple M2 MaxNoneNone9.77252.393332.0processN0
\n", + "

14 rows × 33 columns

\n", + "
" + ], + "text/plain": [ + " ID experiment_id codecarbon_timestamp project_name \\\n", + "0 1 1 2023-06-14T14:24:17 codecarbon \n", + "1 2 2 2023-06-14T14:24:20 codecarbon \n", + "2 3 3 2023-06-14T14:24:22 codecarbon \n", + "3 4 4 2023-06-14T14:24:23 codecarbon \n", + "4 5 5 2023-06-14T14:24:24 codecarbon \n", + "5 6 6 2023-06-14T14:24:26 codecarbon \n", + "6 7 7 2023-06-14T14:24:27 codecarbon \n", + "7 8 8 2023-06-14T14:24:29 codecarbon \n", + "8 9 9 2023-06-14T14:24:30 codecarbon \n", + "9 10 10 2023-06-14T14:24:32 codecarbon \n", + "10 11 11 2023-06-14T14:24:33 codecarbon \n", + "11 12 12 2023-06-14T14:24:34 codecarbon \n", + "12 13 13 2023-06-14T14:24:36 codecarbon \n", + "13 14 14 2023-06-14T14:24:37 codecarbon \n", + "\n", + " run_id duration emissions \\\n", + "0 46e50fe9-22de-4502-82c2-8c454f10c12a 0.046113 1.468009e-07 \n", + "1 306d1149-97e0-4a37-9d4e-2179e0deed66 0.061256 2.023806e-07 \n", + "2 cf694bf2-afe8-4084-90c3-58cb14f267ab 0.030260 9.610846e-08 \n", + "3 37611b76-f596-4c49-951b-b48cb8f5bf01 0.029934 9.590755e-08 \n", + "4 aa3270b7-d5e3-4e18-860c-020435030e36 0.029987 9.334660e-08 \n", + "5 7f61446a-ce3c-4498-b7c0-3fbf9bd544f9 0.031266 1.008725e-07 \n", + "6 bcb587e8-a015-41e1-b2d7-72189fd49544 0.031433 1.018887e-07 \n", + "7 246c972e-be11-4f23-89ec-49d78ef81f4c 0.035990 1.176535e-07 \n", + "8 e0fec1b1-f27e-470d-ad87-b7f482c1c1ef 0.032178 1.009476e-07 \n", + "9 2f95bb29-ee0b-4ce1-95a8-5ca545f5f1a1 0.032688 1.022301e-07 \n", + "10 5fcb2e8e-0b23-4a0a-9725-dc4218097e8e 0.030045 9.554035e-08 \n", + "11 9a67be94-63b2-4ff2-846d-25d0131f35b3 0.030010 9.610629e-08 \n", + "12 6dc17ea1-3307-4cff-b39d-0ab23ee76f9d 0.017663 5.110205e-08 \n", + "13 7e11386f-3abe-4a45-84fb-890a2703aca3 0.017562 5.083177e-08 \n", + "\n", + " emissions_rate cpu_power gpu_power ... cpu_count cpu_model \\\n", + "0 0.000003 42.5 0.0 ... 12.0 Apple M2 Max \n", + "1 0.000003 42.5 0.0 ... 12.0 Apple M2 Max \n", + "2 0.000003 42.5 0.0 ... 12.0 Apple M2 Max \n", + "3 0.000003 42.5 0.0 ... 12.0 Apple M2 Max \n", + "4 0.000003 42.5 0.0 ... 12.0 Apple M2 Max \n", + "5 0.000003 42.5 0.0 ... 12.0 Apple M2 Max \n", + "6 0.000003 42.5 0.0 ... 12.0 Apple M2 Max \n", + "7 0.000003 42.5 0.0 ... 12.0 Apple M2 Max \n", + "8 0.000003 42.5 0.0 ... 12.0 Apple M2 Max \n", + "9 0.000003 42.5 0.0 ... 12.0 Apple M2 Max \n", + "10 0.000003 42.5 0.0 ... 12.0 Apple M2 Max \n", + "11 0.000003 42.5 0.0 ... 12.0 Apple M2 Max \n", + "12 0.000003 42.5 0.0 ... 12.0 Apple M2 Max \n", + "13 0.000003 42.5 0.0 ... 12.0 Apple M2 Max \n", + "\n", + " gpu_count gpu_model longitude latitude ram_total_size tracking_mode \\\n", + "0 None None 9.772 52.3933 32.0 process \n", + "1 None None 9.772 52.3933 32.0 process \n", + "2 None None 9.772 52.3933 32.0 process \n", + "3 None None 9.772 52.3933 32.0 process \n", + "4 None None 9.772 52.3933 32.0 process \n", + "5 None None 9.772 52.3933 32.0 process \n", + "6 None None 9.772 52.3933 32.0 process \n", + "7 None None 9.772 52.3933 32.0 process \n", + "8 None None 9.772 52.3933 32.0 process \n", + "9 None None 9.772 52.3933 32.0 process \n", + "10 None None 9.772 52.3933 32.0 process \n", + "11 None None 9.772 52.3933 32.0 process \n", + "12 None None 9.772 52.3933 32.0 process \n", + "13 None None 9.772 52.3933 32.0 process \n", + "\n", + " on_cloud offline_mode \n", + "0 N 0 \n", + "1 N 0 \n", + "2 N 0 \n", + "3 N 0 \n", + "4 N 0 \n", + "5 N 0 \n", + "6 N 0 \n", + "7 N 0 \n", + "8 N 0 \n", + "9 N 0 \n", + "10 N 0 \n", + "11 N 0 \n", + "12 N 0 \n", + "13 N 0 \n", + "\n", + "[14 rows x 33 columns]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "experimenter.get_codecarbon_table()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Aggregating CodeCarbon Results\n", + "\n", + "The carbon emission information of `CodeCarbon` can be easily aggregated via `pandas.Dataframe`." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDexperiment_iddurationemissionsemissions_ratecpu_powergpu_powerram_powercpu_energygpu_energyram_energyenergy_consumedcpu_countram_total_sizeoffline_mode
project_name
codecarbon1051050.4563860.0000010.000044595.00.00.8804350.0000050.04.872305e-090.000005168.0448.00
\n", + "
" + ], + "text/plain": [ + " ID experiment_id duration emissions emissions_rate \\\n", + "project_name \n", + "codecarbon 105 105 0.456386 0.000001 0.000044 \n", + "\n", + " cpu_power gpu_power ram_power cpu_energy gpu_energy \\\n", + "project_name \n", + "codecarbon 595.0 0.0 0.880435 0.000005 0.0 \n", + "\n", + " ram_energy energy_consumed cpu_count ram_total_size \\\n", + "project_name \n", + "codecarbon 4.872305e-09 0.000005 168.0 448.0 \n", + "\n", + " offline_mode \n", + "project_name \n", + "codecarbon 0 " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "carbon_emissions = experimenter.get_codecarbon_table().groupby(['project_name']).sum(numeric_only = True)\n", + "carbon_emissions" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Printing CodeCarbon Results as LaTex Table\n", + "\n", + "Furthermore, the resulting `pandas.Dataframe` can easily be printed as LaTex table." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\\begin{tabular}{lrr}\n", + " & energy_consumed & emissions \\\\\n", + "project_name & & \\\\\n", + "codecarbon & 0.000005 & 0.000001 \\\\\n", + "\\end{tabular}\n", + "\n" + ] + } + ], + "source": [ + "print(carbon_emissions[['energy_consumed', 'emissions']].style.to_latex())" + ] } ], "metadata": { diff --git a/docs/source/examples/example_logtables.ipynb b/docs/source/examples/example_logtables.ipynb index eb7f7882..5c74c875 100644 --- a/docs/source/examples/example_logtables.ipynb +++ b/docs/source/examples/example_logtables.ipynb @@ -48,7 +48,7 @@ "resultfields.timestamps = false\n", "\n", "logtables = train_scores:log_train_scores, test_f1:DOUBLE, test_accuracy:DOUBLE \n", - "log_train_scores = f1:DOUBLE, accuracy:DOUBLE, kernel:str\n", + "log_train_scores = f1:DOUBLE, accuracy:DOUBLE, kernel:VARCHAR(50)\n", "\n", "[CUSTOM] \n", "path = sample_data\n", @@ -200,14 +200,14 @@ " iris\n", " 5\n", " 1\n", - " 2023-04-01 17:47:43\n", - " done\n", - " 2023-04-01 17:47:43\n", - " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", - " linear\n", - " linear\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:07\n", + " created\n", + " None\n", + " None\n", + " None\n", + " None\n", + " None\n", + " None\n", " None\n", " \n", " \n", @@ -216,14 +216,14 @@ " iris\n", " 5\n", " 2\n", - " 2023-04-01 17:47:43\n", - " done\n", - " 2023-04-01 17:47:43\n", - " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", - " linear\n", - " linear\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:07\n", + " created\n", + " None\n", + " None\n", + " None\n", + " None\n", + " None\n", + " None\n", " None\n", " \n", " \n", @@ -232,14 +232,14 @@ " iris\n", " 5\n", " 3\n", - " 2023-04-01 17:47:43\n", - " done\n", - " 2023-04-01 17:47:43\n", - " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", - " linear\n", - " linear\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:07\n", + " created\n", + " None\n", + " None\n", + " None\n", + " None\n", + " None\n", + " None\n", " None\n", " \n", " \n", @@ -248,14 +248,14 @@ " iris\n", " 5\n", " 4\n", - " 2023-04-01 17:47:43\n", - " done\n", - " 2023-04-01 17:47:43\n", - " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", - " linear\n", - " linear\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:07\n", + " created\n", + " None\n", + " None\n", + " None\n", + " None\n", + " None\n", + " None\n", " None\n", " \n", " \n", @@ -264,14 +264,14 @@ " iris\n", " 5\n", " 5\n", - " 2023-04-01 17:47:43\n", - " done\n", - " 2023-04-01 17:47:43\n", - " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", - " linear\n", - " linear\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:07\n", + " created\n", + " None\n", + " None\n", + " None\n", + " None\n", + " None\n", + " None\n", " None\n", " \n", " \n", @@ -279,26 +279,19 @@ "" ], "text/plain": [ - " ID dataset cross_validation_splits seed creation_date status \\\n", - "0 1 iris 5 1 2023-04-01 17:47:43 done \n", - "1 2 iris 5 2 2023-04-01 17:47:43 done \n", - "2 3 iris 5 3 2023-04-01 17:47:43 done \n", - "3 4 iris 5 4 2023-04-01 17:47:43 done \n", - "4 5 iris 5 5 2023-04-01 17:47:43 done \n", - "\n", - " start_date name machine \\\n", - "0 2023-04-01 17:47:43 example_notebook MacBook-Pro-von-Tanja.local \n", - "1 2023-04-01 17:47:43 example_notebook MacBook-Pro-von-Tanja.local \n", - "2 2023-04-01 17:47:43 example_notebook MacBook-Pro-von-Tanja.local \n", - "3 2023-04-01 17:47:43 example_notebook MacBook-Pro-von-Tanja.local \n", - "4 2023-04-01 17:47:43 example_notebook MacBook-Pro-von-Tanja.local \n", + " ID dataset cross_validation_splits seed creation_date status \\\n", + "0 1 iris 5 1 2023-05-19 12:49:07 created \n", + "1 2 iris 5 2 2023-05-19 12:49:07 created \n", + "2 3 iris 5 3 2023-05-19 12:49:07 created \n", + "3 4 iris 5 4 2023-05-19 12:49:07 created \n", + "4 5 iris 5 5 2023-05-19 12:49:07 created \n", "\n", - " best_kernel_f1 best_kernel_accuracy end_date error \n", - "0 linear linear 2023-04-01 17:47:43 None \n", - "1 linear linear 2023-04-01 17:47:43 None \n", - "2 linear linear 2023-04-01 17:47:43 None \n", - "3 linear linear 2023-04-01 17:47:43 None \n", - "4 linear linear 2023-04-01 17:47:43 None " + " start_date name machine best_kernel_f1 best_kernel_accuracy end_date error \n", + "0 None None None None None None None \n", + "1 None None None None None None None \n", + "2 None None None None None None None \n", + "3 None None None None None None None \n", + "4 None None None None None None None " ] }, "execution_count": 3, @@ -350,212 +343,14 @@ " \n", " \n", " \n", - " \n", - " 0\n", - " 1\n", - " 1\n", - " 2023-04-01 17:47:43\n", - " 0.971667\n", - " 0.971667\n", - " linear\n", - " \n", - " \n", - " 1\n", - " 2\n", - " 1\n", - " 2023-04-01 17:47:43\n", - " 0.936667\n", - " 0.936667\n", - " poly\n", - " \n", - " \n", - " 2\n", - " 3\n", - " 1\n", - " 2023-04-01 17:47:43\n", - " 0.975000\n", - " 0.975000\n", - " rbf\n", - " \n", - " \n", - " 3\n", - " 4\n", - " 1\n", - " 2023-04-01 17:47:43\n", - " 0.896667\n", - " 0.896667\n", - " sigmoid\n", - " \n", - " \n", - " 4\n", - " 5\n", - " 2\n", - " 2023-04-01 17:47:43\n", - " 0.971667\n", - " 0.971667\n", - " linear\n", - " \n", - " \n", - " 5\n", - " 6\n", - " 2\n", - " 2023-04-01 17:47:43\n", - " 0.936667\n", - " 0.936667\n", - " poly\n", - " \n", - " \n", - " 6\n", - " 7\n", - " 2\n", - " 2023-04-01 17:47:43\n", - " 0.975000\n", - " 0.975000\n", - " rbf\n", - " \n", - " \n", - " 7\n", - " 8\n", - " 2\n", - " 2023-04-01 17:47:43\n", - " 0.896667\n", - " 0.896667\n", - " sigmoid\n", - " \n", - " \n", - " 8\n", - " 9\n", - " 3\n", - " 2023-04-01 17:47:43\n", - " 0.971667\n", - " 0.971667\n", - " linear\n", - " \n", - " \n", - " 9\n", - " 10\n", - " 3\n", - " 2023-04-01 17:47:43\n", - " 0.936667\n", - " 0.936667\n", - " poly\n", - " \n", - " \n", - " 10\n", - " 11\n", - " 3\n", - " 2023-04-01 17:47:43\n", - " 0.975000\n", - " 0.975000\n", - " rbf\n", - " \n", - " \n", - " 11\n", - " 12\n", - " 3\n", - " 2023-04-01 17:47:43\n", - " 0.896667\n", - " 0.896667\n", - " sigmoid\n", - " \n", - " \n", - " 12\n", - " 13\n", - " 4\n", - " 2023-04-01 17:47:43\n", - " 0.971667\n", - " 0.971667\n", - " linear\n", - " \n", - " \n", - " 13\n", - " 14\n", - " 4\n", - " 2023-04-01 17:47:43\n", - " 0.936667\n", - " 0.936667\n", - " poly\n", - " \n", - " \n", - " 14\n", - " 15\n", - " 4\n", - " 2023-04-01 17:47:43\n", - " 0.975000\n", - " 0.975000\n", - " rbf\n", - " \n", - " \n", - " 15\n", - " 16\n", - " 4\n", - " 2023-04-01 17:47:43\n", - " 0.896667\n", - " 0.896667\n", - " sigmoid\n", - " \n", - " \n", - " 16\n", - " 17\n", - " 5\n", - " 2023-04-01 17:47:43\n", - " 0.971667\n", - " 0.971667\n", - " linear\n", - " \n", - " \n", - " 17\n", - " 18\n", - " 5\n", - " 2023-04-01 17:47:43\n", - " 0.936667\n", - " 0.936667\n", - " poly\n", - " \n", - " \n", - " 18\n", - " 19\n", - " 5\n", - " 2023-04-01 17:47:43\n", - " 0.975000\n", - " 0.975000\n", - " rbf\n", - " \n", - " \n", - " 19\n", - " 20\n", - " 5\n", - " 2023-04-01 17:47:43\n", - " 0.896667\n", - " 0.896667\n", - " sigmoid\n", - " \n", " \n", "\n", "" ], "text/plain": [ - " ID experiment_id timestamp f1 accuracy kernel\n", - "0 1 1 2023-04-01 17:47:43 0.971667 0.971667 linear\n", - "1 2 1 2023-04-01 17:47:43 0.936667 0.936667 poly\n", - "2 3 1 2023-04-01 17:47:43 0.975000 0.975000 rbf\n", - "3 4 1 2023-04-01 17:47:43 0.896667 0.896667 sigmoid\n", - "4 5 2 2023-04-01 17:47:43 0.971667 0.971667 linear\n", - "5 6 2 2023-04-01 17:47:43 0.936667 0.936667 poly\n", - "6 7 2 2023-04-01 17:47:43 0.975000 0.975000 rbf\n", - "7 8 2 2023-04-01 17:47:43 0.896667 0.896667 sigmoid\n", - "8 9 3 2023-04-01 17:47:43 0.971667 0.971667 linear\n", - "9 10 3 2023-04-01 17:47:43 0.936667 0.936667 poly\n", - "10 11 3 2023-04-01 17:47:43 0.975000 0.975000 rbf\n", - "11 12 3 2023-04-01 17:47:43 0.896667 0.896667 sigmoid\n", - "12 13 4 2023-04-01 17:47:43 0.971667 0.971667 linear\n", - "13 14 4 2023-04-01 17:47:43 0.936667 0.936667 poly\n", - "14 15 4 2023-04-01 17:47:43 0.975000 0.975000 rbf\n", - "15 16 4 2023-04-01 17:47:43 0.896667 0.896667 sigmoid\n", - "16 17 5 2023-04-01 17:47:43 0.971667 0.971667 linear\n", - "17 18 5 2023-04-01 17:47:43 0.936667 0.936667 poly\n", - "18 19 5 2023-04-01 17:47:43 0.975000 0.975000 rbf\n", - "19 20 5 2023-04-01 17:47:43 0.896667 0.896667 sigmoid" + "Empty DataFrame\n", + "Columns: [ID, experiment_id, timestamp, f1, accuracy, kernel]\n", + "Index: []" ] }, "execution_count": 4, @@ -594,7 +389,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Check results\n", + "## Check Results\n", "The content of all database tables having keyfields and resultfields, as well as every logtable can be easily obtained." ] }, @@ -646,14 +441,14 @@ " iris\n", " 5\n", " 1\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:07\n", " done\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:07\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " linear\n", " linear\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:12\n", " None\n", " \n", " \n", @@ -662,14 +457,14 @@ " iris\n", " 5\n", " 2\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:07\n", " done\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:12\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " linear\n", " linear\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:17\n", " None\n", " \n", " \n", @@ -678,14 +473,14 @@ " iris\n", " 5\n", " 3\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:07\n", " done\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:17\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " linear\n", " linear\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:23\n", " None\n", " \n", " \n", @@ -694,14 +489,14 @@ " iris\n", " 5\n", " 4\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:07\n", " done\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:23\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " linear\n", " linear\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:28\n", " None\n", " \n", " \n", @@ -710,14 +505,14 @@ " iris\n", " 5\n", " 5\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:07\n", " done\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:28\n", " example_notebook\n", - " MacBook-Pro-von-Tanja.local\n", + " Worklaptop\n", " linear\n", " linear\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:34\n", " None\n", " \n", " \n", @@ -726,25 +521,25 @@ ], "text/plain": [ " ID dataset cross_validation_splits seed creation_date status \\\n", - "0 1 iris 5 1 2023-04-01 17:47:43 done \n", - "1 2 iris 5 2 2023-04-01 17:47:43 done \n", - "2 3 iris 5 3 2023-04-01 17:47:43 done \n", - "3 4 iris 5 4 2023-04-01 17:47:43 done \n", - "4 5 iris 5 5 2023-04-01 17:47:43 done \n", + "0 1 iris 5 1 2023-05-19 12:49:07 done \n", + "1 2 iris 5 2 2023-05-19 12:49:07 done \n", + "2 3 iris 5 3 2023-05-19 12:49:07 done \n", + "3 4 iris 5 4 2023-05-19 12:49:07 done \n", + "4 5 iris 5 5 2023-05-19 12:49:07 done \n", "\n", - " start_date name machine \\\n", - "0 2023-04-01 17:47:43 example_notebook MacBook-Pro-von-Tanja.local \n", - "1 2023-04-01 17:47:43 example_notebook MacBook-Pro-von-Tanja.local \n", - "2 2023-04-01 17:47:43 example_notebook MacBook-Pro-von-Tanja.local \n", - "3 2023-04-01 17:47:43 example_notebook MacBook-Pro-von-Tanja.local \n", - "4 2023-04-01 17:47:43 example_notebook MacBook-Pro-von-Tanja.local \n", + " start_date name machine best_kernel_f1 \\\n", + "0 2023-05-19 12:49:07 example_notebook Worklaptop linear \n", + "1 2023-05-19 12:49:12 example_notebook Worklaptop linear \n", + "2 2023-05-19 12:49:17 example_notebook Worklaptop linear \n", + "3 2023-05-19 12:49:23 example_notebook Worklaptop linear \n", + "4 2023-05-19 12:49:28 example_notebook Worklaptop linear \n", "\n", - " best_kernel_f1 best_kernel_accuracy end_date error \n", - "0 linear linear 2023-04-01 17:47:43 None \n", - "1 linear linear 2023-04-01 17:47:43 None \n", - "2 linear linear 2023-04-01 17:47:43 None \n", - "3 linear linear 2023-04-01 17:47:43 None \n", - "4 linear linear 2023-04-01 17:47:43 None " + " best_kernel_accuracy end_date error \n", + "0 linear 2023-05-19 12:49:12 None \n", + "1 linear 2023-05-19 12:49:17 None \n", + "2 linear 2023-05-19 12:49:23 None \n", + "3 linear 2023-05-19 12:49:28 None \n", + "4 linear 2023-05-19 12:49:34 None " ] }, "execution_count": 6, @@ -795,208 +590,208 @@ " 0\n", " 1\n", " 1\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:12\n", " 0.971667\n", " 0.971667\n", - " linear\n", + " 'linear'\n", " \n", " \n", " 1\n", " 2\n", " 1\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:12\n", " 0.936667\n", " 0.936667\n", - " poly\n", + " 'poly'\n", " \n", " \n", " 2\n", " 3\n", " 1\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:12\n", " 0.975000\n", " 0.975000\n", - " rbf\n", + " 'rbf'\n", " \n", " \n", " 3\n", " 4\n", " 1\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:12\n", " 0.896667\n", " 0.896667\n", - " sigmoid\n", + " 'sigmoid'\n", " \n", " \n", " 4\n", " 5\n", " 2\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:17\n", " 0.971667\n", " 0.971667\n", - " linear\n", + " 'linear'\n", " \n", " \n", " 5\n", " 6\n", " 2\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:17\n", " 0.936667\n", " 0.936667\n", - " poly\n", + " 'poly'\n", " \n", " \n", " 6\n", " 7\n", " 2\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:17\n", " 0.975000\n", " 0.975000\n", - " rbf\n", + " 'rbf'\n", " \n", " \n", " 7\n", " 8\n", " 2\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:17\n", " 0.896667\n", " 0.896667\n", - " sigmoid\n", + " 'sigmoid'\n", " \n", " \n", " 8\n", " 9\n", " 3\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:23\n", " 0.971667\n", " 0.971667\n", - " linear\n", + " 'linear'\n", " \n", " \n", " 9\n", " 10\n", " 3\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:23\n", " 0.936667\n", " 0.936667\n", - " poly\n", + " 'poly'\n", " \n", " \n", " 10\n", " 11\n", " 3\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:23\n", " 0.975000\n", " 0.975000\n", - " rbf\n", + " 'rbf'\n", " \n", " \n", " 11\n", " 12\n", " 3\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:23\n", " 0.896667\n", " 0.896667\n", - " sigmoid\n", + " 'sigmoid'\n", " \n", " \n", " 12\n", " 13\n", " 4\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:28\n", " 0.971667\n", " 0.971667\n", - " linear\n", + " 'linear'\n", " \n", " \n", " 13\n", " 14\n", " 4\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:28\n", " 0.936667\n", " 0.936667\n", - " poly\n", + " 'poly'\n", " \n", " \n", " 14\n", " 15\n", " 4\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:28\n", " 0.975000\n", " 0.975000\n", - " rbf\n", + " 'rbf'\n", " \n", " \n", " 15\n", " 16\n", " 4\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:28\n", " 0.896667\n", " 0.896667\n", - " sigmoid\n", + " 'sigmoid'\n", " \n", " \n", " 16\n", " 17\n", " 5\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:33\n", " 0.971667\n", " 0.971667\n", - " linear\n", + " 'linear'\n", " \n", " \n", " 17\n", " 18\n", " 5\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:34\n", " 0.936667\n", " 0.936667\n", - " poly\n", + " 'poly'\n", " \n", " \n", " 18\n", " 19\n", " 5\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:34\n", " 0.975000\n", " 0.975000\n", - " rbf\n", + " 'rbf'\n", " \n", " \n", " 19\n", " 20\n", " 5\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:34\n", " 0.896667\n", " 0.896667\n", - " sigmoid\n", + " 'sigmoid'\n", " \n", " \n", "\n", "" ], "text/plain": [ - " ID experiment_id timestamp f1 accuracy kernel\n", - "0 1 1 2023-04-01 17:47:43 0.971667 0.971667 linear\n", - "1 2 1 2023-04-01 17:47:43 0.936667 0.936667 poly\n", - "2 3 1 2023-04-01 17:47:43 0.975000 0.975000 rbf\n", - "3 4 1 2023-04-01 17:47:43 0.896667 0.896667 sigmoid\n", - "4 5 2 2023-04-01 17:47:43 0.971667 0.971667 linear\n", - "5 6 2 2023-04-01 17:47:43 0.936667 0.936667 poly\n", - "6 7 2 2023-04-01 17:47:43 0.975000 0.975000 rbf\n", - "7 8 2 2023-04-01 17:47:43 0.896667 0.896667 sigmoid\n", - "8 9 3 2023-04-01 17:47:43 0.971667 0.971667 linear\n", - "9 10 3 2023-04-01 17:47:43 0.936667 0.936667 poly\n", - "10 11 3 2023-04-01 17:47:43 0.975000 0.975000 rbf\n", - "11 12 3 2023-04-01 17:47:43 0.896667 0.896667 sigmoid\n", - "12 13 4 2023-04-01 17:47:43 0.971667 0.971667 linear\n", - "13 14 4 2023-04-01 17:47:43 0.936667 0.936667 poly\n", - "14 15 4 2023-04-01 17:47:43 0.975000 0.975000 rbf\n", - "15 16 4 2023-04-01 17:47:43 0.896667 0.896667 sigmoid\n", - "16 17 5 2023-04-01 17:47:43 0.971667 0.971667 linear\n", - "17 18 5 2023-04-01 17:47:43 0.936667 0.936667 poly\n", - "18 19 5 2023-04-01 17:47:43 0.975000 0.975000 rbf\n", - "19 20 5 2023-04-01 17:47:43 0.896667 0.896667 sigmoid" + " ID experiment_id timestamp f1 accuracy kernel\n", + "0 1 1 2023-05-19 12:49:12 0.971667 0.971667 'linear'\n", + "1 2 1 2023-05-19 12:49:12 0.936667 0.936667 'poly'\n", + "2 3 1 2023-05-19 12:49:12 0.975000 0.975000 'rbf'\n", + "3 4 1 2023-05-19 12:49:12 0.896667 0.896667 'sigmoid'\n", + "4 5 2 2023-05-19 12:49:17 0.971667 0.971667 'linear'\n", + "5 6 2 2023-05-19 12:49:17 0.936667 0.936667 'poly'\n", + "6 7 2 2023-05-19 12:49:17 0.975000 0.975000 'rbf'\n", + "7 8 2 2023-05-19 12:49:17 0.896667 0.896667 'sigmoid'\n", + "8 9 3 2023-05-19 12:49:23 0.971667 0.971667 'linear'\n", + "9 10 3 2023-05-19 12:49:23 0.936667 0.936667 'poly'\n", + "10 11 3 2023-05-19 12:49:23 0.975000 0.975000 'rbf'\n", + "11 12 3 2023-05-19 12:49:23 0.896667 0.896667 'sigmoid'\n", + "12 13 4 2023-05-19 12:49:28 0.971667 0.971667 'linear'\n", + "13 14 4 2023-05-19 12:49:28 0.936667 0.936667 'poly'\n", + "14 15 4 2023-05-19 12:49:28 0.975000 0.975000 'rbf'\n", + "15 16 4 2023-05-19 12:49:28 0.896667 0.896667 'sigmoid'\n", + "16 17 5 2023-05-19 12:49:33 0.971667 0.971667 'linear'\n", + "17 18 5 2023-05-19 12:49:34 0.936667 0.936667 'poly'\n", + "18 19 5 2023-05-19 12:49:34 0.975000 0.975000 'rbf'\n", + "19 20 5 2023-05-19 12:49:34 0.896667 0.896667 'sigmoid'" ] }, "execution_count": 7, @@ -1045,140 +840,140 @@ " 0\n", " 1\n", " 1\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:12\n", " 0.966667\n", " \n", " \n", " 1\n", " 2\n", " 1\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:12\n", " 0.933333\n", " \n", " \n", " 2\n", " 3\n", " 1\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:12\n", " 0.966667\n", " \n", " \n", " 3\n", " 4\n", " 1\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:12\n", " 0.893333\n", " \n", " \n", " 4\n", " 5\n", " 2\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:17\n", " 0.966667\n", " \n", " \n", " 5\n", " 6\n", " 2\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:17\n", " 0.933333\n", " \n", " \n", " 6\n", " 7\n", " 2\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:17\n", " 0.966667\n", " \n", " \n", " 7\n", " 8\n", " 2\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:17\n", " 0.893333\n", " \n", " \n", " 8\n", " 9\n", " 3\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:23\n", " 0.966667\n", " \n", " \n", " 9\n", " 10\n", " 3\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:23\n", " 0.933333\n", " \n", " \n", " 10\n", " 11\n", " 3\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:23\n", " 0.966667\n", " \n", " \n", " 11\n", " 12\n", " 3\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:23\n", " 0.893333\n", " \n", " \n", " 12\n", " 13\n", " 4\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:28\n", " 0.966667\n", " \n", " \n", " 13\n", " 14\n", " 4\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:28\n", " 0.933333\n", " \n", " \n", " 14\n", " 15\n", " 4\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:28\n", " 0.966667\n", " \n", " \n", " 15\n", " 16\n", " 4\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:28\n", " 0.893333\n", " \n", " \n", " 16\n", " 17\n", " 5\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:33\n", " 0.966667\n", " \n", " \n", " 17\n", " 18\n", " 5\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:34\n", " 0.933333\n", " \n", " \n", " 18\n", " 19\n", " 5\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:34\n", " 0.966667\n", " \n", " \n", " 19\n", " 20\n", " 5\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:34\n", " 0.893333\n", " \n", " \n", @@ -1187,26 +982,26 @@ ], "text/plain": [ " ID experiment_id timestamp test_f1\n", - "0 1 1 2023-04-01 17:47:43 0.966667\n", - "1 2 1 2023-04-01 17:47:43 0.933333\n", - "2 3 1 2023-04-01 17:47:43 0.966667\n", - "3 4 1 2023-04-01 17:47:43 0.893333\n", - "4 5 2 2023-04-01 17:47:43 0.966667\n", - "5 6 2 2023-04-01 17:47:43 0.933333\n", - "6 7 2 2023-04-01 17:47:43 0.966667\n", - "7 8 2 2023-04-01 17:47:43 0.893333\n", - "8 9 3 2023-04-01 17:47:43 0.966667\n", - "9 10 3 2023-04-01 17:47:43 0.933333\n", - "10 11 3 2023-04-01 17:47:43 0.966667\n", - "11 12 3 2023-04-01 17:47:43 0.893333\n", - "12 13 4 2023-04-01 17:47:43 0.966667\n", - "13 14 4 2023-04-01 17:47:43 0.933333\n", - "14 15 4 2023-04-01 17:47:43 0.966667\n", - "15 16 4 2023-04-01 17:47:43 0.893333\n", - "16 17 5 2023-04-01 17:47:43 0.966667\n", - "17 18 5 2023-04-01 17:47:43 0.933333\n", - "18 19 5 2023-04-01 17:47:43 0.966667\n", - "19 20 5 2023-04-01 17:47:43 0.893333" + "0 1 1 2023-05-19 12:49:12 0.966667\n", + "1 2 1 2023-05-19 12:49:12 0.933333\n", + "2 3 1 2023-05-19 12:49:12 0.966667\n", + "3 4 1 2023-05-19 12:49:12 0.893333\n", + "4 5 2 2023-05-19 12:49:17 0.966667\n", + "5 6 2 2023-05-19 12:49:17 0.933333\n", + "6 7 2 2023-05-19 12:49:17 0.966667\n", + "7 8 2 2023-05-19 12:49:17 0.893333\n", + "8 9 3 2023-05-19 12:49:23 0.966667\n", + "9 10 3 2023-05-19 12:49:23 0.933333\n", + "10 11 3 2023-05-19 12:49:23 0.966667\n", + "11 12 3 2023-05-19 12:49:23 0.893333\n", + "12 13 4 2023-05-19 12:49:28 0.966667\n", + "13 14 4 2023-05-19 12:49:28 0.933333\n", + "14 15 4 2023-05-19 12:49:28 0.966667\n", + "15 16 4 2023-05-19 12:49:28 0.893333\n", + "16 17 5 2023-05-19 12:49:33 0.966667\n", + "17 18 5 2023-05-19 12:49:34 0.933333\n", + "18 19 5 2023-05-19 12:49:34 0.966667\n", + "19 20 5 2023-05-19 12:49:34 0.893333" ] }, "execution_count": 8, @@ -1255,140 +1050,140 @@ " 0\n", " 1\n", " 1\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:12\n", " 0.966667\n", " \n", " \n", " 1\n", " 2\n", " 1\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:12\n", " 0.933333\n", " \n", " \n", " 2\n", " 3\n", " 1\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:12\n", " 0.966667\n", " \n", " \n", " 3\n", " 4\n", " 1\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:12\n", " 0.893333\n", " \n", " \n", " 4\n", " 5\n", " 2\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:17\n", " 0.966667\n", " \n", " \n", " 5\n", " 6\n", " 2\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:17\n", " 0.933333\n", " \n", " \n", " 6\n", " 7\n", " 2\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:17\n", " 0.966667\n", " \n", " \n", " 7\n", " 8\n", " 2\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:17\n", " 0.893333\n", " \n", " \n", " 8\n", " 9\n", " 3\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:23\n", " 0.966667\n", " \n", " \n", " 9\n", " 10\n", " 3\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:23\n", " 0.933333\n", " \n", " \n", " 10\n", " 11\n", " 3\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:23\n", " 0.966667\n", " \n", " \n", " 11\n", " 12\n", " 3\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:23\n", " 0.893333\n", " \n", " \n", " 12\n", " 13\n", " 4\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:28\n", " 0.966667\n", " \n", " \n", " 13\n", " 14\n", " 4\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:28\n", " 0.933333\n", " \n", " \n", " 14\n", " 15\n", " 4\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:28\n", " 0.966667\n", " \n", " \n", " 15\n", " 16\n", " 4\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:28\n", " 0.893333\n", " \n", " \n", " 16\n", " 17\n", " 5\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:33\n", " 0.966667\n", " \n", " \n", " 17\n", " 18\n", " 5\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:34\n", " 0.933333\n", " \n", " \n", " 18\n", " 19\n", " 5\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:34\n", " 0.966667\n", " \n", " \n", " 19\n", " 20\n", " 5\n", - " 2023-04-01 17:47:43\n", + " 2023-05-19 12:49:34\n", " 0.893333\n", " \n", " \n", @@ -1397,26 +1192,26 @@ ], "text/plain": [ " ID experiment_id timestamp test_accuracy\n", - "0 1 1 2023-04-01 17:47:43 0.966667\n", - "1 2 1 2023-04-01 17:47:43 0.933333\n", - "2 3 1 2023-04-01 17:47:43 0.966667\n", - "3 4 1 2023-04-01 17:47:43 0.893333\n", - "4 5 2 2023-04-01 17:47:43 0.966667\n", - "5 6 2 2023-04-01 17:47:43 0.933333\n", - "6 7 2 2023-04-01 17:47:43 0.966667\n", - "7 8 2 2023-04-01 17:47:43 0.893333\n", - "8 9 3 2023-04-01 17:47:43 0.966667\n", - "9 10 3 2023-04-01 17:47:43 0.933333\n", - "10 11 3 2023-04-01 17:47:43 0.966667\n", - "11 12 3 2023-04-01 17:47:43 0.893333\n", - "12 13 4 2023-04-01 17:47:43 0.966667\n", - "13 14 4 2023-04-01 17:47:43 0.933333\n", - "14 15 4 2023-04-01 17:47:43 0.966667\n", - "15 16 4 2023-04-01 17:47:43 0.893333\n", - "16 17 5 2023-04-01 17:47:43 0.966667\n", - "17 18 5 2023-04-01 17:47:43 0.933333\n", - "18 19 5 2023-04-01 17:47:43 0.966667\n", - "19 20 5 2023-04-01 17:47:43 0.893333" + "0 1 1 2023-05-19 12:49:12 0.966667\n", + "1 2 1 2023-05-19 12:49:12 0.933333\n", + "2 3 1 2023-05-19 12:49:12 0.966667\n", + "3 4 1 2023-05-19 12:49:12 0.893333\n", + "4 5 2 2023-05-19 12:49:17 0.966667\n", + "5 6 2 2023-05-19 12:49:17 0.933333\n", + "6 7 2 2023-05-19 12:49:17 0.966667\n", + "7 8 2 2023-05-19 12:49:17 0.893333\n", + "8 9 3 2023-05-19 12:49:23 0.966667\n", + "9 10 3 2023-05-19 12:49:23 0.933333\n", + "10 11 3 2023-05-19 12:49:23 0.966667\n", + "11 12 3 2023-05-19 12:49:23 0.893333\n", + "12 13 4 2023-05-19 12:49:28 0.966667\n", + "13 14 4 2023-05-19 12:49:28 0.933333\n", + "14 15 4 2023-05-19 12:49:28 0.966667\n", + "15 16 4 2023-05-19 12:49:28 0.893333\n", + "16 17 5 2023-05-19 12:49:33 0.966667\n", + "17 18 5 2023-05-19 12:49:34 0.933333\n", + "18 19 5 2023-05-19 12:49:34 0.966667\n", + "19 20 5 2023-05-19 12:49:34 0.893333" ] }, "execution_count": 9, @@ -1427,6 +1222,15 @@ "source": [ "experimenter.get_logtable('test_accuracy')" ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### CodeCarbon\n", + "Note that `CodeCarbon` is activated by default, collecting information about the carbon emissions of each experiment. Have a look at our [general usage example](https://tornede.github.io/py_experimenter/examples/example_general_usage.html) and the according [documentation of CodeCarbon fields](https://tornede.github.io/py_experimenter/usage.html#codecarbon-fields) for more information." + ] } ], "metadata": { diff --git a/docs/source/index.rst b/docs/source/index.rst index 91eee82a..37a327b2 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -8,7 +8,7 @@ Welcome to PyExperimenter's documentation! ========================================== ``PyExperimenter`` is a tool to facilitate the setup, documentation, execution, and subsequent evaluation of results from an empirical study of algorithms and in particular is designed to reduce the involved manual effort significantly. -It is intended to be used by researchers in the field of artificial intelligence, but is not limited to those. +It is intended to be used by researchers in the field of artificial intelligence, but is not limited to those. Addtionally, we support tracking carbon emissions using :ref:`CodeCarbon `. The empirical analysis of algorithms is often accompanied by the execution of algorithms for different inputs and variants of the algorithms (specified via parameters) and the measurement of non-functional properties. Since the individual evaluations are usually independent, the evaluation can be performed in a distributed manner on an HPC system. diff --git a/docs/source/usage/execution.rst b/docs/source/usage/execution.rst index f9a38240..e5186650 100644 --- a/docs/source/usage/execution.rst +++ b/docs/source/usage/execution.rst @@ -16,6 +16,7 @@ The actual execution of ``PyExperimenter`` only needs a few lines of code. Pleas The above code will execute all experiments defined in the :ref:`experiment configuration file `. If you want to do something different, e.g. :ref:`fill the database table with specific rows `, or :ref:`reset experiments `, check out the following sections. +.. _execution_creating_pyexperimenter: ------------------------- Creating a PyExperimenter @@ -33,6 +34,7 @@ Additionally, further information can be given to ``PyExperimenter``: - ``database_credential_file_path``: The path of the :ref:`database credential file `. Default: ``config/database_credentials.cfg`` - ``database_name``: The name of the database to manage the experiments. If given, it will overwrite the database name given in the `experiment_configuration_file_path`. - ``table_name``: The name of the database table to manage the experiments. If given, it will overwrite the table name given in the `experiment_configuration_file_path`. +- ``use_codecarbon``: Specifies if :ref:`CodeCarbon ` will be used to track experiment emissions. Default: ``True``. - ``name``: The name of the experimenter, which will be added to the database table of each executed experiment. If using the PyExperimenter on an HPC system, this can be used for the job ID, so that the according log file can easily be found. Default: ``PyExperimenter``. @@ -135,3 +137,16 @@ The current content of the database table can be obtained as a ``pandas.DataFram result_table = experimenter.get_table() result_table = result_table.groupby(['dataset']).mean()[['seed']] print(result_table.to_latex(columns=['seed'], index_names=['dataset'])) + + +.. _execution_codecarbon: + +---------- +CodeCarbon +---------- + +Tracking information about the carbon footprint of experiments is supported via :ref:`CodeCarbon `. Tracking is enabled by default, as described in :ref:`how to create a PyExperimenter `. If the tracking is enabled, the according information can be found in the database table ``_codecarbon``, which can be easily accessed with the following call: + +.. code-block:: + + experimenter.get_codecarbon_table() diff --git a/docs/source/usage/experiment_configuration_file.rst b/docs/source/usage/experiment_configuration_file.rst index d90265de..ce31ccfb 100644 --- a/docs/source/usage/experiment_configuration_file.rst +++ b/docs/source/usage/experiment_configuration_file.rst @@ -30,6 +30,14 @@ The experiment configuration file is primarily used to define the database backe [CUSTOM] path = sample_data + [codecarbon] + offline_mode = False + measure_power_secs = 15 + tracking_mode = process + log_level = error + save_to_file = True + output_dir = output/CodeCarbon + offline_mode = False -------------------- Database Information @@ -138,3 +146,26 @@ Optionally, custom fields can be defined under the ``CUSTOM`` section, which wil [CUSTOM] path = sample_data + + +.. _experiment_configuration_file_codecarbon: + +---------- +CodeCarbon +---------- + +Tracking information about the carbon footprint of experiments is supported via `CodeCarbon `_. It is enabled by default, if you want to completely deactivate it, please check the :ref:`documentation on how to execute PyExperimenter `. + +Per default, ``CodeCarbon`` will track the carbon footprint of the whole machine, including the execution of the experiment function. It measures the power consumption every 15 seconds and estimates the carbon emissions based on the region of the device. The resulting information is saved to a file in the ``output/CodeCarbon`` as well as written into its own table in the database, called ``_codecarbon``. A description about how to access the data can be found in the :ref:`CodeCarbon explanation of the execution of PyExperimenter `. + +``CodeCarbon`` can be configured via its own section in the experiment configuration file. The default configuration is shown below, but can be extended by any of the parameters listed in the `CodeCarbon documentation `_. During the execution, the section will be automatically copied into a ``.codecarbon.config`` file in you working directory, as this is required by ``CodeCarbon``. + +.. code-block:: + + [codecarbon] + measure_power_secs = 15 + tracking_mode = process + log_level = error + save_to_file = True + output_dir = output/CodeCarbon + offline_mode = False diff --git a/docs/source/usage/index.rst b/docs/source/usage/index.rst index 29d63a95..c5f2c0f5 100644 --- a/docs/source/usage/index.rst +++ b/docs/source/usage/index.rst @@ -12,7 +12,8 @@ Once this table has been created, a ``PyExperimenter`` instance can be run on an Each instance automatically pulls open experiments from the database, executes the function provided by the user with the corresponding parameters defining the experiment and writes back the results computed by the function. Errors arising during the execution are logged in the database. In case of failed experiments or if desired otherwise, a subset of the experiments can be reset and restarted easily. -After all experiments are done, results can be jointly exported as a ``Pandas DataFrame`` for further processing, such as generating a LaTeX table averaging results of randomized computations over different seeds. +Overall, :ref:`CodeCarbon ` is used to track the carbon emissions of each experiment into a separate table. +After finishing all experiments, results can be jointly exported as a ``Pandas DataFrame`` for further processing, such as generating a LaTeX table averaging results of randomized computations over different seeds. .. figure:: ../_static/workflow.png :width: 600px diff --git a/poetry.lock b/poetry.lock index 82cf3c7a..40ea44fc 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand. [[package]] name = "aiofiles" @@ -435,6 +435,47 @@ files = [ {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"}, ] +[[package]] +name = "click" +version = "8.1.3" +description = "Composable command line interface toolkit" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, + {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "codecarbon" +version = "2.2.1" +description = "" +category = "main" +optional = false +python-versions = ">3.6" +files = [ + {file = "codecarbon-2.2.1-py3-none-any.whl", hash = "sha256:e2f75a695d0c752d9019c0e3473bedbdeec58e66b99a2773b39edb58e0a9406d"}, + {file = "codecarbon-2.2.1.tar.gz", hash = "sha256:44f3257a1814377967a8e9dcdf177583a7a2a1624716d38818410af871d89afd"}, +] + +[package.dependencies] +arrow = "*" +click = "*" +fuzzywuzzy = "*" +pandas = "*" +psutil = "*" +py-cpuinfo = "*" +pynvml = "*" +requests = "*" + +[package.extras] +dashboard = ["dash (>=2.2.0)", "dash-bootstrap-components", "plotly (>=5.6.0)"] +viz = ["dash", "dash-bootstrap-components (<1.0.0)", "fire"] + [[package]] name = "colorama" version = "0.4.6" @@ -606,7 +647,7 @@ files = [ name = "freezegun" version = "1.2.2" description = "Let your Python tests travel through time" -category = "main" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -617,6 +658,21 @@ files = [ [package.dependencies] python-dateutil = ">=2.7" +[[package]] +name = "fuzzywuzzy" +version = "0.18.0" +description = "Fuzzy string matching in python" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "fuzzywuzzy-0.18.0-py2.py3-none-any.whl", hash = "sha256:928244b28db720d1e0ee7587acf660ea49d7e4c632569cad4f1cd7e68a5f0993"}, + {file = "fuzzywuzzy-0.18.0.tar.gz", hash = "sha256:45016e92264780e58972dca1b3d939ac864b78437422beecebb3095f8efd00e8"}, +] + +[package.extras] +speedup = ["python-levenshtein (>=0.12)"] + [[package]] name = "idna" version = "3.4" @@ -1833,6 +1889,18 @@ files = [ [package.extras] tests = ["pytest"] +[[package]] +name = "py-cpuinfo" +version = "9.0.0" +description = "Get CPU info with pure Python" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "py-cpuinfo-9.0.0.tar.gz", hash = "sha256:3cdbbf3fac90dc6f118bfd64384f309edeadd902d7c8fb17f02ffa1fc3f49690"}, + {file = "py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5"}, +] + [[package]] name = "pycparser" version = "2.21" @@ -1860,6 +1928,18 @@ files = [ [package.extras] plugins = ["importlib-metadata"] +[[package]] +name = "pynvml" +version = "11.5.0" +description = "Python Bindings for the NVIDIA Management Library" +category = "main" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pynvml-11.5.0-py3-none-any.whl", hash = "sha256:5cce014ac01b098d08f06178f86c37be409b80b2e903a5a03ce15eed60f55e25"}, + {file = "pynvml-11.5.0.tar.gz", hash = "sha256:d027b21b95b1088b9fc278117f9f61b7c67f8e33a787e9f83f735f0f71ac32d0"}, +] + [[package]] name = "pyrsistent" version = "0.19.3" @@ -2898,4 +2978,4 @@ testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "ab9c75c7818c382e78b02cd9b0177d863c5bb4222a937dc0ea15478fe37409f6" +content-hash = "16c92f7978756a8f9d58a649c3730656aaae25e63853eb14202d570dc1b58f47" diff --git a/py_experimenter/database_connector.py b/py_experimenter/database_connector.py index 6c470e93..ed3d9970 100644 --- a/py_experimenter/database_connector.py +++ b/py_experimenter/database_connector.py @@ -1,8 +1,10 @@ import abc +import itertools import logging from configparser import ConfigParser from typing import Dict, List, Optional, Tuple, Union +import numpy as np import pandas as pd from py_experimenter import utils @@ -13,14 +15,16 @@ class DatabaseConnector(abc.ABC): - def __init__(self, config: ConfigParser): + def __init__(self, config: ConfigParser, use_codecarbon: bool, codecarbon_config: ConfigParser): self.config = config + self.codecarbon_config = codecarbon_config self.table_name = self.config.get('PY_EXPERIMENTER', 'table') self.database_name = self.config.get('PY_EXPERIMENTER', 'database') self.database_credentials = self._extract_credentials() self.timestamp_on_result_fields = utils.timestamps_for_result_fields(self.config) + self.use_codecarbon = use_codecarbon self._test_connection() @abc.abstractmethod @@ -47,9 +51,12 @@ def commit(self, connection) -> None: except Exception as e: raise DatabaseConnectionError(f'error \n{e}\n raised when committing to database.') - def execute(self, cursor, sql_statement): + def execute(self, cursor, sql_statement, values=None) -> None: try: - cursor.execute(sql_statement) + if values is None: + cursor.execute(sql_statement) + else: + cursor.execute(sql_statement, values) except Exception as e: raise DatabaseConnectionError(f'error \n{e}\n raised when executing sql statement.') @@ -84,12 +91,16 @@ def create_table_if_not_existing(self) -> None: self._create_table(cursor, columns, self.table_name) for logtable_name, logtable_columns in utils.extract_logtables(self.config, self.table_name).items(): - self._create_table(cursor, logtable_columns, logtable_name, logtable=True) + self._create_table(cursor, logtable_columns, logtable_name, table_type='logtable') + + if self.use_codecarbon: + codecarbon_columns = utils.extract_codecarbon_columns() + self._create_table(cursor, codecarbon_columns, f"{self.table_name}_codecarbon", table_type='codecarbon') self.close_connection(connection) @abc.abstractmethod - def _table_exists(self, cursor): + def _table_exists(self, cursor, table_name: str): pass @staticmethod @@ -114,21 +125,25 @@ def _exclude_fixed_columns(self, columns: List[str]) -> List[str]: return columns[1:amount_of_keyfields + 1] + columns[-amount_of_result_fields - 2:-2] - def _create_table(self, cursor, columns: List[Tuple['str']], table_name: str, logtable: bool = False): - query = self._get_create_table_query(columns, table_name, logtable) + def _create_table(self, cursor, columns: List[Tuple['str']], table_name: str, table_type: str = 'standard'): + query = self._get_create_table_query(columns, table_name, table_type) try: self.execute(cursor, query) except Exception as err: raise CreatingTableError(f'Error when creating table: {err}') - def _get_create_table_query(self, columns: List[Tuple['str']], table_name: str, logtable: bool): - columns = ['%s %s DEFAULT NULL' % (self.escape_sql_chars(field)[0], datatype) for field, datatype in columns] - columns = ','.join(self.escape_sql_chars(*columns)) - query = f"CREATE TABLE {self.escape_sql_chars(table_name)[0]} (ID INTEGER PRIMARY KEY {self.get_autoincrement()}" - if logtable: + def _get_create_table_query(self, columns: List[Tuple['str']], table_name: str, table_type: str = 'standard'): + columns = ['%s %s DEFAULT NULL' % (field, datatype) for field, datatype in columns] + columns = ','.join(columns) + query = f"CREATE TABLE {table_name} (ID INTEGER PRIMARY KEY {self.get_autoincrement()}" + if table_type == 'standard': + query += f", {columns}" + elif table_type == 'logtable': query += f", experiment_id INTEGER, timestamp DATETIME, {columns}, FOREIGN KEY (experiment_id) REFERENCES {self.table_name}(ID) ON DELETE CASCADE" + elif table_type == 'codecarbon': + query += f", experiment_id INTEGER, {columns}, FOREIGN KEY (experiment_id) REFERENCES {self.table_name}(ID) ON DELETE CASCADE" else: - query += f", {columns}" + raise ValueError(f"Unknown table type: {table_type}") return query + ');' @abc.abstractstaticmethod @@ -169,7 +184,7 @@ def fill_table(self, parameters=None, fixed_parameter_combinations=None) -> None if rows: logging.debug(f"Now adding {len(rows)} rows to database. {rows_skipped} rows were skipped.") - self._write_to_database(pd.DataFrame(rows, columns=column_names + ["status", "creation_date"])) + self._write_to_database(rows, column_names + ["status", "creation_date"]) logging.info(f"{len(rows)} rows successfully added to database. {rows_skipped} rows were skipped.") else: logging.info(f"No rows to add. All the {len(combinations)} experiments already exist.") @@ -200,7 +215,7 @@ def _execute_queries(self, connection, cursor) -> Tuple[int, List, List]: self.execute(cursor, f"SELECT id FROM {self.table_name} WHERE status = 'created' ORDER BY {order_by} LIMIT 1;") experiment_id = self.fetchall(cursor)[0][0] self.execute( - cursor, f"UPDATE {self.table_name} SET status = '{ExperimentStatus.RUNNING.value}', start_date = '{time}' WHERE id = {experiment_id};") + cursor, f"UPDATE {self.table_name} SET status = {self._prepared_statement_placeholder}, start_date = {self._prepared_statement_placeholder} WHERE id = {self._prepared_statement_placeholder};", (ExperimentStatus.RUNNING.value, time, experiment_id)) keyfields = ','.join(utils.get_keyfield_names(self.config)) self.execute(cursor, f"SELECT {keyfields} FROM {self.table_name} WHERE id = {experiment_id};") values = self.fetchall(cursor) @@ -212,22 +227,25 @@ def _execute_queries(self, connection, cursor) -> Tuple[int, List, List]: def _pull_open_experiment(self) -> Tuple[int, List, List]: pass - def _write_to_database(self, df) -> None: - keys = ", ".join(df.columns) - values = df.apply(lambda row: "('" + self.__class__._write_to_database_separator.join([str(value) for value in row]) + "')", axis=1) - - stmt = f"INSERT INTO {self.table_name} ({keys}) VALUES {', '.join(values)}" + def _write_to_database(self, values: List, columns=List[str]) -> None: + values_prepared = ','.join([f"({', '.join([self._prepared_statement_placeholder] * len(columns))})"] * len(values)) + values = list(map(lambda x: str(x) if x is not None else x, itertools.chain(*values))) + stmt = f"INSERT INTO {self.table_name} ({','.join(columns)}) VALUES {values_prepared}" connection = self.connect() cursor = self.cursor(connection) - self.execute(cursor, stmt) + self.execute(cursor, stmt, values) self.commit(connection) self.close_connection(connection) + def prepare_write_query(self, table_name: str, keys) -> str: + return f"INSERT INTO {table_name} ({', '.join(keys)}) VALUES ({','.join([self._prepared_statement_placeholder] * len(keys))})" + def update_database(self, table_name: str, values: Dict[str, Union[str, int, object]], condition: str): connection = self.connect() cursor = self.cursor(connection) - cursor.execute(self._prepare_update_query(table_name, values.keys(), condition), list(values.values())) + self.execute(cursor, self._prepare_update_query(table_name, values.keys(), condition), + list(values.values())) self.commit(connection) self.close_connection(connection) @@ -235,26 +253,6 @@ def _prepare_update_query(self, table_name: str, values: Dict[str, Union[str, in return (f"UPDATE {table_name} SET {', '.join(f'{key} = {self._prepared_statement_placeholder}' for key in values)}" f" WHERE {condition}") - def not_executed_yet(self, where) -> bool: - not_executed = False - - try: - connection = self.connect() - cursor = self.cursor(connection) - - stmt = "SELECT status FROM %s WHERE %s" % (self.table_name, where) - - self.execute(cursor, stmt) - for result in cursor: - if result[0] == 'created': - not_executed = True - - except Exception as err: - logging.error(err) - else: - connection.close() - return not_executed - def reset_experiments(self, *states: str) -> None: def get_dict_for_keyfields_and_rows(keyfields: List[str], rows: List[List[str]]) -> List[dict]: return [{key: value for key, value in zip(keyfields, row)} for row in rows] @@ -311,7 +309,7 @@ def execute_queries(self, queries: List[str]): connection = self.connect() cursor = self.cursor(connection) for query in queries: - self.execute(cursor, query) + self.execute(cursor, query[0], tuple(query[1])) self.commit(connection) self.close_connection(connection) @@ -320,12 +318,18 @@ def delete_table(self) -> None: cursor = self.cursor(connection) for logtable_name in utils.extract_logtables(self.config, self.table_name).keys(): self.execute(cursor, f'DROP TABLE IF EXISTS {logtable_name}') + if self.use_codecarbon: + self.execute(cursor, f'DROP TABLE IF EXISTS {self.table_name}_codecarbon') + self.execute(cursor, f'DROP TABLE IF EXISTS {self.table_name}') self.commit(connection) def get_logtable(self, logtable_name: str) -> pd.DataFrame: return self.get_table(f'{self.table_name}__{logtable_name}') + def get_codecarbon_table(self) -> pd.DataFrame: + return self.get_table(f'{self.table_name}_codecarbon') + def get_table(self, table_name: Optional[str] = None) -> pd.DataFrame: connection = self.connect() query = f"SELECT * FROM {self.table_name}" if table_name is None else f"SELECT * FROM {table_name}" diff --git a/py_experimenter/database_connector_lite.py b/py_experimenter/database_connector_lite.py index 71879569..dc23259c 100644 --- a/py_experimenter/database_connector_lite.py +++ b/py_experimenter/database_connector_lite.py @@ -69,12 +69,12 @@ def _table_has_correct_structure(self, cursor, typed_fields) -> List[str]: config_columns = [k[0] for k in typed_fields] return set(columns) == set(config_columns) - def _get_existing_rows(self, column_names): + def _get_existing_rows(self, column_names: List[str]): def _remove_string_markers(row): return row.replace("'", "") connection = self.connect() cursor = self.cursor(connection) - self.execute(cursor, f"SELECT {', '.join(column_names)} FROM {self.table_name}") + self.execute(cursor, f"SELECT {','.join(column_names)} FROM {self.table_name}") existing_rows = list(map(np.array2string, np.array(self.fetchall(cursor)))) existing_rows = [' '.join(_remove_string_markers(row).split()) for row in existing_rows] self.close_connection(connection) diff --git a/py_experimenter/database_connector_mysql.py b/py_experimenter/database_connector_mysql.py index 100afab1..ec032c26 100644 --- a/py_experimenter/database_connector_mysql.py +++ b/py_experimenter/database_connector_mysql.py @@ -6,21 +6,20 @@ from mysql.connector import Error, connect from py_experimenter.database_connector import DatabaseConnector -from py_experimenter.exceptions import CreatingTableError, DatabaseConnectionError, DatabaseCreationError +from py_experimenter.exceptions import DatabaseConnectionError, DatabaseCreationError from py_experimenter.utils import load_config class DatabaseConnectorMYSQL(DatabaseConnector): - _write_to_database_separator = "', '" _prepared_statement_placeholder = '%s' - def __init__(self, experiment_configuration_file_path: ConfigParser, database_credential_file_path): + def __init__(self, experiment_configuration: ConfigParser, use_codecarbon:bool, codecarbon_config:ConfigParser, database_credential_file_path:str): database_credentials = load_config(database_credential_file_path) self.host = database_credentials.get('CREDENTIALS', 'host') self.user = database_credentials.get('CREDENTIALS', 'user') self.password = database_credentials.get('CREDENTIALS', 'password') - super().__init__(experiment_configuration_file_path) + super().__init__(experiment_configuration, use_codecarbon, codecarbon_config) self._create_database_if_not_existing() @@ -65,8 +64,9 @@ def connect(self, credentials=None): def _start_transaction(self, connection, readonly=False): connection.start_transaction(readonly=readonly) - def _table_exists(self, cursor): - self.execute(cursor, f"SHOW TABLES LIKE '{self.table_name}'") + def _table_exists(self, cursor, table_name:str = None) -> bool: + table_name = table_name if table_name is not None else self.table_name + self.execute(cursor, f"SHOW TABLES LIKE '{table_name}'") return self.fetchall(cursor) @staticmethod @@ -75,11 +75,12 @@ def get_autoincrement(): def _table_has_correct_structure(self, cursor, typed_fields): self.execute(cursor, - f"SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '{self.table_name}' AND TABLE_SCHEMA = '{self.database_name}'") + f"SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = {self._prepared_statement_placeholder} AND TABLE_SCHEMA = {self._prepared_statement_placeholder}", + (self.table_name, self.database_name)) columns = self._exclude_fixed_columns([k[0] for k in self.fetchall(cursor)]) config_columns = [k[0] for k in typed_fields] - return set(columns) == set(config_columns) + return set(columns) == set(config_columns) def _pull_open_experiment(self) -> Tuple[int, List, List]: try: @@ -93,16 +94,6 @@ def _pull_open_experiment(self) -> Tuple[int, List, List]: self.close_connection(connection) return experiment_id, description, values - - @staticmethod - def escape_sql_chars(*args): - escaped_args = [] - for arg in args: - if isinstance(arg, str): - escaped_args.append(arg.replace("'", "''").replace('"', '""').replace('`', '``')) - else: - escaped_args.append(arg) - return escaped_args def _get_existing_rows(self, column_names): def _remove_double_whitespaces(existing_rows): @@ -113,7 +104,7 @@ def _remove_string_markers(existing_rows): connection = self.connect() cursor = self.cursor(connection) - self.execute(cursor, f"SELECT {', '.join(column_names)} FROM {self.table_name}") + self.execute(cursor, f"SELECT {','.join(column_names)} FROM {self.table_name}") existing_rows = list(map(np.array2string, np.array(self.fetchall(cursor)))) existing_rows = _remove_string_markers(existing_rows) existing_rows = _remove_double_whitespaces(existing_rows) diff --git a/py_experimenter/experimenter.py b/py_experimenter/experimenter.py index d0cbe537..620a1a3e 100644 --- a/py_experimenter/experimenter.py +++ b/py_experimenter/experimenter.py @@ -1,11 +1,12 @@ -import configparser import logging import os import socket import traceback +from configparser import ConfigParser from typing import Callable, Dict, List, Tuple import pandas as pd +from codecarbon import EmissionsTracker, OfflineEmissionsTracker from joblib import Parallel, delayed from py_experimenter import utils @@ -26,6 +27,7 @@ def __init__(self, database_credential_file_path: str = os.path.join('config', 'database_credentials.cfg'), table_name: str = None, database_name: str = None, + use_codecarbon: bool = True, name='PyExperimenter'): """ Initializes the PyExperimenter with the given information. @@ -44,6 +46,8 @@ def __init__(self, `experiment_configuration_file_path`. If None, the database name is taken from the experiment configuration file. Defaults to None. :type database_name: str, optional + :param use_codecarbon: If True, the carbon emissions are tracked and stored in the database. Defaults to True. + :type use_codecarbon: bool, optional :param name: The name of the PyExperimenter, which will be logged in the according column in the database table. Defaults to 'PyExperimenter'. :type name: str, optional @@ -51,6 +55,16 @@ def __init__(self, :raises ValueError: If an unsupported or unknown database connection provider is given. """ self.config = utils.load_config(experiment_configuration_file_path) + + self.use_codecarbon = use_codecarbon + self.config, self.codecarbon_config = utils.extract_codecarbon_config(self.config) + if self.codecarbon_config.has_option('codecarbon', 'offline_mode'): + self.codecarbon_offline_mode = self.codecarbon_config['codecarbon']['offline_mode'] == 'True' + else: + self.codecarbon_offline_mode = False + self.codecarbon_config.set('codecarbon', 'offline_mode', 'False') + utils.write_codecarbon_config(self.codecarbon_config) + self.database_credential_file_path = database_credential_file_path if not PyExperimenter._is_valid_configuration(self.config, database_credential_file_path): raise InvalidConfigError('Invalid configuration') @@ -65,9 +79,9 @@ def __init__(self, self.timestamp_on_result_fields = utils.timestamps_for_result_fields(self.config) if self.config['PY_EXPERIMENTER']['provider'] == 'sqlite': - self.dbconnector = DatabaseConnectorLITE(self.config) + self.dbconnector = DatabaseConnectorLITE(self.config, self.use_codecarbon, self.codecarbon_config) elif self.config['PY_EXPERIMENTER']['provider'] == 'mysql': - self.dbconnector = DatabaseConnectorMYSQL(self.config, database_credential_file_path) + self.dbconnector = DatabaseConnectorMYSQL(self.config, self.use_codecarbon, self.codecarbon_config, database_credential_file_path) else: raise ValueError('The provider indicated in the config file is not supported') @@ -138,41 +152,41 @@ def has_option(self, section_name: str, key: str) -> bool: return self.config.has_option(section_name, key) @ staticmethod - def _is_valid_configuration(_config: configparser, database_credential_file_path: str = None) -> bool: + def _is_valid_configuration(config: ConfigParser, database_credential_file_path: str = None) -> bool: """ Checks whether the given experiment configuration is valid, i.e., it contains all necessary fields, the database provider is either mysql or sqlite, and in case of a mysql database provider, that the database credentials are available. - :param _config: The experiment configuration. - :type _config: configparser + :param config: The experiment configuration. + :type config: ConfigParser :param database_credential_file_path: The path to the database configuration file, i.e., the file defining the host, user and password. Defaults to None. :type database_credential_file_path: str, optional :return: True if the experiment configuration contains all necessary fields. :rtype: bool """ - if not _config.has_section('PY_EXPERIMENTER'): + if not config.has_section('PY_EXPERIMENTER'): return False - if set(_config.keys()) > {'PY_EXPERIMENTER', 'CUSTOM', 'DEFAULT'}: + if set(config.keys()) > {'PY_EXPERIMENTER', 'CUSTOM', 'DEFAULT'}: return False - if not {'provider', 'database', 'table'}.issubset(set(_config.options('PY_EXPERIMENTER'))): + if not {'provider', 'database', 'table'}.issubset(set(config.options('PY_EXPERIMENTER'))): logging.error('Error in config file: DATABASE section must contain provider, database, and table') return False - if _config['PY_EXPERIMENTER']['provider'] not in ['sqlite', 'mysql']: + if config['PY_EXPERIMENTER']['provider'] not in ['sqlite', 'mysql']: logging.error('Error in config file: DATABASE provider must be either sqlite or mysql') return False - if _config['PY_EXPERIMENTER']['provider'] == 'mysql': + if config['PY_EXPERIMENTER']['provider'] == 'mysql': credentials = utils.load_config(database_credential_file_path) if not {'host', 'user', 'password'}.issubset(set(credentials.options('CREDENTIALS'))): logging.error( - f'Error in config file: DATABASE section must contain host, user, and password since provider is {_config["DATABASE"]["provider"]}') + f'Error in config file: DATABASE section must contain host, user, and password since provider is {config["DATABASE"]["provider"]}') return False - if not {'keyfields', 'resultfields'}.issubset(set(_config.options('PY_EXPERIMENTER'))): + if not {'keyfields', 'resultfields'}.issubset(set(config.options('PY_EXPERIMENTER'))): return False return True @@ -302,7 +316,8 @@ def execute(self, experiment_function: Callable[[Dict, Dict, ResultProcessor], N if max_experiments == -1: parallel(delayed(self._worker)(experiment_function) for _ in range(n_jobs)) else: - parallel(delayed(self._execution_wrapper)(experiment_function) for _ in range(max_experiments)) + parallel(delayed(self._execution_wrapper)(experiment_function) + for _ in range(max_experiments)) logging.info("All configured executions finished.") def _worker(self, experiment_function: Callable[[Dict, Dict, ResultProcessor], None]) -> None: @@ -318,19 +333,6 @@ def _worker(self, experiment_function: Callable[[Dict, Dict, ResultProcessor], N except NoExperimentsLeftException: break - def _execution_worker(self, experiment_function: Callable[[Dict, Dict, ResultProcessor], None]) -> None: - """ - Worker that repeatedly pulls open experiments from the database table and executes them. - - :param experiment_function: The function that should be executed with the different parametrizations. - :type experiment_function: Callable[[Dict, Dict, ResultProcessor], None] - """ - while True: - try: - self._execution_wrapper(experiment_function) - except NoExperimentsLeftException: - break - def _execution_wrapper(self, experiment_function: Callable[[dict, dict, ResultProcessor], None]) -> None: """ @@ -343,9 +345,9 @@ def _execution_wrapper(self, * `error` if an exception was raised during the execution of the experiment. * `done` if the execution of the experiment has finished successfully. - Errors raised during the execution of `experiment_function` are logged to the `error` column in the database table. - Note that only errors raised within `experiment_function` are logged in to the database table. Therefore all errors - raised before or after the execution of `experiment_function` are logged according to the local logging configuration + Errors raised during the execution of `experiment_function` are logged to the `error` column in the database table. + Note that only errors raised within `experiment_function` are logged in to the database table. Therefore all errors + raised before or after the execution of `experiment_function` are logged according to the local logging configuration and do not appear in the table. :param experiment_function: The function that should be executed with the different parametrizations. @@ -359,13 +361,24 @@ def _execution_wrapper(self, custom_fields = dict(self.config.items('CUSTOM')) if self.has_section('CUSTOM') else None table_name = self.get_config_value('PY_EXPERIMENTER', 'table') - result_processor = ResultProcessor(self.config, self.database_credential_file_path, table_name=table_name, + result_processor = ResultProcessor(self.config, self.use_codecarbon, self.codecarbon_config, self.database_credential_file_path, table_name=table_name, result_fields=result_field_names, experiment_id=experiment_id) result_processor._set_name(self.name) result_processor._set_machine(socket.gethostname()) + if self.use_codecarbon: + if self.codecarbon_offline_mode: + if not self.codecarbon_config.has_option('codecarbon', 'country_iso_code'): + raise InvalidConfigError(('CodeCarbon offline mode requires a `country_iso_code` in the config file.' + 'For more information see `https://mlco2.github.io/codecarbon/index.html`.')) + tracker = OfflineEmissionsTracker() + else: + tracker = EmissionsTracker() + try: logging.debug(f"Start of experiment_function on process {socket.gethostname()}") + if self.use_codecarbon: + tracker.start() experiment_function(keyfield_values, result_processor, custom_fields) except Exception: error_msg = traceback.format_exc() @@ -374,6 +387,11 @@ def _execution_wrapper(self, result_processor._change_status(ExperimentStatus.ERROR.value) else: result_processor._change_status(ExperimentStatus.DONE.value) + finally: + if self.use_codecarbon: + tracker.stop() + emission_data = tracker._prepare_emissions_data().values + result_processor._write_emissions(emission_data, self.codecarbon_offline_mode) def reset_experiments(self, *states: Tuple['str']) -> None: """ @@ -404,7 +422,7 @@ def get_table(self) -> pd.DataFrame: """ return self.dbconnector.get_table() - def get_logtable(self, table_name: str) -> pd.DataFrame: + def get_logtable(self, logtable_name: str) -> pd.DataFrame: """ Returns the log table as `Pandas.DataFrame`. @@ -413,4 +431,17 @@ def get_logtable(self, table_name: str) -> pd.DataFrame: :return: The log table as `Pandas.DataFrame`. :rtype: pd.DataFrame """ - return self.dbconnector.get_logtable(table_name) + return self.dbconnector.get_logtable(logtable_name) + + def get_codecarbon_table(self) -> pd.DataFrame: + """ + Returns the CodeCarbon table as `Pandas.DataFrame`. If CodeCarbon is not used in this experiment, an error is raised. + + :raises ValueError: If CodeCarbon is not used in this experiment. + :return: Returns the CodeCarbon table as `Pandas.DataFrame`. + :rtype: pd.DataFrame + """ + if self.use_codecarbon: + return self.dbconnector.get_codecarbon_table() + else: + raise ValueError('CodeCarbon is not used in this experiment.') diff --git a/py_experimenter/result_processor.py b/py_experimenter/result_processor.py index 35d9fb6d..dc8a0b17 100644 --- a/py_experimenter/result_processor.py +++ b/py_experimenter/result_processor.py @@ -1,7 +1,10 @@ import logging +from configparser import ConfigParser from copy import deepcopy from typing import Dict, List, Tuple +from codecarbon.output import EmissionsData + import py_experimenter.utils as utils from py_experimenter.database_connector import DatabaseConnector from py_experimenter.database_connector_lite import DatabaseConnectorLITE @@ -24,19 +27,21 @@ class ResultProcessor: database. """ - def __init__(self, _config: dict, credential_path, table_name: str, result_fields: List[str], experiment_id: int): + def __init__(self, config: ConfigParser, use_codecarbon: bool, codecarbon_config: ConfigParser, credential_path, table_name: str, result_fields: List[str], experiment_id: int): self._table_name = table_name self._result_fields = result_fields - self._config = _config + self._config = config self._timestamp_on_result_fields = utils.timestamps_for_result_fields(self._config) - self._experiment_id = experiment_id self._experiment_id_condition = f'ID = {self._experiment_id}' - if _config['PY_EXPERIMENTER']['provider'] == 'sqlite': - self._dbconnector: DatabaseConnector = DatabaseConnectorLITE(_config) - elif _config['PY_EXPERIMENTER']['provider'] == 'mysql': - self._dbconnector: DatabaseConnector = DatabaseConnectorMYSQL(_config, credential_path) + self.use_codecarbon = use_codecarbon + self._codecarbon_config = codecarbon_config + + if config['PY_EXPERIMENTER']['provider'] == 'sqlite': + self._dbconnector: DatabaseConnector = DatabaseConnectorLITE(config, self.use_codecarbon, self._codecarbon_config) + elif config['PY_EXPERIMENTER']['provider'] == 'mysql': + self._dbconnector: DatabaseConnector = DatabaseConnectorMYSQL(config, self.use_codecarbon, self._codecarbon_config, credential_path) else: raise InvalidConfigError("Invalid database provider!") @@ -46,7 +51,6 @@ def process_results(self, results: dict) -> None: want to write results to the database. :param results: Dictionary with result field name and result value pairs. """ - time = utils.get_timestamp_representation() if not self._valid_result_fields(list(results.keys())): invalid_result_keys = set(list(results.keys())) - set(self._result_fields) raise InvalidResultFieldError(f"Invalid result keys: {invalid_result_keys}") @@ -56,6 +60,16 @@ def process_results(self, results: dict) -> None: self._dbconnector.update_database(self._table_name, values=results, condition=self._experiment_id_condition) + def _write_emissions(self, emission_data: EmissionsData, offline_mode: bool) -> None: + emission_data['offline_mode'] = offline_mode + emission_data['experiment_id'] = self._experiment_id + + keys = utils.extract_codecarbon_columns(with_type = False) + values = emission_data.values() + values = [value if not value == '' else None for value in values] + statement = self._dbconnector.prepare_write_query(f'{self._table_name}_codecarbon', keys) + self._dbconnector.execute_queries([(statement, values)]) + @staticmethod def _add_timestamps_to_results(results: dict) -> List[Tuple[str, object]]: time = utils.get_timestamp_representation() @@ -71,9 +85,9 @@ def process_logs(self, logs: Dict[str, Dict[str, str]]) -> None: for logtable_identifier, log_entries in logs.items(): logtable_name = f'{self._table_name}__{logtable_identifier}' log_entries['experiment_id'] = str(self._experiment_id) - log_entries['timestamp'] = f"'{time}'" - queries.append( - f"INSERT INTO {logtable_name} ({', '.join(log_entries.keys())}) VALUES ({', '.join(map(lambda x: str(x), log_entries.values()))})") + log_entries['timestamp'] = f"{time}" + stmt = self._dbconnector.prepare_write_query(logtable_name, log_entries.keys()) + queries.append((stmt, log_entries.values())) self._dbconnector.execute_queries(queries) def _change_status(self, status: str): diff --git a/py_experimenter/utils.py b/py_experimenter/utils.py index def158d1..25fd1683 100644 --- a/py_experimenter/utils.py +++ b/py_experimenter/utils.py @@ -1,13 +1,14 @@ import logging from configparser import ConfigParser from datetime import datetime -from typing import Dict, List, Optional, Tuple +from typing import Dict, Iterable, List, Optional, Tuple import numpy as np from py_experimenter.exceptions import ConfigError, NoConfigFileError, ParameterCombinationError +# check if path to codecarbon file exists def load_config(path): """ Load and return configuration file. @@ -24,6 +25,58 @@ def load_config(path): return config +def extract_codecarbon_config(config: ConfigParser) -> Tuple[ConfigParser]: + codecarbon_config = ConfigParser() + if config.has_section("codecarbon"): + codecarbon_config.read_dict({"codecarbon": dict(config["codecarbon"])}) + config.remove_section("codecarbon") + else: + codecarbon_config.read_dict( + { + "codecarbon": { + "measure_power_secs": "15", + "tracking_mode": "machine", + "log_level": "error", + "save_to_file": "True", + "output_dir": "output/CodeCarbon" + } + } + ) + + return config, codecarbon_config + + +def write_codecarbon_config(codecarbon_config: ConfigParser): + with open('.codecarbon.config', 'w') as f: + codecarbon_config.write(f) + + +def extract_codecarbon_columns(with_type:bool = True): + if with_type: + return [ + ('codecarbon_timestamp', 'DATETIME '), ('project_name', 'VARCHAR(255)'), ('run_id', 'VARCHAR(255)'), + ('duration_seconds', 'DOUBLE'), ('emissions_kg', 'DOUBLE'), ('emissions_rate_kg_sec', 'DOUBLE'), + ('cpu_power_watt', 'DOUBLE'), ('gpu_power_watt', 'DOUBLE'), ('ram_power_watt', 'DOUBLE'), + ('cpu_energy_kw', 'DOUBLE'), ('gpu_energy_kw', 'DOUBLE'), ('ram_energy_kw', 'DOUBLE'), + ('energy_consumed_kw', 'DOUBLE'), ('country_name', 'VARCHAR(255)'), ('country_iso_code', 'VARCHAR(255)'), + ('region', 'VARCHAR(255)'), ('cloud_provider', 'VARCHAR(255)'), ('cloud_region', 'VARCHAR(255)'), + ('os', 'VARCHAR(255)'), ('python_version', 'VARCHAR(255)'), ('codecarbon_version', 'VARCHAR(255)'), + ('cpu_count', 'DOUBLE'), ('cpu_model', 'VARCHAR(255)'), ('gpu_count', 'DOUBLE'), + ('gpu_model', 'VARCHAR(255)'), ('longitude', 'VARCHAR(255)'), ('latitude', 'VARCHAR(255)'), + ('ram_total_size', 'DOUBLE'), ('tracking_mode', 'VARCHAR(255)'), ('on_cloud', 'VARCHAR(255)'), + ('offline_mode', 'BOOL') + ] + else: + return [ + 'codecarbon_timestamp', 'project_name', 'run_id', 'duration_seconds', 'emissions_kg', + 'emissions_rate_kg_sec', 'cpu_power_watt', 'gpu_power_watt', 'ram_power_watt', 'cpu_energy_kw', + 'gpu_energy_kw', 'ram_energy_kw', 'energy_consumed_kw', 'country_name', 'country_iso_code', 'region', + 'cloud_provider', 'cloud_region', 'os', 'python_version', 'codecarbon_version', 'cpu_count', 'cpu_model', + 'gpu_count', 'gpu_model', 'longitude', 'latitude', 'ram_total_size', 'tracking_mode', 'on_cloud', + 'offline_mode', 'experiment_id' + ] + + def get_keyfield_data(config): keyfields = get_keyfields(config) diff --git a/pyproject.toml b/pyproject.toml index f579280e..81a0216f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,6 +34,7 @@ pandas = ">=1.0" mysql-connector-python = ">=8.0" jupyterlab = "^3.5.0" joblib = "^1.2.0" +codecarbon = "^2.2.1" [tool.poetry.group.dev.dependencies] pytest = ">=7.0" diff --git a/test/test_codecarbon/test_codecarbon_core_functions_mysql.py b/test/test_codecarbon/test_codecarbon_core_functions_mysql.py new file mode 100644 index 00000000..895ff739 --- /dev/null +++ b/test/test_codecarbon/test_codecarbon_core_functions_mysql.py @@ -0,0 +1,71 @@ +import os +from unittest.mock import patch + +import pandas +import pytest + +from py_experimenter.database_connector import DatabaseConnector +from py_experimenter.experimenter import PyExperimenter + + +@pytest.fixture(scope='module') +def experimenter_mysql(): + # Create config directory if it does not exist + if not os.path.exists('config'): + os.mkdir('config') + + # Create config file + content = """ + [PY_EXPERIMENTER] + provider = mysql + database = py_experimenter + table = example_logtables + + keyfields = dataset, cross_validation_splits:int, seed:int + dataset = iris + cross_validation_splits = 5 + seed = 1,2,3,4,5 + + resultfields = best_kernel_f1:VARCHAR(50), best_kernel_accuracy:VARCHAR(50) + resultfields.timestamps = false + + logtables = train_scores:log_train_scores, test_f1:DOUBLE, test_accuracy:DOUBLE + log_train_scores = f1:DOUBLE, accuracy:DOUBLE, kernel:VARCHAR(50) + + [CUSTOM] + path = sample_data + """ + experiment_configuration = os.path.join('config', 'example_logtables.cfg') + with open(experiment_configuration, "w") as f: + f.write(content) + + experimenter = PyExperimenter(experiment_configuration_file_path=experiment_configuration, name='example_notebook') + yield experimenter + + experimenter.delete_table() + + +def test_delete_table_mysql(experimenter_mysql): + with patch.object(DatabaseConnector, 'connect', return_value=None), \ + patch.object(DatabaseConnector, 'cursor', return_value=None), \ + patch.object(DatabaseConnector, 'commit', return_value=None): + + with patch.object(DatabaseConnector, 'execute', return_value=None) as mock_execute: + experimenter_mysql.delete_table() + + assert mock_execute.call_count == 5 + assert mock_execute.call_args_list[0][0][1] == 'DROP TABLE IF EXISTS example_logtables__train_scores' + assert mock_execute.call_args_list[1][0][1] == 'DROP TABLE IF EXISTS example_logtables__test_f1' + assert mock_execute.call_args_list[2][0][1] == 'DROP TABLE IF EXISTS example_logtables__test_accuracy' + assert mock_execute.call_args_list[3][0][1] == 'DROP TABLE IF EXISTS example_logtables_codecarbon' + assert mock_execute.call_args_list[4][0][1] == 'DROP TABLE IF EXISTS example_logtables' + + +def test_get_table_mysql(experimenter_mysql): + with patch.object(DatabaseConnector, 'connect', return_value=None), \ + patch.object(pandas, 'read_sql', return_value=pandas.DataFrame()), \ + patch.object(DatabaseConnector, 'close_connection', return_value=None) as mock_close: + + df = experimenter_mysql.get_codecarbon_table() + + assert df.empty is True diff --git a/test/test_codecarbon/test_codecarbon_core_functions_sqlite.py b/test/test_codecarbon/test_codecarbon_core_functions_sqlite.py new file mode 100644 index 00000000..3da5af55 --- /dev/null +++ b/test/test_codecarbon/test_codecarbon_core_functions_sqlite.py @@ -0,0 +1,71 @@ +import os +from unittest.mock import patch + +import pandas +import pytest + +from py_experimenter.database_connector import DatabaseConnector +from py_experimenter.experimenter import PyExperimenter + + +@pytest.fixture(scope='module') +def experimenter_sqlite(): + # Create config directory if it does not exist + if not os.path.exists('config'): + os.mkdir('config') + + # Create config file + content = """ + [PY_EXPERIMENTER] + provider = sqlite + database = py_experimenter + table = example_logtables + + keyfields = dataset, cross_validation_splits:int, seed:int + dataset = iris + cross_validation_splits = 5 + seed = 1,2,3,4,5 + + resultfields = best_kernel_f1:VARCHAR(50), best_kernel_accuracy:VARCHAR(50) + resultfields.timestamps = false + + logtables = train_scores:log_train_scores, test_f1:DOUBLE, test_accuracy:DOUBLE + log_train_scores = f1:DOUBLE, accuracy:DOUBLE, kernel:VARCHAR(50) + + [CUSTOM] + path = sample_data + """ + experiment_configuration = os.path.join('config', 'example_logtables.cfg') + with open(experiment_configuration, "w") as f: + f.write(content) + + experimenter = PyExperimenter(experiment_configuration_file_path=experiment_configuration, name='example_notebook') + yield experimenter + + experimenter.delete_table() + + +def test_delete_table_sqlite(experimenter_sqlite): + with patch.object(DatabaseConnector, 'connect', return_value=None), \ + patch.object(DatabaseConnector, 'cursor', return_value=None), \ + patch.object(DatabaseConnector, 'commit', return_value=None): + + with patch.object(DatabaseConnector, 'execute', return_value=None) as mock_execute: + experimenter_sqlite.delete_table() + + assert mock_execute.call_count == 5 + assert mock_execute.call_args_list[0][0][1] == 'DROP TABLE IF EXISTS example_logtables__train_scores' + assert mock_execute.call_args_list[1][0][1] == 'DROP TABLE IF EXISTS example_logtables__test_f1' + assert mock_execute.call_args_list[2][0][1] == 'DROP TABLE IF EXISTS example_logtables__test_accuracy' + assert mock_execute.call_args_list[3][0][1] == 'DROP TABLE IF EXISTS example_logtables_codecarbon' + assert mock_execute.call_args_list[4][0][1] == 'DROP TABLE IF EXISTS example_logtables' + + +def test_get_table_sqlite(experimenter_sqlite): + with patch.object(DatabaseConnector, 'connect', return_value=None), \ + patch.object(pandas, 'read_sql', return_value=pandas.DataFrame()), \ + patch.object(DatabaseConnector, 'close_connection', return_value=None) as mock_close: + + df = experimenter_sqlite.get_codecarbon_table() + + assert df.empty is True diff --git a/test/test_codecarbon/test_integration_mysql.py b/test/test_codecarbon/test_integration_mysql.py new file mode 100644 index 00000000..6b07fc80 --- /dev/null +++ b/test/test_codecarbon/test_integration_mysql.py @@ -0,0 +1,63 @@ +import random +import tempfile + +import numpy as np +import pytest + +from py_experimenter.experimenter import PyExperimenter +from py_experimenter.result_processor import ResultProcessor + + +@pytest.fixture +def experimenter(): + content = """ + [PY_EXPERIMENTER] + provider = mysql + database = py_experimenter + table = integration_test_mysql + + keyfields = dataset, cross_validation_splits:int, seed:int, kernel + dataset = iris + cross_validation_splits = 5 + seed = 2:6:2 + kernel = linear, poly, rbf, sigmoid + + resultfields = pipeline:LONGTEXT, train_f1:DECIMAL, train_accuracy:DECIMAL, test_f1:DECIMAL, test_accuracy:DECIMAL + resultfields.timestamps = false + + [CUSTOM] + path = sample_data + """ + + # Create temporary experiment configuration file + with tempfile.NamedTemporaryFile(mode='w', delete=False) as f: + f.write(content) + experiment_configuration = f.name + + return PyExperimenter(experiment_configuration) + + +def run_ml(parameters: dict, result_processor: ResultProcessor, custom_config: dict): + seed = parameters['seed'] + random.seed(seed) + np.random.seed(seed) + + if parameters['dataset'] != 'iris': + raise ValueError("Example error") + + + +def test_integration(experimenter: PyExperimenter): + experimenter.delete_table() + experimenter.fill_table_from_config() + experimenter.execute(run_ml, -1) + table = experimenter.get_codecarbon_table() + assert list(table.columns) == [ + 'ID', 'experiment_id', 'codecarbon_timestamp', 'project_name', 'run_id', + 'duration_seconds', 'emissions_kg', 'emissions_rate_kg_sec', 'cpu_power_watt', 'gpu_power_watt', 'ram_power_watt', + 'cpu_energy_kw', 'gpu_energy_kw', 'ram_energy_kw', 'energy_consumed_kw', 'country_name', + 'country_iso_code', 'region', 'cloud_provider', 'cloud_region', 'os', 'python_version', + 'codecarbon_version', 'cpu_count', 'cpu_model', 'gpu_count', 'gpu_model', + 'longitude', 'latitude', 'ram_total_size', 'tracking_mode', 'on_cloud', 'offline_mode'] + assert table.shape == (12, 33) + assert list(table['experiment_id']) == [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] diff --git a/test/test_codecarbon/test_integration_sqlite.py b/test/test_codecarbon/test_integration_sqlite.py new file mode 100644 index 00000000..2d06f9d5 --- /dev/null +++ b/test/test_codecarbon/test_integration_sqlite.py @@ -0,0 +1,66 @@ +import random +import tempfile + +import numpy as np +import pytest + +from py_experimenter.experimenter import PyExperimenter +from py_experimenter.result_processor import ResultProcessor + + +@pytest.fixture +def experimenter(): + content = """ + [PY_EXPERIMENTER] + provider = sqlite + database = py_experimenter + table = integration_test_mysql + + keyfields = dataset, cross_validation_splits:int, seed:int, kernel + dataset = iris + cross_validation_splits = 5 + seed = 2:6:2 + kernel = linear, poly, rbf, sigmoid + + resultfields = pipeline:LONGTEXT, train_f1:DECIMAL, train_accuracy:DECIMAL, test_f1:DECIMAL, test_accuracy:DECIMAL + resultfields.timestamps = false + + [CUSTOM] + path = sample_data + """ + + # Create temporary experiment configuration file + with tempfile.NamedTemporaryFile(mode='w', delete=False) as f: + f.write(content) + experiment_configuration = f.name + + return PyExperimenter(experiment_configuration) + + +def run_ml(parameters: dict, result_processor: ResultProcessor, custom_config: dict): + seed = parameters['seed'] + random.seed(seed) + np.random.seed(seed) + + if parameters['dataset'] != 'iris': + raise ValueError("Example error") + #without a small sleep the test fails on windows + import time + time.sleep(1) + + +def test_integration(experimenter: PyExperimenter): + experimenter.delete_table() + experimenter.fill_table_from_config() + experimenter.execute(run_ml, -1) + table = experimenter.get_codecarbon_table() + assert list(table.columns) == [ + 'ID', 'experiment_id', 'codecarbon_timestamp', 'project_name', 'run_id', + 'duration_seconds', 'emissions_kg', 'emissions_rate_kg_sec', 'cpu_power_watt', 'gpu_power_watt', 'ram_power_watt', + 'cpu_energy_kw', 'gpu_energy_kw', 'ram_energy_kw', 'energy_consumed_kw', 'country_name', + 'country_iso_code', 'region', 'cloud_provider', 'cloud_region', 'os', 'python_version', + 'codecarbon_version', 'cpu_count', 'cpu_model', 'gpu_count', 'gpu_model', + 'longitude', 'latitude', 'ram_total_size', 'tracking_mode', 'on_cloud', 'offline_mode'] + assert table.shape == (12, 33) + assert list(table['experiment_id']) == [1,2,3,4,5,6,7,8,9,10,11,12] + diff --git a/test/test_database_connector.py b/test/test_database_connector.py index 6fc175e5..12e0637c 100644 --- a/test/test_database_connector.py +++ b/test/test_database_connector.py @@ -1,9 +1,9 @@ import datetime -import pandas as pd -import numpy as np import os import mock +import numpy as np +import pandas as pd import pytest from mock import patch @@ -50,8 +50,8 @@ def test_create_table_if_not_exists(create_database_if_not_existing_mock, test_c table_exists_mock.return_value = True table_has_correct_structure_mock.return_value = True experiment_configuration_file_path = load_config(os.path.join('test', 'test_config_files', 'load_config_test_file', 'my_sql_test_file.cfg')) - database_connector = DatabaseConnectorMYSQL(experiment_configuration_file_path, database_credential_file_path=os.path.join( - 'test', 'test_config_files', 'load_config_test_file', 'mysql_fake_credentials.cfg')) + database_connector = DatabaseConnectorMYSQL(experiment_configuration_file_path, None, None, database_credential_file_path=os.path.join( + 'test', 'test_config_files', 'load_config_test_file', 'mysql_fake_credentials.cfg')) #todo add codecarbon config database_connector.create_table_if_not_existing() create_table_string = ('CREATE TABLE test_table (ID INTEGER PRIMARY KEY AUTO_INCREMENT, value int DEFAULT NULL,exponent int DEFAULT NULL,' 'creation_date DATETIME DEFAULT NULL,status VARCHAR(255) DEFAULT NULL,start_date DATETIME DEFAULT NULL,' @@ -74,26 +74,26 @@ def test_create_table_if_not_exists(create_database_if_not_existing_mock, test_c [], ['value', 'exponent', 'status', 'creation_date'], [ - [1, 3, ExperimentStatus.CREATED.value], - [1, 4, ExperimentStatus.CREATED.value], - [2, 3, ExperimentStatus.CREATED.value], - [2, 4, ExperimentStatus.CREATED.value] + [1, 3, str(ExperimentStatus.CREATED.value)], + [1, 4, str(ExperimentStatus.CREATED.value)], + [2, 3, str(ExperimentStatus.CREATED.value)], + [2, 4, str(ExperimentStatus.CREATED.value)] ]), (os.path.join('test', 'test_config_files', 'load_config_test_file', 'my_sql_test_file.cfg'), {}, [{'value': 1, 'exponent': 3}, {'value': 1, 'exponent': 4}], ['value', 'exponent', 'status', 'creation_date'], [ - [1, 3, ExperimentStatus.CREATED.value], - [1, 4, ExperimentStatus.CREATED.value], + [1, 3, str(ExperimentStatus.CREATED.value)], + [1, 4, str(ExperimentStatus.CREATED.value)], ]), (os.path.join('test', 'test_config_files', 'load_config_test_file', 'my_sql_test_file_3_parameters.cfg'), {'value': [1, 2], }, [{'exponent': 3, 'other_value': 5}], ['value', 'exponent', 'other_value', 'status', 'creation_date'], [ - [1, 3, 5, ExperimentStatus.CREATED.value], - [2, 3, 5, ExperimentStatus.CREATED.value], + [1, 3, 5, str(ExperimentStatus.CREATED.value)], + [2, 3, 5, str(ExperimentStatus.CREATED.value)], ] ), (os.path.join('test', 'test_config_files', 'load_config_test_file', 'my_sql_test_file_3_parameters.cfg'), @@ -101,10 +101,10 @@ def test_create_table_if_not_exists(create_database_if_not_existing_mock, test_c [{'other_value': 5}], ['value', 'exponent', 'other_value', 'status', 'creation_date'], [ - [1, 3, 5, ExperimentStatus.CREATED.value], - [1, 4, 5, ExperimentStatus.CREATED.value], - [2, 3, 5, ExperimentStatus.CREATED.value], - [2, 4, 5, ExperimentStatus.CREATED.value], + [1, 3, 5, str(ExperimentStatus.CREATED.value)], + [1, 4, 5, str(ExperimentStatus.CREATED.value)], + [2, 3, 5, str(ExperimentStatus.CREATED.value)], + [2, 4, 5, str(ExperimentStatus.CREATED.value)], ] ), ] @@ -131,17 +131,19 @@ def test_fill_table( experiment_configuration = load_config(experiment_configuration_file_path) database_connector = DatabaseConnectorMYSQL( experiment_configuration, + None, + None, database_credential_file_path=os.path.join('test', 'test_config_files', 'load_config_test_file', 'mysql_fake_credentials.cfg')) database_connector.fill_table(parameters, fixed_parameter_combination) - args_of_first_call = write_to_database_mock.call_args_list[0][0] - - assert type(args_of_first_call[0]) == pd.DataFrame - df = args_of_first_call[0] - assert len(df) == len(write_to_database_values) - assert write_to_database_keys == list(df.columns) - for expected_row, row in zip(write_to_database_values, df.values): - assert expected_row == row[:-1].tolist() - datetime_from_string_argument = datetime.datetime.strptime(row[-1], '%Y-%m-%d %H:%M:%S') + values, columns = write_to_database_mock.call_args_list[0][0] + + assert isinstance(values, list) + assert len(values) == len(write_to_database_values) + assert write_to_database_keys == columns + for expected_entry, entry in zip(write_to_database_values, values): + assert isinstance(entry, list) + assert expected_entry == entry[:-1] + datetime_from_string_argument = datetime.datetime.strptime(entry[-1], '%Y-%m-%d %H:%M:%S') assert datetime_from_string_argument.day == datetime.datetime.now().day assert datetime_from_string_argument.hour == datetime.datetime.now().hour assert datetime_from_string_argument.minute - datetime.datetime.now().minute <= 2 @@ -166,6 +168,8 @@ def test_delete_experiments_with_condition(commit_mock, execute_mock, cursor_moc experiment_configuration_file_path = load_config(os.path.join('test', 'test_config_files', 'load_config_test_file', 'my_sql_test_file.cfg')) database_connector = DatabaseConnectorMYSQL( experiment_configuration_file_path, + None, + None, database_credential_file_path=os.path.join( 'test', 'test_config_files', 'load_config_test_file', 'mysql_fake_credentials.cfg') ) @@ -197,6 +201,8 @@ def test_get_experiments_with_condition(get_structture_from_table_mock, fetchall experiment_configuration_file_path = load_config(os.path.join('test', 'test_config_files', 'load_config_test_file', 'my_sql_test_file.cfg')) database_connector = DatabaseConnectorMYSQL( experiment_configuration_file_path, + None, + None, database_credential_file_path=os.path.join( 'test', 'test_config_files', 'load_config_test_file', 'mysql_fake_credentials.cfg') ) @@ -221,6 +227,8 @@ def test_delete_table(commit_mock, execute_mock, cursor_mock, connect_mock, crea experiment_configuration_file_path = load_config(os.path.join('test', 'test_config_files', 'load_config_test_file', 'my_sql_test_file.cfg')) database_connector = DatabaseConnectorMYSQL( experiment_configuration_file_path, + False, + None, database_credential_file_path=os.path.join( 'test', 'test_config_files', 'load_config_test_file', 'mysql_fake_credentials.cfg') ) diff --git a/test/test_logtables/test_mysql.py b/test/test_logtables/test_mysql.py index 611c9312..c15b23fa 100644 --- a/test/test_logtables/test_mysql.py +++ b/test/test_logtables/test_mysql.py @@ -43,17 +43,19 @@ def test_tables_created(execute_mock, close_connection_mock, fetchall_mock, curs @freeze_time("2012-01-14 03:21:34") @patch('py_experimenter.result_processor.DatabaseConnectorMYSQL') def test_logtable_insertion(database_connector_mock): - fixed_time = '2012-01-14 03:21:34' config = ConfigParser() config.read(os.path.join('test', 'test_logtables', 'mysql_logtables.cfg')) - result_processor = ResultProcessor(config, None, None, None, 0) - result_processor._table_name = 'some_table_name' - result_processor.process_logs({'test_table_0': {'test0': 'test', 'test1': 'test'}, - 'test_table_1': {'test0': 'test'}}) + result_processor = ResultProcessor(config, None, None, None, None, None, 0) + result_processor._table_name = 'table_name' + table_0_logs = {'test0': 'test', 'test1': 'test'} + table_1_logs = {'test0': 'test'} + result_processor.process_logs({'test_table_0': table_0_logs, + 'test_table_1': table_1_logs}) + result_processor._dbconnector.prepare_write_query.assert_any_call( + 'table_name__test_table_1', table_1_logs.keys()) + result_processor._dbconnector.prepare_write_query.assert_any_call( + 'table_name__test_table_0', table_0_logs.keys()) result_processor._dbconnector.execute_queries.assert_called() - result_processor._dbconnector.execute_queries.assert_called_with( - [f'INSERT INTO some_table_name__test_table_0 (test0, test1, experiment_id, timestamp) VALUES (test, test, 0, \'{fixed_time}\')', - f'INSERT INTO some_table_name__test_table_1 (test0, experiment_id, timestamp) VALUES (test, 0, \'{fixed_time}\')']) @patch('py_experimenter.experimenter.DatabaseConnectorMYSQL._create_database_if_not_existing') @@ -67,7 +69,7 @@ def test_logtable_insertion(database_connector_mock): def test_delete_logtable(execution_mock, close_connection_mock, commit_mocck, fetchall_mock, cursor_mock, connect_mock, test_connection_mock, create_database_mock): fetchall_mock.return_value = cursor_mock.return_value = connect_mock.return_value = commit_mocck.return_value = None close_connection_mock.return_value = test_connection_mock.return_value = create_database_mock.return_value = execution_mock.return_value = None - experimenter = PyExperimenter(os.path.join('test', 'test_logtables', 'mysql_logtables.cfg')) + experimenter = PyExperimenter(os.path.join('test', 'test_logtables', 'mysql_logtables.cfg'), use_codecarbon=False) experimenter.delete_table() execution_mock.assert_has_calls([call(None, 'DROP TABLE IF EXISTS test_mysql_logtables__test_mysql_log'), call(None, 'DROP TABLE IF EXISTS test_mysql_logtables__test_mysql_log2'), diff --git a/test/test_logtables/test_sqlite.py b/test/test_logtables/test_sqlite.py index 007cddea..4b0a2d3c 100644 --- a/test/test_logtables/test_sqlite.py +++ b/test/test_logtables/test_sqlite.py @@ -36,20 +36,23 @@ def test_tables_created(execute_mock, close_connection_mock, fetchall_mock, curs assert execute_mock.mock_calls[1][1][1] == ('CREATE TABLE test_sqlite_logtables__test_sqlite_log (ID INTEGER PRIMARY KEY AUTOINCREMENT, experiment_id INTEGER,' ' timestamp DATETIME, test int DEFAULT NULL, FOREIGN KEY (experiment_id) REFERENCES test_sqlite_logtables(ID) ON DELETE CASCADE);') - @freeze_time("2012-01-14 03:21:34") @patch('py_experimenter.result_processor.DatabaseConnectorLITE') def test_logtable_insertion(database_connector_mock): config = ConfigParser() config.read(os.path.join('test', 'test_logtables', 'sqlite_logtables.cfg')) - result_processor = ResultProcessor(config, None, None, None, 0) + result_processor = ResultProcessor(config, None, None, None, None, None, 0) result_processor._table_name = 'table_name' - result_processor.process_logs({'test_table_0': {'test0': 'test', 'test1': 'test'}, - 'test_table_1': {'test0': 'test'}}) + table_0_logs = {'test0': 'test', 'test1': 'test'} + table_1_logs = {'test0': 'test'} + result_processor.process_logs({'test_table_0': table_0_logs, + 'test_table_1': table_1_logs}) + # result_processor._dbconnector.prepare_write_query. + result_processor._dbconnector.prepare_write_query.assert_any_call( + 'table_name__test_table_1', table_1_logs.keys()) + result_processor._dbconnector.prepare_write_query.assert_any_call( + 'table_name__test_table_0', table_0_logs.keys()) result_processor._dbconnector.execute_queries.assert_called() - result_processor._dbconnector.execute_queries.assert_called_with( - ['INSERT INTO table_name__test_table_0 (test0, test1, experiment_id, timestamp) VALUES (test, test, 0, \'2012-01-14 03:21:34\')', - 'INSERT INTO table_name__test_table_1 (test0, experiment_id, timestamp) VALUES (test, 0, \'2012-01-14 03:21:34\')']) @patch('py_experimenter.experimenter.DatabaseConnectorLITE._test_connection') @@ -62,7 +65,7 @@ def test_logtable_insertion(database_connector_mock): def test_delete_logtable(execution_mock, close_connection_mock, commit_mocck, fetchall_mock, cursor_mock, connect_mock, test_connection_mock): fetchall_mock.return_value = cursor_mock.return_value = connect_mock.return_value = commit_mocck.return_value = None close_connection_mock.return_value = test_connection_mock.return_value = execution_mock.return_value = None - experimenter = PyExperimenter(os.path.join('test', 'test_logtables', 'sqlite_logtables.cfg')) + experimenter = PyExperimenter(os.path.join('test', 'test_logtables', 'sqlite_logtables.cfg'), use_codecarbon=False) experimenter.delete_table() execution_mock.assert_has_calls([call(None, 'DROP TABLE IF EXISTS test_sqlite_logtables__test_sqlite_log'), call(None, 'DROP TABLE IF EXISTS test_sqlite_logtables__test_sqlite_log2'), call(None, 'DROP TABLE IF EXISTS test_sqlite_logtables')]) @@ -83,7 +86,7 @@ def own_function(keyfields: dict, result_processor: ResultProcessor, custom_fiel result_processor.process_logs({'test_sqlite_log': {'test': 2}, 'test_sqlite_log2': {'test': 3}}) def test_integration(): - experimenter = PyExperimenter(os.path.join('test', 'test_logtables', 'sqlite_logtables.cfg')) + experimenter = PyExperimenter(os.path.join('test', 'test_logtables', 'sqlite_logtables.cfg'), use_codecarbon=False) try: experimenter.delete_table() except Exception: diff --git a/test/test_result_processor.py b/test/test_result_processor.py index 906cab00..2cf6b26f 100644 --- a/test/test_result_processor.py +++ b/test/test_result_processor.py @@ -37,7 +37,7 @@ def test_init(create_database_if_not_existing_mock, test_connection_mysql, test_ create_database_if_not_existing_mock.return_value = None test_connection_mysql.return_value = None test_connection_sqlite.return_value = None - result_processor = ResultProcessor(config, CREDENTIAL_PATH, table_name, result_fields, 0) + result_processor = ResultProcessor(config, False, None, CREDENTIAL_PATH, table_name, result_fields, 0) assert table_name == result_processor._table_name assert result_fields == result_processor._result_fields @@ -53,7 +53,7 @@ def test_init_raises_error(mock_fn): config = utils.load_config(os.path.join('test', 'test_config_files', 'load_config_test_file', 'my_sql_test_file.cfg')) config.set('PY_EXPERIMENTER', 'provider', 'test_provider') with pytest.raises(InvalidConfigError, match='Invalid database provider!'): - ResultProcessor(config, CREDENTIAL_PATH, table_name, condition, result_fields) + ResultProcessor(config, False, None, CREDENTIAL_PATH, table_name, condition, result_fields) @patch.object(database_connector_mysql.DatabaseConnectorMYSQL, '_test_connection') @@ -81,7 +81,7 @@ def test_process_results_raises_error(create_database_mock, test_connection_mock table_name = 'test_table' config = utils.load_config(os.path.join('test', 'test_config_files', 'load_config_test_file', 'my_sql_test_file.cfg')) - result_processor = ResultProcessor(config, CREDENTIAL_PATH, table_name, result_fields, experiment_id) + result_processor = ResultProcessor(config, False, None, CREDENTIAL_PATH, table_name, result_fields, experiment_id) with pytest.raises(error, match=errorstring): result_processor.process_results(results) @@ -101,7 +101,7 @@ def test_valid_result_fields(create_database_if_not_existing_mock, test_connecti create_database_if_not_existing_mock.return_value = None test_connection_mock.return_value = None mock_config = utils.load_config(os.path.join('test', 'test_config_files', 'load_config_test_file', 'my_sql_test_file.cfg')) - assert subset_boolean == ResultProcessor(mock_config, CREDENTIAL_PATH, 'test_table_name', + assert subset_boolean == ResultProcessor(mock_config, False, None, CREDENTIAL_PATH, 'test_table_name', used_result_fields, 0)._valid_result_fields(existing_result_fields) diff --git a/test/test_run_experiments/test_run_mysql_experiment.py b/test/test_run_experiments/test_run_mysql_experiment.py index 378f02f0..ff4000d5 100644 --- a/test/test_run_experiments/test_run_mysql_experiment.py +++ b/test/test_run_experiments/test_run_mysql_experiment.py @@ -35,7 +35,7 @@ def check_done_entries(experimenter, amount_of_entries): def test_run_all_mqsql_experiments(): experiment_configuration_file_path = os.path.join('test', 'test_run_experiments', 'test_run_mysql_experiment_config.cfg') logging.basicConfig(level=logging.DEBUG) - experimenter = PyExperimenter(experiment_configuration_file_path=experiment_configuration_file_path) + experimenter = PyExperimenter(experiment_configuration_file_path=experiment_configuration_file_path, use_codecarbon=False) try: experimenter.delete_table() except ProgrammingError as e: @@ -53,7 +53,7 @@ def test_run_all_mqsql_experiments(): assert entries_without_metadata == (1, 1, 1, 'done', 'PyExperimenter', '0.8414709848078965', '0.5403023058681398', None) experimenter.dbconnector.close_connection(connection) - experimenter = PyExperimenter(experiment_configuration_file_path=experiment_configuration_file_path) + experimenter = PyExperimenter(experiment_configuration_file_path=experiment_configuration_file_path, use_codecarbon=False) experimenter.fill_table_from_config() experimenter.execute(own_function, -1) check_done_entries(experimenter, 30) @@ -93,7 +93,7 @@ def check_error_entries(experimenter): def test_run_error_experiment(): experiment_configuration_file_path = os.path.join('test', 'test_run_experiments', 'test_run_mysql_experiment_config.cfg') logging.basicConfig(level=logging.DEBUG) - experimenter = PyExperimenter(experiment_configuration_file_path=experiment_configuration_file_path) + experimenter = PyExperimenter(experiment_configuration_file_path=experiment_configuration_file_path, use_codecarbon=False) try: experimenter.delete_table() except ProgrammingError as e: @@ -126,7 +126,7 @@ def own_function_raising_errors(keyfields: dict, result_processor: ResultProcess def test_raising_error_experiment(): experimenter = PyExperimenter(experiment_configuration_file_path=os.path.join('test', 'test_run_experiments', 'test_run_mysql_error_config.cfg'), - name='name') + name='name', use_codecarbon=False) try: experimenter.delete_table() diff --git a/test/test_run_experiments/test_run_sqlite_experiment.py b/test/test_run_experiments/test_run_sqlite_experiment.py index bde6e850..38442b02 100644 --- a/test/test_run_experiments/test_run_sqlite_experiment.py +++ b/test/test_run_experiments/test_run_sqlite_experiment.py @@ -36,7 +36,7 @@ def check_done_entries(experimenter, amount_of_entries): def test_run_all_sqlite_experiments(): logging.basicConfig(level=logging.DEBUG) experimenter = PyExperimenter(experiment_configuration_file_path=os.path.join( - 'test', 'test_run_experiments', 'test_run_sqlite_experiment_config.cfg')) + 'test', 'test_run_experiments', 'test_run_sqlite_experiment_config.cfg'), use_codecarbon=False) try: experimenter.delete_table() except Exception: @@ -55,7 +55,7 @@ def test_run_all_sqlite_experiments(): experimenter.dbconnector.close_connection(connection) experimenter = PyExperimenter(experiment_configuration_file_path=os.path.join( - 'test', 'test_run_experiments', 'test_run_sqlite_experiment_config.cfg')) + 'test', 'test_run_experiments', 'test_run_sqlite_experiment_config.cfg'), use_codecarbon=False) experimenter.fill_table_from_config() experimenter.execute(own_function, -1) check_done_entries(experimenter, 30) @@ -95,7 +95,7 @@ def check_error_entries(experimenter): def test_run_error_experiment(): experiment_configuration_file_path = os.path.join('test', 'test_run_experiments', 'test_run_sqlite_experiment_config.cfg') logging.basicConfig(level=logging.DEBUG) - experimenter = PyExperimenter(experiment_configuration_file_path=experiment_configuration_file_path) + experimenter = PyExperimenter(experiment_configuration_file_path=experiment_configuration_file_path, use_codecarbon=False) try: experimenter.delete_table() except ProgrammingError as e: @@ -131,7 +131,7 @@ def own_function_raising_errors(keyfields: dict, result_processor: ResultProcess def test_raising_error_experiment(): experimenter = PyExperimenter(experiment_configuration_file_path=os.path.join('test', 'test_run_experiments', 'test_run_sqlite_error_config.cfg'), - name='name') + name='name', use_codecarbon=False) try: experimenter.delete_table() diff --git a/test/test_utils.py b/test/test_utils.py index 9b8c1056..b2dea398 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -1,13 +1,15 @@ import os import re +import tempfile from configparser import ConfigParser from typing import Dict import pytest from py_experimenter.exceptions import ConfigError, MissingLogTableError, NoConfigFileError, ParameterCombinationError -from py_experimenter.utils import (_generate_int_data, add_timestep_result_columns, combine_fill_table_parameters, extract_columns, extract_logtables, - get_keyfield_data, get_keyfield_names, get_keyfields, get_resultfields, load_config, timestamps_for_result_fields) +from py_experimenter.utils import (_generate_int_data, add_timestep_result_columns, combine_fill_table_parameters, extract_codecarbon_config, + extract_columns, extract_logtables, get_keyfield_data, get_keyfield_names, get_keyfields, get_resultfields, + load_config, timestamps_for_result_fields) @pytest.mark.parametrize( @@ -367,7 +369,7 @@ def test_combine_fill_table_parameters(keyfield_names, parameters, fixed_paramet 'logtables': 'table1:Table1, table2:Table2', 'Table1': 'a:FLOAT, b:FLOAT', 'Table2': 'a:FLOAT, b'}}, - {'some_table_name__table1': [('a', 'FLOAT'), ('b', 'FLOAT')], + {'some_table_name__table1': [('a', 'FLOAT'), ('b', 'FLOAT')], 'some_table_name__table2': [('a', 'FLOAT'), ('b', 'VARCHAR(255)')]}, id='logtables with two tables' ), @@ -384,7 +386,7 @@ def test_combine_fill_table_parameters(keyfield_names, parameters, fixed_paramet ), ] ) -def test_extract_logtables(table_name:str, configuration_dict: Dict[str, Dict[str, str]], expected_logtables: Dict[str, Dict[str, str]]): +def test_extract_logtables(table_name: str, configuration_dict: Dict[str, Dict[str, str]], expected_logtables: Dict[str, Dict[str, str]]): config = ConfigParser() config.read_dict(configuration_dict) logtables = extract_logtables(config, table_name) @@ -401,15 +403,117 @@ def test_extract_logtables(table_name:str, configuration_dict: Dict[str, Dict[st [], 'No parameter combination found!' ), - ( - ['keyfield_name_1', 'keyfield_name_2'], - {'keyfield_name_1': [1, 2], 'keyfield_name_2': [4, 5]}, - [{'keyfield_name_2': [7]}], - 'There is at least one key that is used more than once!' - ), - - ] + ], ) -def test_combine_fill_table_parameters_raises_error(keyfield_names, parameters, fixed_parameter_combinations, error_msg): +def test_combine_fill_table_parameters_raises_error( + keyfield_names, parameters, fixed_parameter_combinations, error_msg +): with pytest.raises(ParameterCombinationError, match=error_msg): - combine_fill_table_parameters(keyfield_names, parameters, fixed_parameter_combinations) + combine_fill_table_parameters( + keyfield_names, parameters, fixed_parameter_combinations + ) + + +@pytest.fixture +def temp_config_file_no_codecarbon_section(): + config_data = """ + [PY_EXPERIMENTER] + provider=mysql + database=py_experimenter + table=test_table_mysql_with_wrong_syntax + n_jobs = 5 + + keyfields = value:int, exponent:int, + resultfields = sin, cos + + value=1,2,3,4,5,6,7,8,9,10 + exponent=1,2,3 + """ + with tempfile.NamedTemporaryFile(mode="w", delete=False) as temp_file: + temp_file.write(config_data) + temp_file.close() + yield temp_file.name + # Clean up the temporary file after the test + os.remove(temp_file.name) + + +def test_extract_codecarbon_config_no_codecarbon_section( + temp_config_file_no_codecarbon_section, +): + config = ConfigParser() + expected_codecarbon_config = ConfigParser() + config.read(temp_config_file_no_codecarbon_section) + + config, codecarbon_config = extract_codecarbon_config(config) + + # Check if 'codecarbon' section is removed from the config + assert not config.has_section("codecarbon") + + # Check if the extracted 'codecarbon' config is correct + expected_codecarbon_config.read_dict( + { + "codecarbon": { + "measure_power_secs": "15", + "tracking_mode": "machine", + "log_level": "error", + "save_to_file": "True", + "output_dir": "output/CodeCarbon", + } + } + ) + assert codecarbon_config == expected_codecarbon_config + + +@pytest.fixture +def temp_config_file(): + config_data = """ + [PY_EXPERIMENTER] + provider=mysql + database=py_experimenter + table=test_table_mysql_with_wrong_syntax + n_jobs = 5 + + keyfields = value:int, exponent:int, + resultfields = sin, cos + + value=1,2,3,4,5,6,7,8,9,10 + exponent=1,2,3 + + [codecarbon] + measure_power_secs = 30 + tracking_mode = process + log_level = warning + save_to_file = False + output_dir = output/CodeCarbon + """ + with tempfile.NamedTemporaryFile(mode="w", delete=False) as temp_file: + temp_file.write(config_data) + temp_file.close() + yield temp_file.name + # Clean up the temporary file after the test + os.remove(temp_file.name) + + +def test_extract_codecarbon_config(temp_config_file): + config = ConfigParser() + expected_codecarbon_config = ConfigParser() + config.read(temp_config_file) + + config, codecarbon_config = extract_codecarbon_config(config) + + # Check if 'codecarbon' section is removed from the config + assert not config.has_section("codecarbon") + + # Check if the extracted 'codecarbon' config matches the expected values + expected_codecarbon_config.read_dict( + { + "codecarbon": { + "measure_power_secs": "30", + "tracking_mode": "process", + "log_level": "warning", + "save_to_file": "False", + "output_dir": "output/CodeCarbon", + } + } + ) + assert codecarbon_config == expected_codecarbon_config \ No newline at end of file