{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "H4yv6bSBpyM7" }, "source": [ "# Warm starting" ] }, { "cell_type": "markdown", "metadata": { "id": "xHMXYL9ebbgA" }, "source": [ "[![Slides](https://img.shields.io/badge/🦌-ReHLine-blueviolet)](https://rehline-python.readthedocs.io/en/latest/)\n", "\n", "Now we use the dataset \"madelon\" and compare the time executed with and without `warm-start` technique\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "BUs9CUEutZTf" }, "outputs": [], "source": [ "import time\n", "\n", "import numpy as np\n", "from matplotlib import pyplot as plt\n", "from sklearn.preprocessing import StandardScaler\n", "\n", "from rehline import plqERM_Ridge_path_sol" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "HczbGdJrAGEE" }, "outputs": [], "source": [ "import openml\n", "\n", "## load the dataset\n", "dataset = openml.datasets.get_dataset(1485)\n", "\n", "X, y, _, _ = dataset.get_data(target=dataset.default_target_attribute)\n", "\n", "y = np.where(y == \"2\", 1, -1)\n", "scaler = StandardScaler()\n", "X = scaler.fit_transform(X)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "id": "p-F6g4M9Fqdg" }, "outputs": [], "source": [ "## define the loss function and value of Cs\n", "loss = {\"name\": \"svm\"}\n", "Cs = np.logspace(0, 2, 10)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "UM9syQt4tIxR", "outputId": "eb1751ef-3f3e-4302-cdda-1201686e7891" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Running solver WITHOUT warm start...\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.11/dist-packages/rehline/_class.py:419: ConvergenceWarning: ReHLine failed to converge, increase the number of iterations: `max_iter`.\n", " warnings.warn(\n", "/usr/local/lib/python3.11/dist-packages/rehline/_class.py:419: ConvergenceWarning: ReHLine failed to converge, increase the number of iterations: `max_iter`.\n", " warnings.warn(\n", "/usr/local/lib/python3.11/dist-packages/rehline/_class.py:419: ConvergenceWarning: ReHLine failed to converge, increase the number of iterations: `max_iter`.\n", " warnings.warn(\n", "/usr/local/lib/python3.11/dist-packages/rehline/_class.py:419: ConvergenceWarning: ReHLine failed to converge, increase the number of iterations: `max_iter`.\n", " warnings.warn(\n", "/usr/local/lib/python3.11/dist-packages/rehline/_class.py:419: ConvergenceWarning: ReHLine failed to converge, increase the number of iterations: `max_iter`.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "PLQ ERM Path Solution Results\n", "==========================================================================================\n", "C Value Iterations Time (s) Loss L2 Norm \n", "------------------------------------------------------------------------------------------\n", "1 118636 39.936846 1594.670300 2.543800 \n", "1.668 192306 64.421898 1594.737600 2.679600 \n", "2.783 485638 151.079622 1594.824000 2.742100 \n", "4.642 700475 211.876613 1594.906600 2.783700 \n", "7.743 1000000 299.254036 1595.525600 2.815700 \n", "12.92 1000000 304.475502 1596.999200 2.878100 \n", "21.54 1000000 312.734514 1629.704900 2.913800 \n", "35.94 1000000 323.737584 1631.008400 2.961700 \n", "59.95 1000000 336.862036 1606.801500 2.892900 \n", "100 1000000 363.869178 1605.223100 2.783600 \n", "==========================================================================================\n", "Total Time 2408.248485 sec\n", "Avg Time/Iter0.000321 sec\n", "==========================================================================================\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.11/dist-packages/rehline/_class.py:419: ConvergenceWarning: ReHLine failed to converge, increase the number of iterations: `max_iter`.\n", " warnings.warn(\n" ] } ], "source": [ "## we first try solver without warm start\n", "\n", "print(\"\\nRunning solver WITHOUT warm start...\")\n", "start_no_warm = time.time()\n", "Cs_no_warm, times_no_warm, n_iters_no_warm, loss_no_warm, L2_no_warm, coefs_no_warm = plqERM_Ridge_path_sol(\n", " X,\n", " y,\n", " loss=loss,\n", " Cs=Cs,\n", " max_iter=1000000,\n", " tol=1e-4,\n", " verbose=1,\n", " warm_start=False,\n", " return_time=True,\n", ")\n", "end_no_warm = time.time()\n", "total_time_no_warm = end_no_warm - start_no_warm" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "-zBM10_tte6j", "outputId": "1a543c60-354f-428b-b6c3-3f45009b15b4" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Running solver WITH warm start...\n", "\n", "PLQ ERM Path Solution Results\n", "==========================================================================================\n", "C Value Iterations Time (s) Loss L2 Norm \n", "------------------------------------------------------------------------------------------\n", "1 118636 40.181799 1594.670300 2.543800 \n", "1.668 104841 31.897681 1594.740700 2.682700 \n", "2.783 202547 61.151798 1594.831900 2.746200 \n", "4.642 126871 37.826569 1594.896400 2.779400 \n", "7.743 248854 73.859064 1595.001200 2.822700 \n", "12.92 285847 85.796846 1595.117000 2.869000 \n", "21.54 465084 139.253013 1595.146600 2.879800 \n", "35.94 190967 56.896123 1595.165800 2.885900 \n", "59.95 399966 118.717955 1595.165600 2.886400 \n", "100 353164 107.564119 1595.166100 2.886800 \n", "==========================================================================================\n", "Total Time 753.145267 sec\n", "Avg Time/Iter0.000302 sec\n", "==========================================================================================\n" ] } ], "source": [ "## then try solver with warm start\n", "\n", "print(\"\\nRunning solver WITH warm start...\")\n", "start_warm = time.time()\n", "Cs_warm, times_warm, n_iters_warm, loss_warm, L2_warm, coefs_warm = plqERM_Ridge_path_sol(\n", " X,\n", " y,\n", " loss=loss,\n", " Cs=Cs,\n", " max_iter=1000000,\n", " tol=1e-4,\n", " verbose=1,\n", " warm_start=True,\n", " return_time=True,\n", ")\n", "end_warm = time.time()\n", "total_time_warm = end_warm - start_warm" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "21qxH4-5tmUo", "outputId": "9c418873-606f-4880-94ac-3d1c0d985154" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Comparison: Warm Start vs. No Warm Start\n", "==========================================================================================\n", "C Value Iter_without_WS Time_without_WS Iter_WS Time_WS \n", "------------------------------------------------------------------------------------------\n", "1 118636 39.936846 118636 40.181799 \n", "1.668 192306 64.421898 104841 31.897681 \n", "2.783 485638 151.079622 202547 61.151798 \n", "4.642 700475 211.876613 126871 37.826569 \n", "7.743 1000000 299.254036 248854 73.859064 \n", "12.92 1000000 304.475502 285847 85.796846 \n", "21.54 1000000 312.734514 465084 139.253013 \n", "35.94 1000000 323.737584 190967 56.896123 \n", "59.95 1000000 336.862036 399966 118.717955 \n", "100 1000000 363.869178 353164 107.564119 \n", "==========================================================================================\n", "Total Time (without WS) 2408.250201 sec\n", "Total Time (WS) 753.150022 sec\n", "Speedup with Warm Start 3.20x Faster\n", "==========================================================================================\n" ] } ], "source": [ "## print the comparison and summary\n", "\n", "print(\"\\nComparison: Warm Start vs. No Warm Start\")\n", "print(\"=\" * 90)\n", "print(f\"{'C Value':<12}{'Iter_without_WS':<18}{'Time_without_WS':<20}{'Iter_WS':<18}{'Time_WS':<15}\")\n", "print(\"-\" * 90)\n", "\n", "for C, iters_nw, time_nw, iters_w, time_w in zip(Cs, n_iters_no_warm, times_no_warm, n_iters_warm, times_warm):\n", " print(f\"{C:<12.4g}{iters_nw:<18}{time_nw:<20.6f}{iters_w:<18}{time_w:<15.6f}\")\n", "\n", "print(\"=\" * 90)\n", "print(f\"{'Total Time (without WS)':<30}{total_time_no_warm:.6f} sec\")\n", "print(f\"{'Total Time (WS)':<30}{total_time_warm:.6f} sec\")\n", "print(f\"{'Speedup with Warm Start':<30}{total_time_no_warm / total_time_warm:.2f}x Faster\")\n", "print(\"=\" * 90)" ] }, { "cell_type": "markdown", "metadata": { "id": "kSmCKADsn5Du" }, "source": [ "## Time comparison\n", "The above summary table shows the `warm-start` solver is **3.20 times faster** than the `cold-start` solver.\n", "\n", "The warm-start solver also consistently reaches optimal results within the maximum iteration limit, which the cold-start solver doesn't. This means the actual speedup from warm-starting is likely even higher." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 569 }, "id": "QWMjBe7gt1cv", "outputId": "9759a5c8-e5ff-432f-b2a3-0f0cae9b568b" }, "outputs": [ { "data": { "image/png": "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hR9Ki1atWvHVV18RGxsLkKv3LseWLVvYvXs3X331FcOHD7duv9qhAPkdPz81a9akTZs2fP/994wdO5ZffvmFG2+8EVdXV5t2Li4uDBgwgAEDBmA2m3nggQf4+OOPee6556y97oWV03s7efLkPBPm8PBwdu3alWv7zp07rfsvJ6eqQExMDCtWrLBWe8jRvn17vv/+e+t1XJzc/vTTT4wYMYL//e9/1m1paWkkJCRc1TWWlFq1alGpUiXr5w3y/0z89NNP1KpVi19++cWmzfPPP1/g813t502kIlHPrUgF0qpVK9zc3Jg5cyZHjx616bl1dXWlZcuWfPDBB5w9e9Ym0cjp5bq4VysxMZEvvvii5ILPQ2pqKqtWrcpz3/z58wGsX6vn1D29NDnK69oMw7jqcluenp4FGkJxsdtuu43Vq1fz+eefc/LkSZshCQCnTp2yee3g4GCtZpFTJi0zM5OdO3faJFVX45FHHsHPz4+pU6fm2tevXz/Wrl1r8zM+e/Ysn3zyCTVq1CAiIuKKx+/YsSMnTpzgiy++oG3btja93u3bt2fXrl38/vvvBAQEWIc7gOXf5dJe1Pfee4/s7OzCXGaRWbNmjU01hhxr167l1KlTNsM48vtM5PWZW7NmTb6f5bzk93kWEfXcilQoLi4utG7dmr///htXV1ciIyNt9rdv397aU3ZxcturVy9rD+J9991HSkoKn376KYGBgYVOqopCamoq7du3p127dvTp04ewsDASEhL47bff+Pvvv7nxxhtp0aIFALVr18bPz4+PPvoIb29vPD09adu2LQ0aNKB27do89thjHD16FB8fH37++ecCjb28WGRkJN9//z0TJkygdevWeHl55bnM7cVuvfVWHnvsMR577DH8/f3p0aOHzf57772X06dPc9111xEaGsrBgwd57733aN68uTURPHr0KA0bNmTEiBGFqnPq6+vLww8/nOfQhKeeeopvv/2Wvn378tBDD+Hv789XX33F/v37+fnnnws0PCPnc7Rq1SomT55ss69du3aYTCZWr17NgAEDbHojr7/+embMmIGvry8RERGsWrWKxYsXW0vT2cuMGTOYOXMmN910E5GRkbi4uLBjxw4+//xz3NzcrOPQIf/PxPXXX88vv/zCTTfdRP/+/dm/fz8fffQRERERNsv3Xk5+n2eNzxVBpcBEKpqJEycagNG+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P3R89a9i7ay7WhqWUEgRkxbmu69b/Sp8cVcb1u4/navH9mIGEJeYxtr9p4mqHQBAx1eXcPpsRq62B17pX6g4b7rpJpo3b87zzz+f59jXN998k+7du/Pcc88BUK9ePbZv387rr7/OyJEj8zxmt27dOHv2LOvWrSMqKoqlS5fy+OOP07FjR0aMGEFaWhqGYbB27VruvfdegFxDEz755BP8/PxYtmwZ119/vXX70KFDueuuu2zams1mPv/8c7y9vYmIiKBbt27s2rWLefPm4eDgQP369Xn11VdZsmQJbdu2zTPmTz75hGHDhhEQEECzZs3o2LEjt9xyCx06dADA398fR0dHvL29CQ4Otr6vWrVqPPbYY9bX48aNY+HChfzwww+0adPGur1u3bq89tpruc6bs1SuiIhIWZfzbfSlnXZxiWmM+WYD0+9oSZ/G9l89Uz23xSg+Of/EtjDtCuvVV1/lq6++YseOHbn27dixw5rg5ejQoQN79uyxLmBxqTp16hAaGsrSpUtJSkpi48aNdOnShZCQEKpXr86qVaus421zem6PHz/OqFGjqFu3Lr6+vvj4+JCSksKhQ4dsjt2qVatc56tRowbe3t7W10FBQURERNis7hYUFGRdljYvnTt35r///uPPP//klltuYdu2bXTq1IkXXngh3/eAZRGPF154gSZNmuDv74+XlxcLFy7MFXdkZORljyMiIlKWFeTb6CmXfBttL+q5LaTtU3vnu8/h/HjNQG+3Ah3r4nYrnux2bYHloXPnzvTu3ZuJEyfm2xt7tbp27cqSJUto2rQpdevWJTAwEMA6NMEwDOrUqUNYWBgAI0aM4NSpU7zzzjuEh4fj6upKVFQUGRm2vdSenp65znXppDKTyZTnNrPZfNmYnZ2d6dSpE506deLJJ5/kxRdfZOrUqTz55JP5TgB7/fXXeeedd3j77bdp0qQJnp6ePPLIIwWKW0REpLwoyLfRsZd8G20vSm4LycPlyj+6NjX9CfF1Iy4xLc+/dExAsK8bbWr6X9VxC+OVV16hefPm1K9f32Z7w4YNiYmJsdkWExNDvXr1cHR0zPd43bp146GHHiIiIsJaHQEsifSnn36KYRjWXtucY3744Yf069cPgMOHD3Py5MkiuLLCi4iIICsri7S0NFxcXHBxccnVWx0TE8PAgQO54447AMsQid27dxMREXHF4zs7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586dmT9/PmvXrmXMmDH5vt/FxYXs7KIbuHM18ezcuZNTp07xyiuvEBZmqSTxzz//FFkshWEymWjQoAErV64EsA7buPRnFBMTw4cffki/fv0AOHz4MCdPnrzi8fM7noiIVCw7YpP4cOk+Xr6pMd5uzphMJt67vQWVvVwr9ESxgrJrtYT4+HiGDx9O/fr16d69O+vWrWPhwoX07NkTFxcXFi9eTK9evWjQoAGPPvoogwYNYvbs2db3Ozo6MmfOHBwdHYmKiuKOO+5g+PDhTJ061Y5XVXp069aNFStWsGnTJrp06WLd3qVLFz7++GMyMjKsM/TzUqNGDVJSUvjzzz85efJkgce6FEU81atXx8XFhffee4///vuPP/74gxdeeOGazn81Nm3axMCBA/npp5/Yvn07e/fu5bPPPuPzzz9n4MCBAAQGBuLu7s6CBQs4fvw4iYmJANStW5cZM2awY8cO1qxZw7Bhw6zjcy8nPDwck8nEnDlzOHHiBCkpKcV6jSIiUrocSzjHYz/+S793/2b2v8f4ZPl/1n1h/h5KbAvIrj23n332Wb77wsLCWLZs2RWPER4ezrx584oyrKLjEWCpY3u5cmBOrpZ2xaBbt26cO3eOBg0a2FSV6NKlC8nJydYSXflp3749999/P7fddhunTp3i+eeftykHVpzxVKlShS+//JKnn36ad999l5YtW/LGG29www03FPr8VyM0NJQaNWowZcoU62INOa/Hjx8PWMb2vvvuu0ydOpVJkybRqVMnli5dymeffcbo0aNp2bIlYWFhvPzyyzz22GNXPGe1atWYMmUKTz31FHfddRfDhw/nyy+/LOYrFRERe0s8l8n0pfv4ImY/6ecrIPRvGsKglqF2jqxsMhmGYdg7CHtLSkrC19eXxMTEPCeU7d+/n5o1axZu8k7C4Vx1bM2GwdmzKXh6euHgWblIF3CQ8u+aP5NSIWRmZjJv3jz69eunMbcipdgXMft55889JKRayly1renPxH4NaR7mZ9/ArsAe95jL5WsXK3UTysodv7DcyavZTHZSEvj4wGUmDomIiEj5tuVIIgmpmdQN9OKpvg24rkFghVoqtzgouRUREREpISv3niS0kgfVAyzlHyf0qkebmv7cEhmKk6M6vIqCfooiIiIixWxnXBIjv1jL0P9bw6sLd1q3h1byYEib6kpsi5B6bkVERESK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kcp2x5czDh+fwY2lpqYawFXLwIED7ce8/fbbRmxsrOHt7W20atXKWLNmjfMCFpE7jsoZEalsd3o5YzEMw3BCTi0iIiIiUuHU5lZERERE3IaSWxERERFxG0puRURERMRtKLkVEREREbeh5FZERERE3IaSWxERERFxG0puRURERMRtKLkVEREREbeh5FZEqownn3ySXr163fZ15syZQ0hIyG1f50YsFguLFy+u9PuIiLgTJbciUqmefPJJLBYLFosFLy8vateuzdixY8nPz3d2aLfsscceIysrq8Ku9+KLL5KUlHTV9sOHD9O9e/cKu09Z5syZY/98rFYrtWrVYtCgQRw9erRS71uZOnbsyIgRIyr1Hrm5uTz//PM0aNAAX19fIiMjSUlJ4YsvvkATf4o4l6ezAxAR99etWzc+/PBDioqK2LhxIwMHDsRisfDqq686O7SbVlRUhJ+fH35+fpV+r8jIyEq/B0BQUBA7d+7EZrOxZcsWBg0axKFDh1i+fPktXa+oqAgvL68KjtLxCgsL8fb2vmr76dOnSU5O5syZM7z88su0bNkST09PVq1axdixY+ncubNDavZFpGyquRWRSufj40NkZCQxMTH06tWLlJQUvv76a/t+m83GpEmTqF27Nn5+fiQmJrJw4cJS1/jHP/5B3bp18fX1pVOnTsydOxeLxcLp06eBsms/p06dSnx8/DXjWrZsGcnJyYSEhBAaGspDDz1Edna2ff/evXuxWCwsWLCADh064OvryyeffHJVs4T4+Hh77eeVyyXjxo2jXr16+Pv7U6dOHV544QWKiooAs+Z04sSJbNmyxX7enDlzgKubJWzdupXOnTvj5+dHaGgoQ4YMIS8vz77/UrOL119/naioKEJDQ3nmmWfs97oWi8VCZGQk0dHRdO/enWeffZYVK1Zw4cKFW35HJ06coF+/ftSsWRN/f3+aNGnCvHnzSt23Y8eODB8+nBEjRlC9enUiIiKYNWsW586dY9CgQQQGBnLPPfewdOnSUudlZmbSvXt3qlWrRkREBAMGDOD48eP2d7Bq1SqmTZtmf5979+694XmX4hk2bBgjRowgLCyMrl27lvm+xo8fz969e1m7di0DBw4kISGBevXq8dRTT7F582aqVat23fctIpVLya2IOFRmZibp6emlasQmTZrERx99xIwZM9i2bRsjR46kf//+rFq1CoA9e/bQp08fevXqxZYtWxg6dCjPP//8bcdy7tw5Ro0axYYNG1i5ciVWq5VHHnkEm81W6rg//OEPPPfcc2zfvr3MhGf9+vUcPnyYw4cPc+DAAVq3bk27du3s+wMDA5kzZw4//PAD06ZNY9asWUyZMgUwmziMHj2aRo0a2a/x2GOPlRlr165dqV69OuvXr+fzzz9nxYoVDBs2rNRxqampZGdnk5qayty5c5kzZ449WS4vPz8/bDYbxcXFt/yO8vPzad68OUuWLCEzM5MhQ4YwYMAA1q1bV+q8uXPnEhYWxrp16xg+fDhPP/00ffv2pW3btmzatIkHH3yQAQMGcP78ecCsNe3cuTPNmjVjw4YNLFu2jJycHH71q18BMG3aNNq0acNTTz1lf58xMTE3PO/KeLy9vUlLS2PGjBlXvRubzcb8+fN54okniI6Ovmp/tWrV8PTUl6IiTmWIiFSigQMHGh4eHkZAQIDh4+NjAIbVajUWLlxoGIZh5OfnG/7+/kZ6enqp8wYPHmz069fPMAzDGDdunNG4ceNS+59//nkDME6dOmUYhmFMmDDBSExMLHXMlClTjLi4uFKxPPzww9eM9dixYwZgbN261TAMw9izZ48BGFOnTi113IcffmgEBweXeY1nn33WiIuLM44ePXrN+0yePNlo3ry5fb2s2A3DMABj0aJFhmEYxsyZM43q1asbeXl59v1LliwxrFarceTIEfvzxcXFGcXFxfZj+vbtazz22GPXjOXnz5KVlWXUq1fPaNGiRZnHl/cdleWXv/ylMXr0aPt6hw4djOTkZPt6cXGxERAQYAwYMMC+7fDhwwZgZGRkGIZhGC+99JLx4IMPlrru/v37DcDYuXOn/brPPfdcqWPKe16zZs2u+ww5OTkGYLz55ps3fF4RcQ79eSkila5Tp0689957nDt3jilTpuDp6Unv3r0B2L17N+fPn6dLly6lziksLKRZs2YA7Ny5k5YtW5ba36pVq9uOa9euXfz5z39m7dq1HD9+3F4buW/fPho3bmw/rkWLFuW63syZM5k9ezbp6emEh4fbty9YsIC33nqL7Oxs8vLyKC4uJigo6KZi3b59O4mJiQQEBNi33X///dhsNnbu3ElERAQAjRo1wsPDw35MVFQUW7duve61z5w5Q7Vq1bDZbOTn55OcnMz7778P3Po7Kikp4a9//SufffYZBw8epLCwkIKCAvz9/Usd17RpU/u/PTw8CA0NpUmTJvZtl57rUge3LVu2kJqaWuZX/9nZ2dSrV6/MZyzvec2bN7/GWzIZ6iwm4vKU3IpIpQsICOCee+4B4IMPPiAxMZHZs2czePBge5vRJUuWULNmzVLn+fj4lPseVqv1qsTjRm1Ne/ToQVxcHLNmzSI6OhqbzUbjxo0pLCy8Kv4bSU1NZfjw4cybN69UwpaRkcETTzzBxIkT6dq1K8HBwcyfP5833nij3M92M37ekctisVzVhODnAgMD2bRpE1arlaioqFKd5W71HU2ePJlp06YxdepUmjRpQkBAACNGjLjqvLLivXLbpbbLl54hLy+PHj16lNkZMSoq6prPWN7zbvRZh4eHExISwo4dO657nIg4j5JbEXEoq9XK+PHjGTVqFI8//jgJCQn4+Piwb98+OnToUOY59evX58svvyy1bf369aXWw8PDOXLkCIZh2BOizZs3XzOOEydOsHPnTmbNmmVvH7t69epbeqbdu3fTp08fxo8fz6OPPlpqX3p6OnFxcaXaCP/000+ljvH29qakpOS692jYsCFz5szh3Llz9gQsLS0Nq9VK/fr1bynuS6xWq/2PjyvdzjtKS0vj4Ycfpn///oCZnGZlZZGQkHBbsd577738/e9/Jz4+/pptW8t6n+U5rzysViu//vWv+fjjj5kwYcJV7W7z8vLw9fVVu1sRJ1KHMhFxuL59++Lh4cH06dMJDAxkzJgxjBw5krlz55Kdnc2mTZt4++23mTt3LgBDhw5lx44djBs3jqysLD777LNSIwqA2dP92LFjvPbaa2RnZzN9+vSretlfqXr16oSGhjJz5kx2797NN998w6hRo276WS5cuECPHj1o1qwZQ4YM4ciRI/YFoG7duuzbt4/58+eTnZ3NW2+9xaJFi0pdIz4+nj179rB582aOHz9OQUHBVfd54okn8PX1ZeDAgWRmZtprigcMGGD/6r6i3c47qlu3Ll9//TXp6els376doUOHkpOTc9sxPfPMM5w8eZJ+/fqxfv16srOzWb58OYMGDbIntPHx8axdu5a9e/fam1KU57zyeuWVV4iJieG+++7jo48+4ocffmDXrl188MEHNGvWrNQIFiLieEpuRcThPD09GTZsGK+99hrnzp3jpZde4oUXXmDSpEk0bNiQbt26sWTJEmrXrg1A7dq1WbhwIV988QVNmzblvffes9eEXmq60LBhQ959912mT59OYmIi69atY8yYMdeMwWq1Mn/+fDZu3Ejjxo0ZOXIkkydPvulnycnJYceOHaxcuZLo6GiioqLsC0DPnj0ZOXIkw4YNIykpifT0dF544YVS1+jduzfdunWjU6dOhIeHXzVkFoC/vz/Lly/n5MmTtGzZkj59+vDAAw/wzjvv3HTM5XU77+hPf/oT9957L127dqVjx45ERkZWyOxw0dHRpKWlUVJSwoMPPkiTJk0YMWIEISEhWK3mr7QxY8bg4eFBQkIC4eHh7Nu3r1znlVeNGjVYs2YN/fv35+WXX6ZZs2a0a9eOefPmMXnyZIKDg2/7OUXk1lkMtY4XkTvQK6+8wowZM9i/f7+zQxEREReiRkEickd49913admyJaGhoaSlpTF58uSrxngVERFRcisid4Rdu3bx8ssvc/LkSWJjYxk9ejR//OMfnR2WiIi4GDVLEBERERG3oQ5lIiIiIuI2lNyKiIiIiNtQcisiIiIibkPJrYiIiIi4DSW3IiIiIuI2lNyKiIiIiNtQcisiIiIibkPJrYiIiIi4DSW3IiIiIuI2/h8AOcZaq4Zv5gAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "## visualize the time used for each solver\n", "\n", "plt.figure(figsize=(8, 6))\n", "plt.plot(Cs, times_no_warm, label=\"No Warm Start\", marker=\"o\", linestyle=\"--\")\n", "plt.plot(Cs, times_warm, label=\"With Warm Start\", marker=\"s\", linestyle=\"-\")\n", "plt.xscale(\"log\")\n", "plt.xlabel(\"Regularization Parameter C\")\n", "plt.ylabel(\"Time (seconds)\")\n", "plt.title(\"Warm Start vs. No Warm Start\")\n", "plt.legend()\n", "plt.grid(True)\n", "plt.show()" ] } ], "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 0 }