diff --git a/lab-svm.ipynb b/lab-svm.ipynb index bbbfd6b..eccc4dd 100644 --- a/lab-svm.ipynb +++ b/lab-svm.ipynb @@ -44,30 +44,7 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#!pip install scikit-learn==0.23.1" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import piplite\n", - "await piplite.install(['pandas'])\n", - "await piplite.install(['matplotlib'])\n", - "await piplite.install(['numpy'])\n", - "await piplite.install(['scikit-learn'])\n", - "await piplite.install(['scipy'])\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, + "execution_count": 146, "metadata": {}, "outputs": [], "source": [ @@ -83,17 +60,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 147, "metadata": {}, "outputs": [], "source": [ - "from pyodide.http import pyfetch\n", + "import requests\n", "\n", - "async def download(url, filename):\n", - " response = await pyfetch(url)\n", - " if response.status == 200:\n", + "def download(url, filename):\n", + " response = requests.get(url)\n", + " if response.status_code == 200:\n", " with open(filename, \"wb\") as f:\n", - " f.write(await response.bytes())\n" + " f.write(response.content)\n" ] }, { @@ -131,7 +108,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 148, "metadata": { "button": false, "new_sheet": false, @@ -160,16 +137,16 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 149, "metadata": {}, "outputs": [], "source": [ - "await download(path, \"cell_samples.csv\")" + "download(path, \"cell_samples.csv\")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 150, "metadata": { "button": false, "new_sheet": false, @@ -177,7 +154,137 @@ "read_only": false } }, - "outputs": [], + "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", + "
IDClumpUnifSizeUnifShapeMargAdhSingEpiSizeBareNucBlandChromNormNuclMitClass
010000255111213112
1100294554457103212
210154253111223112
310162776881343712
410170234113213112
\n", + "
" + ], + "text/plain": [ + " ID Clump UnifSize UnifShape MargAdh SingEpiSize BareNuc \\\n", + "0 1000025 5 1 1 1 2 1 \n", + "1 1002945 5 4 4 5 7 10 \n", + "2 1015425 3 1 1 1 2 2 \n", + "3 1016277 6 8 8 1 3 4 \n", + "4 1017023 4 1 1 3 2 1 \n", + "\n", + " BlandChrom NormNucl Mit Class \n", + "0 3 1 1 2 \n", + "1 3 2 1 2 \n", + "2 3 1 1 2 \n", + "3 3 7 1 2 \n", + "4 3 1 1 2 " + ] + }, + "execution_count": 150, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "cell_df = pd.read_csv(\"cell_samples.csv\")\n", "cell_df.head()" @@ -196,9 +303,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 151, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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Pt73yaZ2ZaFDktTgZcmSJXZHw1EXX3yxNW3aNLtjdGj/8z//Y5111llWly5drEGDBlmLFy+2O1KHVV1dbU2bNs3q16+fFRERYZ1++unWf/7nf1qHDh2yO1qHsHr16ga3GTfddJNlWZZVU1NjzZ492+rdu7fVpUsXa8yYMdbmzZuDko3vkQEAAMbiHBkAAGAsigwAADAWRQYAABiLIgMAAIxFkQEAAMaiyAAAAGNRZAAAgLEoMgAAwFgUGQAhxeVy6c0337Q7BgBDUGQABNXOnTt111136fTTT1eXLl2UkJCgyy+/3O8H5wCgufjRSABBU1paqlGjRikmJka/+93vdPbZZ+vw4cPyeDyaPHmyvv32W7sjAjAMe2QABM2dd94pl8uldevW6Wc/+5kGDhyoIUOGaMaMGfr000/r3f6DDz6Qy+XS7t27fWObNm2Sy+VSaWmpJGnp0qWKiYnRO++8ozPOOEPdunXTtddeq/3792vZsmVKTExUbGyspk6dKq/X63ucxMREPfTQQ5owYYK6d++uU089VQsXLmzv/wUAAowiAyAoKioqtHLlSk2ePFndu3evNx8TE9Pqx96/f78WLFig5cuXa+XKlfrggw909dVX67333tN7772nF154Qc8884xee+01v/v97ne/0znnnKONGzdq5syZmjZtmrKzs1udA0DwcWgJQFAUFRXJsiwNGjQo4I99+PBhLVq0SAMGDJAkXXvttXrhhRf0/fff6+STT9aZZ56pn/zkJ1q9erV+/vOf++43atQozZw5U5I0cOBArV27Vr///e81duzYgGcE0D7YIwMgKCzLarfH7tatm6/ESFLv3r2VmJiok08+2W9s165dfvdLTU2td/2bb75pt5wAAo8iAyAokpOT5XK5WnRC70kn1f6JOrYEHT58uN7tOnXq5Hfd5XI1OFZTU9OSyAAMQJEBEBQ9evRQenq6Fi5cqH379tWbP/aE3jqnnHKKJGnHjh2+sU2bNgUs0/EnGH/66acaPHhwwB4fQPujyAAImoULF8rr9eqCCy7Q3//+dxUWFuqbb77RggUL6h3mkaSkpCQlJCTov//7v1VYWKh3331X8+fPD1ietWvX6vHHH1dBQYEWLlyoV199VdOmTQvY4wNofxQZAEFz+umna8OGDfrJT36ie+65R2eddZbGjh2rVatWadGiRfVu36lTJ2VlZenbb7/V0KFD9dhjj2nu3LkBy3PPPfdo/fr1GjZsmObOnasnn3xS6enpAXt8AO3PZbXnGXgAEKISExM1ffp0TZ8+3e4oANqAPTIAAMBYFBkAAGAsDi0BAABjsUcGAAAYiyIDAACMRZEBAADGosgAAABjUWQAAICxKDIAAMBYFBkAAGAsigwAADDW/weWVAb9JFFC1QAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "ax = cell_df[cell_df['Class'] == 4][0:50].plot(kind='scatter', x='Clump', y='UnifSize', color='DarkBlue', label='malignant');\n", "cell_df[cell_df['Class'] == 2][0:50].plot(kind='scatter', x='Clump', y='UnifSize', color='Yellow', label='benign', ax=ax);\n", @@ -221,9 +339,31 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 152, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "ID int64\n", + "Clump int64\n", + "UnifSize int64\n", + "UnifShape int64\n", + "MargAdh int64\n", + "SingEpiSize int64\n", + "BareNuc object\n", + "BlandChrom int64\n", + "NormNucl int64\n", + "Mit int64\n", + "Class int64\n", + "dtype: object" + ] + }, + "execution_count": 152, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "cell_df.dtypes" ] @@ -237,9 +377,31 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 153, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "ID int64\n", + "Clump int64\n", + "UnifSize int64\n", + "UnifShape int64\n", + "MargAdh int64\n", + "SingEpiSize int64\n", + "BareNuc int64\n", + "BlandChrom int64\n", + "NormNucl int64\n", + "Mit int64\n", + "Class int64\n", + "dtype: object" + ] + }, + "execution_count": 153, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "cell_df = cell_df[pd.to_numeric(cell_df['BareNuc'], errors='coerce').notnull()]\n", "cell_df['BareNuc'] = cell_df['BareNuc'].astype('int')\n", @@ -248,9 +410,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 154, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 5, 1, 1, 1, 2, 1, 3, 1, 1],\n", + " [ 5, 4, 4, 5, 7, 10, 3, 2, 1],\n", + " [ 3, 1, 1, 1, 2, 2, 3, 1, 1],\n", + " [ 6, 8, 8, 1, 3, 4, 3, 7, 1],\n", + " [ 4, 1, 1, 3, 2, 1, 3, 1, 1]])" + ] + }, + "execution_count": 154, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "feature_df = cell_df[['Clump', 'UnifSize', 'UnifShape', 'MargAdh', 'SingEpiSize', 'BareNuc', 'BlandChrom', 'NormNucl', 'Mit']]\n", "X = np.asarray(feature_df)\n", @@ -266,9 +443,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 155, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([2, 2, 2, 2, 2])" + ] + }, + "execution_count": 155, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "cell_df['Class'] = cell_df['Class'].astype('int')\n", "y = np.asarray(cell_df['Class'])\n", @@ -291,9 +479,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 156, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train set: (546, 9) (546,)\n", + "Test set: (137, 9) (137,)\n" + ] + } + ], "source": [ "X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=4)\n", "print ('Train set:', X_train.shape, y_train.shape)\n", @@ -325,9 +522,438 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 157, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
SVC()
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": [ + "SVC()" + ] + }, + "execution_count": 157, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from sklearn import svm\n", "clf = svm.SVC(kernel='rbf')\n", @@ -343,9 +969,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 158, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([2, 4, 2, 4, 2])" + ] + }, + "execution_count": 158, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "yhat = clf.predict(X_test)\n", "yhat [0:5]" @@ -360,7 +997,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 159, "metadata": {}, "outputs": [], "source": [ @@ -370,7 +1007,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 160, "metadata": {}, "outputs": [], "source": [ @@ -411,9 +1048,38 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 161, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " 2 1.00 0.94 0.97 90\n", + " 4 0.90 1.00 0.95 47\n", + "\n", + " accuracy 0.96 137\n", + " macro avg 0.95 0.97 0.96 137\n", + "weighted avg 0.97 0.96 0.96 137\n", + "\n", + "Confusion matrix, without normalization\n", + "[[85 5]\n", + " [ 0 47]]\n" + ] + }, + { + "data": { + "image/png": "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yJkzJ3/99VcaI07p7bffpmrVqnTq1Alvb29atGjBd999969JS3KcQUFBKfYVL16c69evp6jF+Oe95MyZEyBV95I/f/4UdTUeHh74+fmlaPtnn/fu3WPgwIH4+fnh7OxM7ty5yZMnD7du3SIqKuo/r50sMDAw1ccCzJ49m7t373Lq1CnmzZtnljCJ2CIlKiJWyN3dHV9fX44dO2bRef/8S/dxHvcosDEVqxU87hqJiYlmn11dXdm6dSsbN26kbdu2HDlyhLfffpu6deumODY90nMvjzs3NX127dqV4cOH07x5c7777jt++eUXNmzYgJeXV6pHkACLE40tW7aYCqSPHj1q0bkiTyMlKiJWqmHDhpw5c4Zdu3b957EBAQEkJSVx6tQps/bIyEhu3bpleoInI+TMmZNbt26laP/nqA2AnZ0dL7/8MuPGjePEiRMMHz6cTZs2sXnz5kf2nRxneHh4in2//fYbuXPntpqi0e+//57g4GDGjh1rKkyuVq1ait+b1CaPqXHlyhW6du3KK6+8QsOGDendu/cjf99FbIkSFREr1adPH7Jly0anTp2IjIxMsf/MmTNMnDgRgFdffRUgxZM548aNA+C1117LsLgKFSpEVFQUR44cMbVduXKFFStWmB138+bNFOcmP9Hyz0emk+XLl49y5coxf/58s7/wjx07xi+//GK6T2tgb2+fYtRm8uTJKUaLkhOrRyV3lurcuTNJSUnMnj2br7/+GgcHBzp27Jiq0SORp5UWfBOxUoUKFWLx4sW8/fbbFC9e3Gxl2p07d7Js2TLTOhtly5YlODiYr7/+mlu3blGjRg327t3L/PnzadKkCbVq1cqwuFq0aEHfvn1544036NatG3fv3mX69OkULVrUrIh06NChbN26lddee42AgACuXbvGtGnTyJ8/P9WqVXts/1988QUNGjSgSpUqdOzYkXv37jF58mQ8PDwYPHhwht1HejVs2JCFCxfi4eFBiRIl2LVrFxs3bsTLy8vsuHLlymFvb8/o0aOJiorC2dmZ2rVrkzdvXouuN3fuXNasWcO8efPInz8/8CAxatOmDdOnT+eDDz7IsHsTsSZKVESs2Ouvv86RI0f44osv+PHHH5k+fTrOzs6UKVOGsWPH0rlzZ9Oxs2bNomDBgsybN48VK1bg4+ND//79GTRoUIbG5OXlxYoVK+jVqxd9+vQhMDCQkSNHcurUKbNE5fXXX+f8+fPMmTOH69evkzt3bmrUqMGQIUNMxamPUqdOHdatW8egQYMYOHAgjo6O1KhRg9GjR1tcePokTZw4EXt7exYtWkRsbCxVq1Y1rQHzMB8fH2bMmMHIkSPp2LEjiYmJbN682aJE5dKlS/Ts2ZNGjRoRHBxsam/dujU//PADffr0oUGDBlb1+yOSUfSuHxEREbFaqlERERERq6VERURERKyWEhURERGxWkpURERExGopURERERGrpURFRERErJbWUXmGJSUlcfnyZXLkyJGhy3yLiMiDd0Pdvn0bX19f7Oye/LhAbGws8fHx6erDyckJFxeXDIooYyhReYZdvnw5xVtiRUQkY128eNG0mvCTEhsbi2sOL7h/N139+Pj4cO7cOatKVpSoPMNy5MgBgFOJYAz2TlkcjUjqnFw3KqtDEEmV27ejKVss0PSz9kmKj4+H+3dxLtkB0vrzPDGeq8fnEh8fr0RFrEPydI/B3kmJijw1cri7Z3UIIhbJ1Kl1BycM9s5pOtVopRUAKqYVERERq6URFREREVthsHuwpfVcK6RERURExFYYDA+2tJ5rhawzfRIRERFBIyoiIiK2Q1M/IiIiYrVscOpHiYqIiIjNSMeIipVWg1hnVCIiIiJoREVERMR2aOpHRERErJaKaUVERMRq2eCIinWmTyIiIiJoREVERMR22ODUj3VGJSIiIpZLnvpJ62aBxMREBgwYQGBgIK6urhQqVIhhw4ZhNBpNxxiNRgYOHEi+fPlwdXWlTp06nDp1yqLrKFERERGxFckjKmndLDB69GimT5/OlClTOHnyJKNHj2bMmDFMnjzZdMyYMWOYNGkSM2bMYM+ePWTLlo169eoRGxub6uto6kdEREQstnPnTho3bsxrr70GQIECBfj222/Zu3cv8GA0ZcKECXz22Wc0btwYgAULFuDt7c3KlStp0aJFqq6jERURERFbYTCkY0TlwdRPdHS02RYXF/fIS7344ouEhoby+++/A3D48GG2b99OgwYNADh37hxXr16lTp06pnM8PDyoXLkyu3btSvUtaURFRETEVtgZHmxpPRfw8/Mzax40aBCDBw9OcXi/fv2Ijo6mWLFi2Nvbk5iYyPDhw2ndujUAV69eBcDb29vsPG9vb9O+1FCiIiIiYisy4Kmfixcv4u7ubmp2dnZ+5OHfffcdixYtYvHixZQsWZJDhw7Ro0cPfH19CQ4OTlsMj6BERUREREzc3d3NEpXH+fjjj+nXr5+p1qR06dJcuHCBkSNHEhwcjI+PDwCRkZHky5fPdF5kZCTlypVLdTyqUREREbEVmfh48t27d7GzM08j7O3tSUpKAiAwMBAfHx9CQ0NN+6Ojo9mzZw9VqlRJ9XU0oiIiImIrMnHBt0aNGjF8+HD8/f0pWbIkv/76K+PGjeOdd9550J3BQI8ePfj8888pUqQIgYGBDBgwAF9fX5o0aZLq6yhRERERsRWZ+K6fyZMnM2DAAD744AOuXbuGr68v7733HgMHDjQd06dPH+7cucO7777LrVu3qFatGuvWrcPFxSX1YRkfXkJOninR0dF4eHjgXLozBnunrA5HJFUubpuQ1SGIpMrt6GgKPudFVFRUqmo+0sP087zmYAwOqU8CHma8H0vclsGZEq8lNKIiIiJiK2zwXT9KVERERGxFJk79ZBYlKiIiIrbCBkdUrDMqERERETSiIiIiYjs09SMiIiLWKx1TP1Y6yWKdUYmIiIigERURERHboakfERERsVoGQzqe+lGiIiIiIk+SHk8WERERyTwaUREREbEVqlERERERq2WDUz9KVERERGyFDY6oWGf6JCIiIoJGVERERGyHpn5ERETEatng1I8SFRERERthMBgw2FiiYp3jPCIiIiJoREVERMRm2OKIihIVERERW2H4/y2t51ohJSoiIiI2whZHVFSjIiIiIlZLIyoiIiI2whZHVJSoiIiI2AglKiIiImK1bDFRUY2KiIiIWC2NqIiIiNgKPZ4sIiIi1soWp36UqIiIiNiIB+8kTGuikrGxZBTVqIiIiIjFChQoYBrBeXgLCQkBIDY2lpCQELy8vMiePTvNmjUjMjLS4usoUREREbERBlImDqneLBxS2bdvH1euXDFtGzZsAOCtt94CoGfPnqxatYply5YRFhbG5cuXadq0qcX3pKkfERERG5GZNSp58uQx+zxq1CgKFSpEjRo1iIqKYvbs2SxevJjatWsDMHfuXIoXL87u3bt54YUXUn0djaiIiIiISXR0tNkWFxf3n+fEx8fzzTff8M4772AwGDhw4AAJCQnUqVPHdEyxYsXw9/dn165dFsWjREVERMRWGNK5AX5+fnh4eJi2kSNH/udlV65cya1bt2jfvj0AV69excnJ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88PDw8O0jRw58j+vm5SURI8ePahatarpH9JXr17FyckpxSKl3ha+VsRgNBr/fS1lG9a5c2d+++03tm3bltWhmEydOpWffvqJ9evXp/qcn3/+mY8++ogjR47g4JD6QbLo6Gg8PDyIvBGlehV5arzz7aGsDkEkVRLuxfD9e9WJinryP2OTf55vOhRB9hxpu1bM7Whql/Pn4sWLZvGmZkTl/fff5+eff2b79u3kz58fgMWLF9OhQwfi4uLMjq1UqRK1atVi9OjRqYrLaqZ+MsOXX35J3bp1yZYtGz///DPz589n2rRpWR2Wmffee49bt25x+/btRy6j/yh37txh7ty5FiUpIiJigzLg+WRLH7b48MMPWb16NVu3bjUlKQA+Pj7Ex8dz69Yts1GVSAtfK/JM/c22d+9exowZw+3btylYsCCTJk2iU6dOWR2WGQcHBz799FOLznnzzTefUDQiIvI0ycxiWqPRSNeuXVmxYgVbtmwhMDDQbH+FChVwdHQkNDTUtAZZeHg4ERERVKmS+teKPFOJynfffZfVIYiIiDwx6Xm5oKXnhYSEsHjxYn788Udy5Mhhqjvx8PDA1dUVDw8POnbsSK9evciVKxfu7u507dqVKlWqpLqQFp6xREVEREQyRvKLcGvWrGnWPnfuXNPLdcePH4+dnR3NmjUjLi6OevXqWVxyoURFRETERmTmEvqpeRbHxcWFqVOn/uu76v6LEhURERFbYYMv+1GiIiIiYiMys5g2s1jVgm8iIiIiD9OIioiIiI3IzKd+MosSFRERERthgyUqSlRERERshg1mKqpREREREaulERUREREbYYtP/ShRERERsREqphURERGrZYMlKqpREREREeulERURERFbYYNDKkpUREREbIQtFtNq6kdERESslkZUREREbISe+hERERGrZYMlKkpUREREbIYNZiqqURERERGrpREVERERG2GLT/0oUREREbERKqYVERERq2WDJSqqURERERHrpREVERERW2GDQypKVERERGyEimlFRETEeqWjmNZK8xTVqIiIiIj10oiKiIiIjbDBEhUlKiIiIjbDBjMVJSoiIiI2whaLaVWjIiIiIlZLiYqIiIiNSF5CP62bpbZu3UqjRo3w9fXFYDCwcuVKs/1Go5GBAweSL18+XF1dqVOnDqdOnbLoGkpUREREbIQhnZul7ty5Q9my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F2c6Z+HChcagoCBjUlKSqS0uLs7o6upqXL9+vdFoNBrz5ctnHDNmjGl/QkKCMX/+/KZrGY1GY40aNYzdu3c3Go1GY3h4uBEwbtiw4ZFxbt682QgY//rrL1NbbGys0c3Nzbhz506zYzt27Ghs2bKl0Wg0Gvv3728sUaKE2f6+ffum6OufAOOKFSseu/+LL74wVqhQwfR50KBBRnt7e+OlS5dMbT///LPRzs7OeOXKFaPRaDQWKlTIuHjxYrN+hg0bZqxSpYrRaDQaz507ZwSMv/7662OvKyJ/U42KyDNi9erVZM+enYSEBJKSkmjVqhWDBw827S9durRZXcrhw4c5ffo0OXLkMOsnNjaWM2fOEBUVxZUrV6hcubJpn4ODAxUrVkwx/ZPs0KFD2NvbU6NGjVTHffr0ae7evUvdunXN2uPj4ylfvjwAJ0+eNIsDoEqVKqm+RrKlS5cyadIkzpw5Q0xMDPfv38fd3d3sGH9/f5577jmz6yQlJREeHk6OHDk4c+YMHTt2pHPnzqZj7t+/j4eHh8XxiIiKaUWeGbVq1WL69Ok4OTnh6+uLg4P5H/9s2bKZfY6JiaFChQosWrQoRV958uRJUwyurq4WnxMTEwPAmjVrzBIEeFB3k1F27dpF69atGTJkCPXq1cPDw4MlS5YwduxYi2OdOXNmisTJ3t4+w2IVeZYoURF5RmTLlo3ChQun+vjnn3+epUuXkjdv3hSjCsny5cvHnj17eOmll4AHIwcHDhzg+eeff+TxpUuXJikpibCwMOrUqZNif/KITmJioqmtRIkSODs7ExER8diRmOLFi5sKg5Pt3r37v2/yITt37iQgIIBPP/3U1HbhwoUUx0VERHD58mV8fX1N17GzsyMoKAhvb298fX05e/YsrVu3tuj6IvJoKqYVkUdq3bo1uXPnpnHjxmzbto1z586xZcsWunXrxqVLlwDo3r07o0aNYuXKlfz222988MEH/7oGSoECBQgODuadd95h5cqVpj6/++47AAICAjAYDKxevZo///yTmJgYcuTIQe/evenZsyfz58/nzJkzHDx4kMmTJ5sKVLt06cKpU6f4+OOPCQ8PZ/HixcybN8+i+y1SpAgREREsWbKEM2fOMGnSpEcWBru4uBAcHMzhw4fZtm0b3bp1o3nz5vj4+AAwZMgQRo4cyaRJk/j99985evQoc+fOZdy4cRbFIyIPKFERkUdyc3Nj69at+Pv707RpU4oXL07Hjh2JjY01jbB89NFHtG3bluDgYKpUqUKOHDl44403/rXf6dOn8+abb/LBBx9QrFgxOnfuzJ07dwB47rnnGDJkCP369cPb25sPP/wQgGHDhjFgwABGjhxJ8eLFqV+/PmvWrCEwMBB4UDfyww8/sHLlSsqWLcuMGTMYMWKERff7+uuv07NnTz788EPKlSvHzp07GTBgQIrjChcuTNOmTXn11Vd55ZVXKFOmjNnjx506dWLWrFnMnTuX0qVLU6NGDebNm2eKVUQsYzA+rupNREREJItpREVERESslhIVERERsVpKVERERMRqKVERERERq6VERURERKyWEhURERGxWkpURERExGopURERERGrpURFRERErJYSFREREbFaSlRERETEav0fbOi8NQqSIloAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Compute confusion matrix\n", "cnf_matrix = confusion_matrix(y_test, yhat, labels=[2,4])\n", @@ -435,9 +1101,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 162, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "0.9639038982104676" + ] + }, + "execution_count": 162, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from sklearn.metrics import f1_score\n", "f1_score(y_test, yhat, average='weighted') " @@ -452,9 +1129,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 163, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "np.float64(0.9444444444444444)" + ] + }, + "execution_count": 163, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from sklearn.metrics import jaccard_score\n", "jaccard_score(y_test, yhat,pos_label=2)" @@ -470,11 +1158,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 164, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Avg F1-score: 0.9639038982104676\n", + "Jaccard score: 0.9444444444444444\n" + ] + } + ], "source": [ - "# write your code here\n" + "clf2 = svm.SVC(kernel='linear')\n", + "clf2.fit(X_train, y_train) \n", + "yhat2 = clf2.predict(X_test)\n", + "print(\"Avg F1-score: \", f1_score(y_test, yhat2, average='weighted'))\n", + "print(\"Jaccard score: \", jaccard_score(y_test, yhat2,pos_label=2))\n" ] }, { @@ -505,7 +1206,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -519,7 +1220,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.8" + "version": "3.9.6" } }, "nbformat": 4,