Skip to content

Instantly share code, notes, and snippets.

@tail-call
Created December 5, 2024 03:43
Show Gist options
  • Save tail-call/275943d767ac331aa937bac37c215313 to your computer and use it in GitHub Desktop.
Save tail-call/275943d767ac331aa937bac37c215313 to your computer and use it in GitHub Desktop.
diff --git a/cgt-nn-rev6wip.ipynb b/cgt-nn-rev6wip.ipynb
index 25792be..0b03781 100644
--- a/cgt-nn-rev6wip.ipynb
+++ b/cgt-nn-rev6wip.ipynb
@@ -910,45 +910,45 @@
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
- " <th>835</th>\n",
- " <td>evaluate_RegularNetwork_2_p0.99_N9</td>\n",
- " <td>evaluate</td>\n",
- " <td>RegularNetwork</td>\n",
- " <td>2</td>\n",
+ " <th>415</th>\n",
+ " <td>loss_AugmentedReLUNetwork_1_p0.99_N9</td>\n",
+ " <td>loss</td>\n",
+ " <td>AugmentedReLUNetwork</td>\n",
+ " <td>1</td>\n",
" <td>0.99</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
- " <th>836</th>\n",
- " <td>evaluate_RegularNetwork_3_p0.99_N9</td>\n",
- " <td>evaluate</td>\n",
+ " <th>416</th>\n",
+ " <td>loss_RegularNetwork_2_p0.99_N9</td>\n",
+ " <td>loss</td>\n",
" <td>RegularNetwork</td>\n",
- " <td>3</td>\n",
+ " <td>2</td>\n",
" <td>0.99</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
- " <th>837</th>\n",
- " <td>evaluate_AugmentedReLUNetwork_1_p0.99_N9</td>\n",
- " <td>evaluate</td>\n",
+ " <th>417</th>\n",
+ " <td>loss_AugmentedReLUNetwork_2_p0.99_N9</td>\n",
+ " <td>loss</td>\n",
" <td>AugmentedReLUNetwork</td>\n",
- " <td>1</td>\n",
+ " <td>2</td>\n",
" <td>0.99</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
- " <th>838</th>\n",
- " <td>evaluate_AugmentedReLUNetwork_2_p0.99_N9</td>\n",
- " <td>evaluate</td>\n",
- " <td>AugmentedReLUNetwork</td>\n",
- " <td>2</td>\n",
+ " <th>418</th>\n",
+ " <td>loss_RegularNetwork_3_p0.99_N9</td>\n",
+ " <td>loss</td>\n",
+ " <td>RegularNetwork</td>\n",
+ " <td>3</td>\n",
" <td>0.99</td>\n",
" <td>9</td>\n",
" </tr>\n",
" <tr>\n",
- " <th>839</th>\n",
- " <td>evaluate_AugmentedReLUNetwork_3_p0.99_N9</td>\n",
- " <td>evaluate</td>\n",
+ " <th>419</th>\n",
+ " <td>loss_AugmentedReLUNetwork_3_p0.99_N9</td>\n",
+ " <td>loss</td>\n",
" <td>AugmentedReLUNetwork</td>\n",
" <td>3</td>\n",
" <td>0.99</td>\n",
@@ -956,37 +956,37 @@
" </tr>\n",
" </tbody>\n",
"</table>\n",
- "<p>840 rows × 6 columns</p>\n",
+ "<p>420 rows × 6 columns</p>\n",
"</div>"
],
"text/plain": [
- " Key Measurement \\\n",
- "0 loss_RegularNetwork_1_p0_N0 loss \n",
- "1 loss_AugmentedReLUNetwork_1_p0_N0 loss \n",
- "2 loss_RegularNetwork_2_p0_N0 loss \n",
- "3 loss_AugmentedReLUNetwork_2_p0_N0 loss \n",
- "4 loss_RegularNetwork_3_p0_N0 loss \n",
- ".. ... ... \n",
- "835 evaluate_RegularNetwork_2_p0.99_N9 evaluate \n",
- "836 evaluate_RegularNetwork_3_p0.99_N9 evaluate \n",
- "837 evaluate_AugmentedReLUNetwork_1_p0.99_N9 evaluate \n",
- "838 evaluate_AugmentedReLUNetwork_2_p0.99_N9 evaluate \n",
- "839 evaluate_AugmentedReLUNetwork_3_p0.99_N9 evaluate \n",
+ " Key Measurement Network \\\n",
+ "0 loss_RegularNetwork_1_p0_N0 loss RegularNetwork \n",
+ "1 loss_AugmentedReLUNetwork_1_p0_N0 loss AugmentedReLUNetwork \n",
+ "2 loss_RegularNetwork_2_p0_N0 loss RegularNetwork \n",
+ "3 loss_AugmentedReLUNetwork_2_p0_N0 loss AugmentedReLUNetwork \n",
+ "4 loss_RegularNetwork_3_p0_N0 loss RegularNetwork \n",
+ ".. ... ... ... \n",
+ "415 loss_AugmentedReLUNetwork_1_p0.99_N9 loss AugmentedReLUNetwork \n",
+ "416 loss_RegularNetwork_2_p0.99_N9 loss RegularNetwork \n",
+ "417 loss_AugmentedReLUNetwork_2_p0.99_N9 loss AugmentedReLUNetwork \n",
+ "418 loss_RegularNetwork_3_p0.99_N9 loss RegularNetwork \n",
+ "419 loss_AugmentedReLUNetwork_3_p0.99_N9 loss AugmentedReLUNetwork \n",
"\n",
- " Network Dataset P N \n",
- "0 RegularNetwork 1 0.00 0 \n",
- "1 AugmentedReLUNetwork 1 0.00 0 \n",
- "2 RegularNetwork 2 0.00 0 \n",
- "3 AugmentedReLUNetwork 2 0.00 0 \n",
- "4 RegularNetwork 3 0.00 0 \n",
- ".. ... ... ... .. \n",
- "835 RegularNetwork 2 0.99 9 \n",
- "836 RegularNetwork 3 0.99 9 \n",
- "837 AugmentedReLUNetwork 1 0.99 9 \n",
- "838 AugmentedReLUNetwork 2 0.99 9 \n",
- "839 AugmentedReLUNetwork 3 0.99 9 \n",
+ " Dataset P N \n",
+ "0 1 0.00 0 \n",
+ "1 1 0.00 0 \n",
+ "2 2 0.00 0 \n",
+ "3 2 0.00 0 \n",
+ "4 3 0.00 0 \n",
+ ".. ... ... .. \n",
+ "415 1 0.99 9 \n",
+ "416 2 0.99 9 \n",
+ "417 2 0.99 9 \n",
+ "418 3 0.99 9 \n",
+ "419 3 0.99 9 \n",
"\n",
- "[840 rows x 6 columns]"
+ "[420 rows x 6 columns]"
]
},
"execution_count": 7,
@@ -1012,7 +1012,34 @@
"execution_count": 8,
"id": "a60f12cb",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "TypeError",
+ "evalue": "ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[0;32mIn[8], line 99\u001b[0m\n\u001b[1;32m 91\u001b[0m plot_params\u001b[38;5;241m=\u001b[39mPlotParams(\n\u001b[1;32m 92\u001b[0m measurement\u001b[38;5;241m=\u001b[39mmeasurement,\n\u001b[1;32m 93\u001b[0m dataset\u001b[38;5;241m=\u001b[39mdataset,\n\u001b[1;32m 94\u001b[0m metric\u001b[38;5;241m=\u001b[39mmetric,\n\u001b[1;32m 95\u001b[0m p\u001b[38;5;241m=\u001b[39mp,\n\u001b[1;32m 96\u001b[0m )\n\u001b[1;32m 98\u001b[0m curve\u001b[38;5;241m=\u001b[39mcompute_dataframe(plot_params\u001b[38;5;241m=\u001b[39mplot_params)\n\u001b[0;32m---> 99\u001b[0m \u001b[43mplot_curve\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 100\u001b[0m \u001b[43m \u001b[49m\u001b[43max\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43maxs\u001b[49m\u001b[43m[\u001b[49m\u001b[43mi\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mj\u001b[49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mmetrics\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m>\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43maxs\u001b[49m\u001b[43m[\u001b[49m\u001b[43mj\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 101\u001b[0m \u001b[43m \u001b[49m\u001b[43mmeans\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcurve\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mmean\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 102\u001b[0m \u001b[43m \u001b[49m\u001b[43mlowerqs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcurve\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0.25\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 103\u001b[0m \u001b[43m \u001b[49m\u001b[43mupperqs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcurve\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0.75\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 104\u001b[0m \u001b[43m \u001b[49m\u001b[43mzmeans\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mreference_curve\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mmean\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 105\u001b[0m \u001b[43m \u001b[49m\u001b[43mzlowerqs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mreference_curve\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0.25\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 106\u001b[0m \u001b[43m \u001b[49m\u001b[43mzupperqs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mreference_curve\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0.75\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 107\u001b[0m \u001b[43m \u001b[49m\u001b[43mX\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcurve\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mindex\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 108\u001b[0m \u001b[43m \u001b[49m\u001b[43mtitle\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43mf\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mp = \u001b[39;49m\u001b[38;5;132;43;01m{\u001b[39;49;00m\u001b[43mplot_params\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mp\u001b[49m\u001b[38;5;132;43;01m}\u001b[39;49;00m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 109\u001b[0m \u001b[43m \u001b[49m\u001b[43mxlabel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mxlabel\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 110\u001b[0m \u001b[43m \u001b[49m\u001b[43mylabel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmetric\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 111\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 112\u001b[0m fig\u001b[38;5;241m.\u001b[39msuptitle(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mDataset #\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mplot_params\u001b[38;5;241m.\u001b[39mdataset\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 113\u001b[0m plt\u001b[38;5;241m.\u001b[39mtight_layout()\n",
+ "Cell \u001b[0;32mIn[8], line 56\u001b[0m, in \u001b[0;36mplot_curve\u001b[0;34m(ax, means, lowerqs, upperqs, zmeans, zlowerqs, zupperqs, X, title, xlabel, ylabel)\u001b[0m\n\u001b[1;32m 42\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mplot_curve\u001b[39m(\n\u001b[1;32m 43\u001b[0m ax: \u001b[38;5;28mobject\u001b[39m,\n\u001b[1;32m 44\u001b[0m means: pd\u001b[38;5;241m.\u001b[39mSeries,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 53\u001b[0m ylabel: \u001b[38;5;28mstr\u001b[39m,\n\u001b[1;32m 54\u001b[0m ):\n\u001b[1;32m 55\u001b[0m ax\u001b[38;5;241m.\u001b[39mplot(X, zmeans, label\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mMean of p = 0\u001b[39m\u001b[38;5;124m'\u001b[39m, color\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlightblue\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m---> 56\u001b[0m \u001b[43max\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfill_between\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mzlowerqs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mzupperqs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcolor\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mlightgray\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43malpha\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0.5\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlabel\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43m0.25 to 0.75 Quantiles, p = 0\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 57\u001b[0m ax\u001b[38;5;241m.\u001b[39mplot(X, means, label\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mMean\u001b[39m\u001b[38;5;124m'\u001b[39m, color\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mblue\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 58\u001b[0m ax\u001b[38;5;241m.\u001b[39mfill_between(X, lowerqs, upperqs, color\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mgray\u001b[39m\u001b[38;5;124m'\u001b[39m, alpha\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.5\u001b[39m, label\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m0.25 to 0.75 Quantiles\u001b[39m\u001b[38;5;124m'\u001b[39m)\n",
+ "File \u001b[0;32m~/.pyenv/versions/3.12.3/lib/python3.12/site-packages/matplotlib/__init__.py:1473\u001b[0m, in \u001b[0;36m_preprocess_data.<locals>.inner\u001b[0;34m(ax, data, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1470\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(func)\n\u001b[1;32m 1471\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21minner\u001b[39m(ax, \u001b[38;5;241m*\u001b[39margs, data\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 1472\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m data \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 1473\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1474\u001b[0m \u001b[43m \u001b[49m\u001b[43max\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1475\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mmap\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43msanitize_sequence\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1476\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m{\u001b[49m\u001b[43mk\u001b[49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[43msanitize_sequence\u001b[49m\u001b[43m(\u001b[49m\u001b[43mv\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mk\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mv\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mkwargs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mitems\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1478\u001b[0m bound \u001b[38;5;241m=\u001b[39m new_sig\u001b[38;5;241m.\u001b[39mbind(ax, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m 1479\u001b[0m auto_label \u001b[38;5;241m=\u001b[39m (bound\u001b[38;5;241m.\u001b[39marguments\u001b[38;5;241m.\u001b[39mget(label_namer)\n\u001b[1;32m 1480\u001b[0m \u001b[38;5;129;01mor\u001b[39;00m bound\u001b[38;5;241m.\u001b[39mkwargs\u001b[38;5;241m.\u001b[39mget(label_namer))\n",
+ "File \u001b[0;32m~/.pyenv/versions/3.12.3/lib/python3.12/site-packages/matplotlib/axes/_axes.py:5648\u001b[0m, in \u001b[0;36mAxes.fill_between\u001b[0;34m(self, x, y1, y2, where, interpolate, step, **kwargs)\u001b[0m\n\u001b[1;32m 5646\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mfill_between\u001b[39m(\u001b[38;5;28mself\u001b[39m, x, y1, y2\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m, where\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, interpolate\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[1;32m 5647\u001b[0m step\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m-> 5648\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_fill_between_x_or_y\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 5649\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mx\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my1\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my2\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 5650\u001b[0m \u001b[43m \u001b[49m\u001b[43mwhere\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mwhere\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minterpolate\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minterpolate\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstep\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstep\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
+ "File \u001b[0;32m~/.pyenv/versions/3.12.3/lib/python3.12/site-packages/matplotlib/axes/_axes.py:5548\u001b[0m, in \u001b[0;36mAxes._fill_between_x_or_y\u001b[0;34m(self, ind_dir, ind, dep1, dep2, where, interpolate, step, **kwargs)\u001b[0m\n\u001b[1;32m 5544\u001b[0m kwargs[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfacecolor\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \\\n\u001b[1;32m 5545\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_patches_for_fill\u001b[38;5;241m.\u001b[39mget_next_color()\n\u001b[1;32m 5547\u001b[0m \u001b[38;5;66;03m# Handle united data, such as dates\u001b[39;00m\n\u001b[0;32m-> 5548\u001b[0m ind, dep1, dep2 \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mmap\u001b[39m(\n\u001b[1;32m 5549\u001b[0m ma\u001b[38;5;241m.\u001b[39mmasked_invalid, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_process_unit_info(\n\u001b[1;32m 5550\u001b[0m [(ind_dir, ind), (dep_dir, dep1), (dep_dir, dep2)], kwargs))\n\u001b[1;32m 5552\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m name, array \u001b[38;5;129;01min\u001b[39;00m [\n\u001b[1;32m 5553\u001b[0m (ind_dir, ind), (\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mdep_dir\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m1\u001b[39m\u001b[38;5;124m\"\u001b[39m, dep1), (\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mdep_dir\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m2\u001b[39m\u001b[38;5;124m\"\u001b[39m, dep2)]:\n\u001b[1;32m 5554\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m array\u001b[38;5;241m.\u001b[39mndim \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m1\u001b[39m:\n",
+ "File \u001b[0;32m~/.pyenv/versions/3.12.3/lib/python3.12/site-packages/numpy/ma/core.py:2360\u001b[0m, in \u001b[0;36mmasked_invalid\u001b[0;34m(a, copy)\u001b[0m\n\u001b[1;32m 2333\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 2334\u001b[0m \u001b[38;5;124;03mMask an array where invalid values occur (NaNs or infs).\u001b[39;00m\n\u001b[1;32m 2335\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 2357\u001b[0m \n\u001b[1;32m 2358\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 2359\u001b[0m a \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39marray(a, copy\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m, subok\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[0;32m-> 2360\u001b[0m res \u001b[38;5;241m=\u001b[39m masked_where(\u001b[38;5;241m~\u001b[39m(\u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43misfinite\u001b[49m\u001b[43m(\u001b[49m\u001b[43ma\u001b[49m\u001b[43m)\u001b[49m), a, copy\u001b[38;5;241m=\u001b[39mcopy)\n\u001b[1;32m 2361\u001b[0m \u001b[38;5;66;03m# masked_invalid previously never returned nomask as a mask and doing so\u001b[39;00m\n\u001b[1;32m 2362\u001b[0m \u001b[38;5;66;03m# threw off matplotlib (gh-22842). So use shrink=False:\u001b[39;00m\n\u001b[1;32m 2363\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m res\u001b[38;5;241m.\u001b[39m_mask \u001b[38;5;129;01mis\u001b[39;00m nomask:\n",
+ "\u001b[0;31mTypeError\u001b[0m: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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JtnX9wox9yJk306yb2CQfX2vELOvEHMvQvbtJPu6N/BO3Y8cfPDBMW7cuNSrpKQkampqYsuWLdHU1NS596GHHoqOjo6orq7u9ntPmjQphgwZEg0NDZ331q5dG+vXr4+ampqIiPj3f//3+O1vfxurV6+O1atXx3e+852IeLOEmzNnTr+fPyLiqaeeipNPPjlmzpwZX/7yl99y5rdSUlISkyZN6vK4HR0d0dDQ0OVx/1ZNTU2X9RERK1as6Fx/2GGHRWVlZZc1bW1t8eijj+72e/a3M0T8tVT+wx/+ED/96U/joIMO6vXZczX/ueeeG7/73e86f9ZXr14do0aNiksvvTQefPDBnJxjoMnVz00+7c2ZIiK++tWvxjXXXBPLly/v8tnw/UFPzzRu3Lh44oknuvzsf/jDH46TTz45Vq9eHVVVVX05frf25t/pfe97Xzz77LOdT5wjIn7/+9/HyJEj8/4kM2LvzvTqq6/u8mRy5xPpnb/4NdD094yIkH1/S/b1Ldn3JtnX9wox9yJkX4TsyxfZ96b+nhOFmH2FmHsRsm8n2TcwFGJOFOKZIvp39hVi7kXIvp1k324k9InTTjstOe6445JHH300+eUvf5kcccQRyfTp0zu//l//9V/JkUcemTz66KOd9y644IJkzJgxyUMPPZQ89thjSU1NTVJTU7Pbx/jZz36WRETy3//93wNi/ieeeCI5+OCDk49//OPJn/70p85r48aNb2vWu+66KyktLU3uuOOO5Omnn07OP//8ZNiwYUlzc3OSJEly7rnnJpdffnnn+l/96lfJ4MGDk69//evJM888kyxYsCAZMmRI8sQTT3Suue6665Jhw4Yl/+f//J/kd7/7XXLmmWcmhx12WPLaa6+9rVn76gzbtm1LPvzhDyeHHHJIsnr16i5/3+3t7f1+/u4ceuihyTe+8Y1en30g64u/977W0zNdd911SUlJSXLPPfd0+Tl/5ZVX8nWEXfT0TH9v5syZyZlnntlH0+6Znp5p/fr1yf77759ceOGFydq1a5Of/OQnyYgRI5IvfelL+TrCLnp6pgULFiT7779/8m//9m/JunXrkv/3//5f8s53vjP56Ec/mq8j7OKVV15JHn/88eTxxx9PIiK54YYbkscffzx54YUXkiRJkssvvzw599xzO9evW7cu2XfffZNLL700eeaZZ5LFixcngwYNSpYvX56vI3RL9sm+fJF9si9fCjH3kkT2dUf29Q3ZJ/vypRBzL0lkX5LIvnyRfbIvXwox95JE9iWJ7NsdxXIf+fOf/5xMnz492W+//ZKysrJk1qxZXcLvueeeSyIi+dnPftZ577XXXks+/elPJwcccECy7777Jv/zf/7P5E9/+tNuHyOXxXIu5l+wYEESEbtchx566Nue91vf+lYyZsyYpKSkJJkyZUry61//uvNrJ510UjJz5swu63/0ox8l7373u5OSkpLkPe95T/LAAw90+XpHR0dy1VVXJRUVFUlpaWlyyimnJGvXrn3bc/bVGXb++3R3/e2/WX+dvzuK5e7l+u89H3pypkMPPbTbn/MFCxb0/eApevrv9Lf665PNnp7pkUceSaqrq5PS0tLk8MMPT7785S8nb7zxRh9Pna4nZ9q+fXvyhS98IXnnO9+ZDB06NKmqqko+/elP5+R/k/fWzucJf3/tPMfMmTOTk046aZc9EydOTEpKSpLDDz88+e53v9vnc+8J2Sf78kX2yb58KcTcSxLZ9/dkX9+RfbIvXwox95JE9iWJ7MsH2fcm2ZcfhZh7SSL7ZF/3ipJkgL5eGwAAAAAAAIA+4TOWAQAAAAAAAEilWAYAAAAAAAAglWIZAAAAAAAAgFSKZQAAAAAAAABSKZYBAAAAAAAASKVYBgAAAAAAACCVYhkAAAAAAACAVIplAAAAAAAAAFIplgEAAAAAAABIpVgGAAAAAAAAIJViGQAAAAAAAIBUimUAAAAAAAAAUimWAQAAAAAAAEilWAYAAAAAAAAglWIZAAAAAAAAgFSKZQAAAAAAAABSKZYBAAAAAAAASKVYBgAAAAAAACCVYhkAAAAAAACAVIplAAAAAAAAAFIplgEAAAAAAABIpVgGAAAAAAAAIJViGQAAAAAAAIBUimUAAAAAAAAAUimWAQAAAAAAAEilWAYAAAAAAAAglWIZAAAAAAAAgFSKZQAAAAAAAABSKZYBAAAAAAAASKVYBgAAAAAAACCVYhkAAAAAAACAVIplAAAAAAAAAFIplgEAAAAAAABIpVgGAAAAAAAAIJViGQAAAAAAAIBUimUAAAAAAAAAUimWAQAAAAAAAEilWAYAAAAAAAAglWIZAAAAAAAAgFSKZQAAAAAAAABSKZYBAAAAAAAASKVYBgAAAAAAACCVYhkAAAAAAACAVIplAAAAAAAAAFIplgEAAAAAAABIpVgGAAAAAAAAIJViGQAAAAAAAIBUimUAAAAAAAAAUimWAQAAAAAAAEilWAYAAAAAAAAglWIZAAAAAAAAgFSKZQAAAAAAAABSKZYBAAAAAAAASKVYBgAAAAAAACCVYhkAAAAAAACAVHkvln/+85/HGWecEaNGjYqioqK4//7733LPww8/HMcff3yUlpbGu971rrjjjjtyPidAb5J9QBbJPiBr5B6QRbIPyCLZB2RF3ovlrVu3xoQJE2Lx4sV7tP65556L008/PU4++eRYvXp1fPazn41PfvKT8eCDD+Z4UoDeI/uALJJ9QNbIPSCLZB+QRbIPyIqiJEmSfA+xU1FRUdx3330xderU3a657LLL4oEHHognn3yy897HPvax2LJlSyxfvrwPpgToXbIPyCLZB2SN3AOySPYBWST7gEI2ON8D9FRjY2PU1tZ2uVdXVxef/exnd7unvb092tvbO//c0dERL7/8chx00EFRVFSUq1GBASxJknjllVdi1KhRUVyc9zd3kH1An5B9QNYUQu5FyD6gZwoh++Qe0FOyD8iiXGTfgCuWm5ubo6Kiosu9ioqKaGtri9deey322WefXfYsXLgwrr766r4aESggGzZsiEMOOSTfY8g+oE/JPiBrBnLuRcg+YO8M5OyTe8Dekn1AFvVm9g24YnlvzJ07N+rr6zv/3NraGmPGjIkNGzZEWVlZHicD+qu2traoqqqK/fffP9+j7DXZB/SU7AOyphByL0L2AT1TCNkn94Cekn1AFuUi+wZcsVxZWRktLS1d7rW0tERZWdluf3u7tLQ0SktLd7lfVlYmcIFU/eVtZGQf0JdkH5A1Azn3ImQfsHcGcvbJPWBvyT4gi3oz+/L/YQI9VFNTEw0NDV3urVixImpqavI0EUDuyT4gi2QfkDVyD8gi2QdkkewDBqq8F8t/+ctfYvXq1bF69eqIiHjuuedi9erVsX79+oh48+0dZsyY0bn+ggsuiHXr1sXnP//5WLNmTdx8883xox/9KC655JJ8jA+wV2QfkEWyD8gauQdkkewDskj2AVmR92L5sccei+OOOy6OO+64iIior6+P4447LubPnx8REX/60586wzci4rDDDosHHnggVqxYERMmTIjrr78+vvOd70RdXV1e5gfYG7IPyCLZB2SN3AOySPYBWST7gKwo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AAAAQJZhGQAAAAAAAICswg7LGzZsiNmzZ0d9fX00NzfHzp07s6//3ve+F5dddlnU19fHFVdcEVu3bq3QSc/eUO60adOmuPbaa2PKlCkxZcqUaG1tPeP/BtUw1N+nkzZv3hwTJkyIxYsXj+4Bh2God3r77bdj5cqVMWPGjKirq4tLL710zP35G+qd1q9fHx/+8Ifj3HPPjaamprjrrrviD3/4Q4VOe2Y/+9nPYtGiRTFz5syYMGFCPPvss2d8z/bt2+MTn/hE1NXVxYc+9KF48sknR/2cw6F92lct2qd91aR92lct2qd91VLE7kVo35/SvsrSPu2rliJ2L0L7IrSvGrTvBO2rjiJ2L0L7IrRvUKmANm/enGpra9MTTzyR/u3f/i3ddttt6YILLkhdXV2Dvv7nP/95qqmpSQ899FB6+eWX03333ZfOOeec9NJLL1X45Kc31DvdfPPNacOGDWnPnj3plVdeSX/1V3+VGhoa0r//+79X+OSnN9Q7nfT666+nWbNmpWuvvTZ95jOfqcxhz9JQ73T06NE0f/78dMMNN6QXXnghvf7662n79u1p7969FT756Q31Tt/5zndSXV1d+s53vpNef/319KMf/SjNmDEj3XXXXRU++elt3bo13Xvvvenpp59OEZGeeeaZ7Ov379+fzjvvvNTW1pZefvnl9PWvfz3V1NSkbdu2VebAZ0n7tK9atE/7qkn7tK9atE/7qqWI3UtJ+/6U9lWW9mlftRSxeylpX0raVy3ap33VUsTupaR9KWnf6RRyWF6wYEFauXJl/z/39vammTNnprVr1w76+s9+9rPpxhtvHPCsubk5/fVf//WonnMohnqn9zp+/Hg6//zz07e//e3ROuKQDedOx48fT1dffXX61re+lZYvXz7mgjvUO33zm99MF198cTp27FiljjhkQ73TypUr01/8xV8MeNbW1pauueaaUT3ncJ1NbL/4xS+mj33sYwOeLVmyJC1cuHAUTzZ02ncq7asM7dO+atK+U2lfZWif9lVLEbuXkvadpH2Vp33aVy1F7F5K2peS9o0F2vdH2jf6iti9lLQvJe07ncJ9K+xjx47Frl27orW1tf/ZxIkTo7W1NXbs2DHoe3bs2DHg9RERCxcuPO3rK204d3qvd955J95999248MILR+uYQzLcO33lK1+JadOmxa233lqJYw7JcO70gx/8IFpaWmLlypXR2NgYl19+eTz44IPR29tbqWNnDedOV199dezatav/W0js378/tm7dGjfccENFzjwaxnojIrTvdLRv9GnfCdpXHdo3OO0bfdp3gvZVXhG7F6F9f0r7Kkv7ThjrnShi+4rYvQjtO0n7xocidqKId3qvsda+InYvQvtO0r7BTRrpQ1XboUOHore3NxobGwc8b2xsjH379g36ns7OzkFf39nZOWrnHIrh3Om97r777pg5c+Ypf2CqZTh3euGFF+Lxxx+PvXv3VuCEQzecO+3fvz9+8pOfxC233BJbt26N1157Le6444549913o729vRLHzhrOnW6++eY4dOhQfPKTn4yUUhw/fjw+//nPxz333FOJI4+K0zWip6cnfv/738e5555bpZP9kfYNTvtGn/adoH3VoX2D077Rp30naF/lFbF7Edp3kvZVnvadoH2VV8TuRWjfSdo3Pmhf5RWxfUXsXoT2naR9gyvcVyxzqnXr1sXmzZvjmWeeifr6+mofZ1gOHz4cS5cujU2bNsXUqVOrfZwR09fXF9OmTYvHHnss5s2bF0uWLIl77703Nm7cWO2jDdv27dvjwQcfjG984xuxe/fuePrpp+O5556LBx54oNpHo2S0b+zSPhg92jd2aR+MHu0bu7QPRkcRuhehfeOJ9jEWFKF9Re1ehPaVSeG+Ynnq1KlRU1MTXV1dA553dXXF9OnTB33P9OnTh/T6ShvOnU56+OGHY926dfEv//IvceWVV47mMYdkqHf69a9/HW+88UYsWrSo/1lfX19EREyaNCleffXVuOSSS0b30GcwnN+nGTNmxDnnnBM1NTX9zz7ykY9EZ2dnHDt2LGpra0f1zGcynDt96UtfiqVLl8bnPve5iIi44oor4siRI3H77bfHvffeGxMnjr+/z3K6RkyePLnqf3vxJO0bSPsqR/tO0L7q0L6BtK9ytO8E7au8InYvQvsitK9atO8E7au8InYvQvtO0r7xQfsqr4jtK2L3IrTvJO0b3Pi79RnU1tbGvHnzoqOjo/9ZX19fdHR0REtLy6DvaWlpGfD6iIjnn3/+tK+vtOHcKSLioYceigceeCC2bdsW8+fPr8RRz9pQ73TZZZfFSy+9FHv37u3/+PSnPx3XX3997N27N5qamip5/EEN5/fpmmuuiddee63/Xx4REb/61a9ixowZVQ9txPDu9M4775wS1JP/Mjnx8+PHn7HeiAjt+1PaV1nad4L2VYf2/ZH2VZb2naB9lVfE7kVoX4T2VYv2nTDWO1HE9hWxexHad5L2jQ9F7EQR7xQxtttXxO5FaN9J2ncaqYA2b96c6urq0pNPPplefvnldPvtt6cLLrggdXZ2ppRSWrp0aVq1alX/63/+85+nSZMmpYcffji98sorqb29PZ1zzjnppZdeqtYVTjHUO61bty7V1tam73//++l3v/td/8fhw4erdYVTDPVO77V8+fL0mc98pkKnPTtDvdOBAwfS+eefn/72b/82vfrqq+mHP/xhmjZtWvqHf/iHal3hFEO9U3t7ezr//PPTP//zP6f9+/enH//4x+mSSy5Jn/3sZ6t1hVMcPnw47dmzJ+3ZsydFRHrkkUfSnj170m9+85uUUkqrVq1KS5cu7X/9/v3703nnnZf+/u//Pr3yyitpw4YNqaamJm3btq1aVxiU9mlftWif9lWT9mlftWif9lVLEbuXkvYNRvsqQ/u0r1qK2L2UtC8l7asW7dO+aili91LSvpS073QKOSynlNLXv/71dNFFF6Xa2tq0YMGC9K//+q/9/7frrrsuLV++fMDrv/vd76ZLL7001dbWpo997GPpueeeq/CJz2wod/rgBz+YIuKUj/b29sofPGOov09/aqwGd6h3evHFF1Nzc3Oqq6tLF198cfrqV7+ajh8/XuFT5w3lTu+++2768pe/nC655JJUX1+fmpqa0h133JH+67/+q/IHP42f/vSng/6/j5P3WL58ebruuutOec/cuXNTbW1tuvjii9M//dM/VfzcZ0P7tK9atE/7qkn7tK9atE/7qqWI3UtJ+95L+ypH+7SvWorYvZS0LyXtqwbtO0H7qqOI3UtJ+7RvcBNSGqdfrw0AAAAAAABARRTuZywDAAAAAAAAMLIMywAAAAAAAABkGZYBAAAAAAAAyDIsAwAAAAAAAJBlWAYAAAAAAAAgy7AMAAAAAAAAQJZhGQAAAAAAAIAswzIAAAAAAAAAWYZlAAAAAAAAALIMywAAAAAAAABkGZYBAAAAAAAAyDIsAwAAAAAAAJD1/wHiC204qBO3FwAAAABJRU5ErkJggg==",
+ "text/plain": [
+ "<Figure size 2400x1800 with 18 Axes>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
"# 3. Вывод графиков\n",
"\n",
diff --git a/cgtnnlib/common.py b/cgtnnlib/common.py
index 456e121..522c37e 100644
--- a/cgtnnlib/common.py
+++ b/cgtnnlib/common.py
@@ -784,25 +784,32 @@ def evaluate_regression_model(
dataset: Dataset,
report_key: str,
)-> pd.DataFrame:
- samples = {
- 'noise_factor': NOISE_FACTORS,
- 'r2': [],
- 'mse': [],
- }
-
- for noise_factor in NOISE_FACTORS:
- r2, mse = eval_r2_mse(
- evaluated_model=evaluated_model,
- dataset=dataset,
- noise_factor=noise_factor,
- )
+ if DRY_RUN:
+ return {
+ 'noise_factor': NOISE_FACTORS,
+ 'r2': [33 for x in range(len(NOISE_FACTORS))],
+ 'mse': [33 for x in range(len(NOISE_FACTORS))],
+ }
+ else:
+ samples = {
+ 'noise_factor': NOISE_FACTORS,
+ 'r2': [],
+ 'mse': [],
+ }
+
+ for noise_factor in NOISE_FACTORS:
+ r2, mse = eval_r2_mse(
+ evaluated_model=evaluated_model,
+ dataset=dataset,
+ noise_factor=noise_factor,
+ )
- samples['r2'].append(r2)
- samples['mse'].append(mse)
+ samples['r2'].append(r2)
+ samples['mse'].append(mse)
- append_to_report(report_key, samples)
+ append_to_report(report_key, samples)
- return pd.DataFrame(samples)
+ return pd.DataFrame(samples)
def evaluate_classification_model(
evaluated_model: RegularNetwork,
@@ -810,28 +817,36 @@ def evaluate_classification_model(
report_key: str,
is_binary_classification: bool,
)-> pd.DataFrame:
- samples = {
- 'noise_factor': NOISE_FACTORS,
- 'accuracy': [],
- 'f1': [],
- 'roc_auc': [],
- }
-
- for noise_factor in NOISE_FACTORS:
- accuracy, f1, roc_auc = eval_accuracy_f1_rocauc(
- evaluated_model=evaluated_model,
- dataset=dataset,
- noise_factor=noise_factor,
- is_binary_classification=is_binary_classification,
- )
+ if DRY_RUN:
+ return {
+ 'noise_factor': NOISE_FACTORS,
+ 'accuracy': [33 for x in range(len(NOISE_FACTORS))],
+ 'f1': [33 for x in range(len(NOISE_FACTORS))],
+ 'roc_auc': [33 for x in range(len(NOISE_FACTORS))],
+ }
+ else:
+ samples = {
+ 'noise_factor': NOISE_FACTORS,
+ 'accuracy': [],
+ 'f1': [],
+ 'roc_auc': [],
+ }
+
+ for noise_factor in NOISE_FACTORS:
+ accuracy, f1, roc_auc = eval_accuracy_f1_rocauc(
+ evaluated_model=evaluated_model,
+ dataset=dataset,
+ noise_factor=noise_factor,
+ is_binary_classification=is_binary_classification,
+ )
- samples['accuracy'].append(accuracy)
- samples['f1'].append(f1)
- samples['roc_auc'].append(roc_auc)
+ samples['accuracy'].append(accuracy)
+ samples['f1'].append(f1)
+ samples['roc_auc'].append(roc_auc)
- append_to_report(report_key, samples)
+ append_to_report(report_key, samples)
- return pd.DataFrame(samples)
+ return pd.DataFrame(samples)
def plot_evaluation_of_classification(
df: pd.DataFrame,
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment