{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "tM4LA2VUOg-J" }, "source": [ "# Squared SVM\n", "[![Slides](https://img.shields.io/badge/🦌-ReHLine-blueviolet)](https://rehline-python.readthedocs.io/en/latest/)\n", "\n", "Squared SVMs solve the following optimization problem:\n", "$$\n", " \\min_{\\mathbf{\\beta} \\in \\mathbb{R}^d} \\ C \\sum_{i=1}^n \\left( 1 - y_i \\mathbf{\\beta}^\\intercal \\mathbf{x}_i \\right)_+^2 + \\frac{1}{2} \\| \\mathbf{\\beta} \\|_2^2\n", "$$\n", "where $\\mathbf{x}_i \\in \\mathbb{R}^d$ is a feature vector, and $y_i \\in \\{-1, 1\\}$ is a binary label.\n", "\n", "> **Note.** Since the squared hinge loss is a plq function, we can optimize it using `rehline.plq_Ridge_Classifier`. \n", "> Moreover, this wrapper adapts the `plqERM_Ridge` into a classifier, compatible with the scikit-learn API.\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "rXs8JYXzTbJ5" }, "outputs": [], "source": [ "## install rehline\n", "%pip install rehline -q" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "id": "QvfFVk7WRUAb" }, "outputs": [], "source": [ "## set up plotting style\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "custom_palette = [\"#FFE4E1\", \"#3D325C\"]\n", "sns.set_palette(custom_palette)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "id": "w08Rlr8La4Mv" }, "outputs": [], "source": [ "## simulate data\n", "import numpy as np\n", "from sklearn.datasets import make_classification\n", "from sklearn.preprocessing import StandardScaler\n", "\n", "scaler = StandardScaler()\n", "\n", "n, d = 10000, 5\n", "X, y = make_classification(n_samples=n, n_features=d, random_state=42)\n", "y = 2 * y - 1\n", "X = scaler.fit_transform(X)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 80 }, "id": "MlOfn-UmRCuN", "outputId": "6d9bb00a-1727-46b2-a26f-933ff00d120e" }, "outputs": [ { "data": { "text/html": [ "
plq_Ridge_Classifier(loss={'name': 'squared SVM'})
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "plq_Ridge_Classifier(loss={'name': 'squared SVM'})" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## solve Squared SVM via `plq_Ridge_Classifier`\n", "from rehline import plq_Ridge_Classifier\n", "\n", "clf = plq_Ridge_Classifier(loss={\"name\": \"squared SVM\"}, C=1.0)\n", "clf.fit(X=X, y=y)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 451 }, "id": "mcbLDBYGRM4W", "outputId": "3ebc7403-eaa7-4ebb-a8de-f03d4cc822a7" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAOgpJREFUeJzt3XtYVWX+///XBgHxAKRyUAM0z3ii1JQxG1GEzJxM7WBmaGaNg5b6nTKbJhk7WNakpah9+pR2cuxjU2keQ0otRTPM8jzZaBgIbHMADwm4Wb8/GvevHWxQ3Oy9WT4f17Wvq7Xue6/1XlD66l73upfFMAxDAAAAJuXj6QIAAABqE2EHAACYGmEHAACYGmEHAACYGmEHAACYGmEHAACYGmEHAACYGmEHAACYGmEHAACYGmEHACQdPXpUFotFS5cu9XQpAFyMsAPAbs+ePRo5cqSio6NVv359tWzZUoMGDdL8+fM9XZpXOXr0qMaNG6c2bdqofv36ioiI0I033qiZM2dKkgoKClSvXj3dc889To9x6tQpBQYGavjw4ZKkpUuXymKxyGKx6IsvvqjQ3zAMRUZGymKx6JZbbqmdCwNMirADQJK0bds29ezZU998840mTJigBQsW6P7775ePj49efvllT5fnNQ4fPqxrr71WGzZs0KhRo7RgwQKlpKSoadOmev755yVJYWFhGjRokFauXKmzZ89WepwPPvhA586dqxCI6tevr2XLllXov3nzZv34448KCAhw/UUBJlfP0wUA8A7PPPOMgoODtXPnToWEhDi0FRQUeKaoi2AYhs6dO6fAwEC3nG/u3Lk6ffq0du/erejoaIe2X/+cRo8erfXr12vVqlW66667Khxn2bJlCg4O1pAhQxz233zzzVqxYoVeeeUV1atXz6F/jx49dOLECRdfEWB+jOwAkCR9//336ty5c4WgI/0yUvFrJSUlmjp1qkJDQ9W4cWP94Q9/0I8//iiLxaLU1FR7v7Fjx6pVq1YVjpeamiqLxeKwb8mSJRowYIDCwsIUEBCgmJgYLVq0qMJ3W7VqpVtuuUUbNmxQz549FRgYqFdffVWSVFhYqClTpigyMlIBAQFq27atnn/+eZWXlzsco7CwUGPHjlVwcLBCQkKUnJyswsLCi/45XX311RWCzm9/TrfddpsaNmxY6ShNQUGBMjIyNHLkyAojNaNGjdJPP/2k9PR0+77S0lK9//77uvvuuy+qRgCOCDsAJEnR0dHKysrS3r17q+17//33a968eUpMTNRzzz0nPz+/CiMUl2rRokWKjo7W448/rr///e+KjIzUn/70J6WlpVXoe+jQIY0aNUqDBg3Syy+/rNjYWJ09e1a///3v9c477+jee+/VK6+8or59+2rGjBmaNm2a/buGYejWW2/V22+/rXvuuUdPP/20fvzxRyUnJ19UndHR0Tp27Jg+/fTTKvs1bNhQt956qzZs2KCTJ086tL333nuy2WwaPXp0he+1atVKcXFx+sc//mHft27dOhUVFVU6QgTgIhgAYBjGJ598Yvj6+hq+vr5GXFyc8eijjxobNmwwSktLHfrt3r3bkGT86U9/cth/9913G5KMmTNn2vclJycb0dHRFc41c+ZM47d//Jw9e7ZCv6SkJOOaa65x2BcdHW1IMtavX++w/6mnnjIaNmxo/Otf/3LY/9hjjxm+vr5Gdna2YRiG8dFHHxmSjDlz5tj7nD9/3ujXr58hyViyZEmFOn5t7969RmBgoCHJiI2NNR5++GHjo48+Ms6cOVOh75o1awxJxquvvuqwv0+fPkbLli0Nm81m37dkyRJDkrFz505jwYIFRuPGje0/k9tvv92Ij4+3X/+QIUOqrBGAI0Z2AEiSBg0apMzMTP3hD3/QN998ozlz5igpKUktW7bUqlWr7P3Wrl0rSXrooYccvj9lypTLOv+v59wUFRXpxIkT+v3vf69///vfKioqcujbunVrJSUlOexbsWKF+vXrp6uuukonTpywfxISEmSz2bRlyxZ7/fXq1dPEiRPt3/X19dXkyZMvqs7OnTtr9+7duueee3T06FG9/PLLGjZsmMLDw/Xaa6859E1MTFRoaKjDrawjR45o+/btGjVqlHx8Kv8j+I477tDPP/+s1atX69SpU1q9ejW3sIDLwARlAHa9evXSBx98oNLSUn3zzTf68MMPNXfuXI0cOVK7d+9WTEyMfvjhB/n4+KhNmzYO3+3QocNlnXvr1q2aOXOmMjMzKzzBVFRUpODgYPt269atK3z/u+++07fffqvQ0NBKj39h8vAPP/yg5s2bq1GjRjWuv3379nr77bdls9m0f/9+rV69WnPmzNEDDzyg1q1bKyEhQZJUr1493XnnnVq4cKFycnLUsmVLe/Cp7BbWBaGhoUpISNCyZct09uxZ2Ww2jRw58qLrA+CIsAOgAn9/f/Xq1Uu9evVS+/btNW7cOK1YscK+jszF+u0k5AtsNpvD9vfff6+BAweqY8eOeumllxQZGSl/f3+tXbtWc+fOrTDBuLInr8rLyzVo0CA9+uijlZ6zffv2l1T7xfD19VXXrl3VtWtXxcXFKT4+Xu+++6497EjSPffcowULFugf//iH/vznP+sf//iHYmJiFBsbW+Wx7777bk2YMEF5eXkaPHhwpRPHAVwcwg6AKvXs2VOSdPz4cUm/TNAtLy/X999/7zAacujQoQrfveqqqyp9yumHH35w2P74449VUlKiVatWKSoqyr7/s88+u+g627Rpo9OnTzsEjcpER0crIyNDp0+fdhjdqaz+S/Hbn9MFvXv3Vps2bbRs2TINGjRI+/bt0zPPPFPt8W677TY9+OCD2r59u957773Lqg240jFnB4CkX4KFYRgV9l+Yo3Mh2AwePFiS9Morrzj0mzdvXoXvtmnTRkVFRfr222/t+44fP64PP/zQoZ+vr68kOZy/qKhIS5Ysuej677jjDmVmZmrDhg0V2goLC3X+/HlJv6xjc/78eYfH2m0220WvEv3555+rrKyswv7f/px+bfTo0fr66681c+ZMWSyWi5p/06hRIy1atEipqakaOnToRdUGoHKM7ACQJE2ePFlnz57Vbbfdpo4dO6q0tFTbtm3Te++9p1atWmncuHGSpNjYWI0aNUoLFy5UUVGRfve73ykjI0OHDx+ucMy77rpL06dP12233aaHHnpIZ8+e1aJFi9S+fXvt2rXL3i8xMVH+/v4aOnSoHnzwQZ0+fVqvvfaawsLCKoyUOPPII49o1apVuuWWWzR27Fj16NFDZ86c0Z49e/T+++/r6NGjatasmYYOHaq+ffvqscce09GjRxUTE6MPPvigwiRoZ55//nllZWVp+PDh6tatmyRp165deuutt9SkSZNKJ2rfc889mjVrllauXKm+fftWuvZQZS72cXgA1fD042AAvMO6deuM++67z+jYsaPRqFEjw9/f32jbtq0xefJkIz8/36Hvzz//bDz00ENG06ZNjYYNGxpDhw41jh07VuHRc8P45ZH2Ll26GP7+/kaHDh2Md955p9JHz1etWmV069bNqF+/vtGqVSvj+eefN9544w1DknHkyBF7v6oevT516pQxY8YMo23b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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import warnings\n", "\n", "import pandas as pd\n", "import seaborn as sns\n", "\n", "warnings.filterwarnings(\"ignore\", \"is_categorical_dtype\")\n", "warnings.filterwarnings(\"ignore\", \"use_inf_as_na\")\n", "\n", "score = clf.decision_function(X)\n", "df = pd.DataFrame({\"score\": score, \"y\": y})\n", "sns.histplot(df, x=\"score\", hue=\"y\").set_title(\"Squared SVM\")\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "UvbSX0zpTmBQ" }, "source": [ "## With Pipeline\n", "`plq_Ridge_Classifier` can be integrated into a scikit-learn Pipeline to streamline preprocessing including scaling." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "id": "1XPWQmcpSRYy" }, "outputs": [], "source": [ "## simulate data\n", "from sklearn.datasets import make_classification\n", "from sklearn.pipeline import Pipeline\n", "from sklearn.preprocessing import StandardScaler\n", "\n", "n, d = 10000, 5\n", "X, y = make_classification(n_samples=n, n_features=d, random_state=42)\n", "y = 2 * y - 1" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 155 }, "id": "Hu-ipK_n1_Br", "outputId": "8f82b4aa-1005-43e1-f118-f271092cb9a5" }, "outputs": [ { "data": { "text/html": [ "
Pipeline(steps=[('scaler', StandardScaler()),\n",
       "                ('clf', plq_Ridge_Classifier(loss={'name': 'squared SVM'}))])
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "Pipeline(steps=[('scaler', StandardScaler()),\n", " ('clf', plq_Ridge_Classifier(loss={'name': 'squared SVM'}))])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## solve Squared SVM via `plq_Ridge_Classifier`\n", "from rehline import plq_Ridge_Classifier\n", "\n", "pipe = Pipeline([(\"scaler\", StandardScaler()), (\"clf\", plq_Ridge_Classifier(loss={\"name\": \"squared SVM\"}, C=1.0))])\n", "pipe.fit(X, y)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 451 }, "id": "WXuTX7ok2Drw", "outputId": "f4f91f4a-fcf2-4fd1-aa0f-2a3667b924ff" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAOgpJREFUeJzt3XtYVWX+///XBgHxAKRyUAM0z3ii1JQxG1GEzJxM7WBmaGaNg5b6nTKbJhk7WNakpah9+pR2cuxjU2keQ0otRTPM8jzZaBgIbHMADwm4Wb8/GvevHWxQ3Oy9WT4f17Wvq7Xue6/1XlD66l73upfFMAxDAAAAJuXj6QIAAABqE2EHAACYGmEHAACYGmEHAACYGmEHAACYGmEHAACYGmEHAACYGmEHAACYGmEHAACYGmEHACQdPXpUFotFS5cu9XQpAFyMsAPAbs+ePRo5cqSio6NVv359tWzZUoMGDdL8+fM9XZpXOXr0qMaNG6c2bdqofv36ioiI0I033qiZM2dKkgoKClSvXj3dc889To9x6tQpBQYGavjw4ZKkpUuXymKxyGKx6IsvvqjQ3zAMRUZGymKx6JZbbqmdCwNMirADQJK0bds29ezZU998840mTJigBQsW6P7775ePj49efvllT5fnNQ4fPqxrr71WGzZs0KhRo7RgwQKlpKSoadOmev755yVJYWFhGjRokFauXKmzZ89WepwPPvhA586dqxCI6tevr2XLllXov3nzZv34448KCAhw/UUBJlfP0wUA8A7PPPOMgoODtXPnToWEhDi0FRQUeKaoi2AYhs6dO6fAwEC3nG/u3Lk6ffq0du/erejoaIe2X/+cRo8erfXr12vVqlW66667Khxn2bJlCg4O1pAhQxz233zzzVqxYoVeeeUV1atXz6F/jx49dOLECRdfEWB+jOwAkCR9//336ty5c4WgI/0yUvFrJSUlmjp1qkJDQ9W4cWP94Q9/0I8//iiLxaLU1FR7v7Fjx6pVq1YVjpeamiqLxeKwb8mSJRowYIDCwsIUEBCgmJgYLVq0qMJ3W7VqpVtuuUUbNmxQz549FRgYqFdffVWSVFhYqClTpigyMlIBAQFq27atnn/+eZWXlzsco7CwUGPHjlVwcLBCQkKUnJyswsLCi/45XX311RWCzm9/TrfddpsaNmxY6ShNQUGBMjIyNHLkyAojNaNGjdJPP/2k9PR0+77S0lK9//77uvvuuy+qRgCOCDsAJEnR0dHKysrS3r17q+17//33a968eUpMTNRzzz0nPz+/CiMUl2rRokWKjo7W448/rr///e+KjIzUn/70J6WlpVXoe+jQIY0aNUqDBg3Syy+/rNjYWJ09e1a///3v9c477+jee+/VK6+8or59+2rGjBmaNm2a/buGYejWW2/V22+/rXvuuUdPP/20fvzxRyUnJ19UndHR0Tp27Jg+/fTTKvs1bNhQt956qzZs2KCTJ086tL333nuy2WwaPXp0he+1atVKcXFx+sc//mHft27dOhUVFVU6QgTgIhgAYBjGJ598Yvj6+hq+vr5GXFyc8eijjxobNmwwSktLHfrt3r3bkGT86U9/cth/9913G5KMmTNn2vclJycb0dHRFc41c+ZM47d//Jw9e7ZCv6SkJOOaa65x2BcdHW1IMtavX++w/6mnnjIaNmxo/Otf/3LY/9hjjxm+vr5Gdna2YRiG8dFHHxmSjDlz5tj7nD9/3ujXr58hyViyZEmFOn5t7969RmBgoCHJiI2NNR5++GHjo48+Ms6cOVOh75o1awxJxquvvuqwv0+fPkbLli0Nm81m37dkyRJDkrFz505jwYIFRuPGje0/k9tvv92Ij4+3X/+QIUOqrBGAI0Z2AEiSBg0apMzMTP3hD3/QN998ozlz5igpKUktW7bUqlWr7P3Wrl0rSXrooYccvj9lypTLOv+v59wUFRXpxIkT+v3vf69///vfKioqcujbunVrJSUlOexbsWKF+vXrp6uuukonTpywfxISEmSz2bRlyxZ7/fXq1dPEiRPt3/X19dXkyZMvqs7OnTtr9+7duueee3T06FG9/PLLGjZsmMLDw/Xaa6859E1MTFRoaKjDrawjR45o+/btGjVqlHx8Kv8j+I477tDPP/+s1atX69SpU1q9ejW3sIDLwARlAHa9evXSBx98oNLSUn3zzTf68MMPNXfuXI0cOVK7d+9WTEyMfvjhB/n4+KhNmzYO3+3QocNlnXvr1q2aOXOmMjMzKzzBVFRUpODgYPt269atK3z/u+++07fffqvQ0NBKj39h8vAPP/yg5s2bq1GjRjWuv3379nr77bdls9m0f/9+rV69WnPmzNEDDzyg1q1bKyEhQZJUr1493XnnnVq4cKFycnLUsmVLe/Cp7BbWBaGhoUpISNCyZct09uxZ2Ww2jRw58qLrA+CIsAOgAn9/f/Xq1Uu9evVS+/btNW7cOK1YscK+jszF+u0k5AtsNpvD9vfff6+BAweqY8eOeumllxQZGSl/f3+tXbtWc+fOrTDBuLInr8rLyzVo0CA9+uijlZ6zffv2l1T7xfD19VXXrl3VtWtXxcXFKT4+Xu+++6497EjSPffcowULFugf//iH/vznP+sf//iHYmJiFBsbW+Wx7777bk2YMEF5eXkaPHhwpRPHAVwcwg6AKvXs2VOSdPz4cUm/TNAtLy/X999/7zAacujQoQrfveqqqyp9yumHH35w2P74449VUlKiVatWKSoqyr7/s88+u+g627Rpo9OnTzsEjcpER0crIyNDp0+fdhjdqaz+S/Hbn9MFvXv3Vps2bbRs2TINGjRI+/bt0zPPPFPt8W677TY9+OCD2r59u957773Lqg240jFnB4CkX4KFYRgV9l+Yo3Mh2AwePFiS9Morrzj0mzdvXoXvtmnTRkVFRfr222/t+44fP64PP/zQoZ+vr68kOZy/qKhIS5Ysuej677jjDmVmZmrDhg0V2goLC3X+/HlJv6xjc/78eYfH2m0220WvEv3555+rrKyswv7f/px+bfTo0fr66681c+ZMWSyWi5p/06hRIy1atEipqakaOnToRdUGoHKM7ACQJE2ePFlnz57Vbbfdpo4dO6q0tFTbtm3Te++9p1atWmncuHGSpNjYWI0aNUoLFy5UUVGRfve73ykjI0OHDx+ucMy77rpL06dP12233aaHHnpIZ8+e1aJFi9S+fXvt2rXL3i8xMVH+/v4aOnSoHnzwQZ0+fVqvvfaawsLCKoyUOPPII49o1apVuuWWWzR27Fj16NFDZ86c0Z49e/T+++/r6NGjatasmYYOHaq+ffvqscce09GjRxUTE6MPPvigwiRoZ55//nllZWVp+PDh6tatmyRp165deuutt9SkSZNKJ2rfc889mjVrllauXKm+fftWuvZQZS72cXgA1fD042AAvMO6deuM++67z+jYsaPRqFEjw9/f32jbtq0xefJkIz8/36Hvzz//bDz00ENG06ZNjYYNGxpDhw41jh07VuHRc8P45ZH2Ll26GP7+/kaHDh2Md955p9JHz1etWmV069bNqF+/vtGqVSvj+eefN9544w1DknHkyBF7v6oevT516pQxY8YMo23b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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "## visualization\n", "import warnings\n", "\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import seaborn as sns\n", "\n", "warnings.filterwarnings(\"ignore\", \"is_categorical_dtype\")\n", "warnings.filterwarnings(\"ignore\", \"use_inf_as_na\")\n", "\n", "score = pipe.decision_function(X)\n", "df = pd.DataFrame({\"score\": score, \"y\": y})\n", "sns.histplot(df, x=\"score\", hue=\"y\").set_title(\"Squared SVM\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "kPvI0i7ITulZ" }, "source": [ "## Hyperparameter Tuning with GridSearchCV\n", "\n", "Due to its compatibility with the scikit-learn API, `GridSearchCV` can be applied to determine the optimal hyperparameters for the ReHLine model." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "TtU2SbVUTuHO", "outputId": "98f11567-7f4b-4093-c7d3-d6e1d7e74a2c" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Best Parameters: {'clf__C': 0.1}\n", "Best CV Accuracy: 0.8913\n" ] } ], "source": [ "from sklearn.exceptions import ConvergenceWarning\n", "from sklearn.model_selection import GridSearchCV\n", "\n", "warnings.filterwarnings(\"ignore\", category=ConvergenceWarning)\n", "\n", "# Define the parameter grid to search\n", "param_grid = {\"clf__C\": [0.1, 1.0, 10.0]}\n", "\n", "# Create the GridSearchCV object\n", "grid_search = GridSearchCV(pipe, param_grid, cv=5)\n", "grid_search.fit(X, y)\n", "\n", "# Print the best parameters and score\n", "print(f\"Best Parameters: {grid_search.best_params_}\")\n", "print(f\"Best CV Accuracy: {grid_search.best_score_:.4f}\")" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 451 }, "id": "VqZ_R3h9T0kS", "outputId": "37f42f06-9178-4464-83ff-ba24cdf7412e" }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import warnings\n", "\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import seaborn as sns\n", "\n", "warnings.filterwarnings(\"ignore\", \"is_categorical_dtype\")\n", "warnings.filterwarnings(\"ignore\", \"use_inf_as_na\")\n", "\n", "score = grid_search.decision_function(X)\n", "df = pd.DataFrame({\"score\": score, \"y\": y})\n", "sns.histplot(data=df, x=\"score\", hue=\"y\").set_title(\"Squared SVM (C=0.1)\")\n", "plt.show()" ] } ], "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 0 }