From a01eeb6efabb20df6241173525f31704686eb634 Mon Sep 17 00:00:00 2001 From: Alex Castillo Date: Thu, 12 Dec 2024 15:19:29 -0400 Subject: [PATCH] Submite --- lab-svm.ipynb | 843 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 794 insertions(+), 49 deletions(-) diff --git a/lab-svm.ipynb b/lab-svm.ipynb index bbbfd6b..3295f90 100644 --- a/lab-svm.ipynb +++ b/lab-svm.ipynb @@ -53,21 +53,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "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" + "import matplotlib\n", + "import scipy" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -83,17 +79,30 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "'\\nfrom pyodide.http import pyfetch\\n\\nasync def download(url, filename):\\n response = await pyfetch(url)\\n if response.status == 200:\\n with open(filename, \"wb\") as f:\\n f.write(await response.bytes()) \\n'" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ + "'''\n", "from pyodide.http import pyfetch\n", "\n", "async def download(url, filename):\n", " response = await pyfetch(url)\n", " if response.status == 200:\n", " with open(filename, \"wb\") as f:\n", - " f.write(await response.bytes())\n" + " f.write(await response.bytes()) \n", + "'''" ] }, { @@ -131,7 +140,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": { "button": false, "new_sheet": false, @@ -142,7 +151,9 @@ "outputs": [], "source": [ "#Click here and press Shift+Enter\n", - "path=\"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-ML0101EN-SkillsNetwork/labs/Module%203/data/cell_samples.csv\"" + "# path=\"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-ML0101EN-SkillsNetwork/labs/Module%203/data/cell_samples.csv\"\n", + "\n", + "path = \"cell_samples.csv\"" ] }, { @@ -160,16 +171,16 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ - "await download(path, \"cell_samples.csv\")" + "# await download(path, \"cell_samples.csv\")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": { "button": false, "new_sheet": false, @@ -177,7 +188,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": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "cell_df = pd.read_csv(\"cell_samples.csv\")\n", "cell_df.head()" @@ -198,10 +339,23 @@ "cell_type": "code", "execution_count": null, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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xMpQAGrhcLvdbqtDtKSysjIFBwertLRUQUFBXrpXRx3LTPrvZD38i13Wo72kk7WMt5P0g4+zNMd4SWmSys8Yc0pKkLTWkkRAa9KY929mZhotop7lpuxyGl7PclN2OV1fz3JTdtXYZT1eUe1FRqfHl/kuSrNkSnKpepHR6esuscsJ8C+UmUb7tp7l//FJiub7tJ7lu3ySovk+rmf5Jp+kaD67rMeGepav80UIL8ipZ3m2T1IAaBjKTKOdX8/y3j5J0XyX1rN8iE9SNF99M0w/9UmK5rPLeoyqZ/kYX4Twgn71LI/2SQoADcMxM01il2MbWA//Ypf14JgZAM3HMTMt7o5Gjvur5EaO+6uXGznur+yyHttUWVzO1O70uElSVFlczpRwehyAP2Fmpln6qPIYmd6SvvHyffvSlao8RmaIpI8sztIck1R5bMlPJb1pcZbmsMt6LFPlMTJjJE21NEnzZKnyGJloSTEWZwFaj8a8f1NmAACA32E3EwAAaDUoMwAAwGiUGQAAYDTKDAAAMBplBgAAGI0yAwAAjEaZAQAARqPMAAAAo1FmAACA0SgzAADAaG2tDtDSqr6toayszOIkAACgoaretxvyrUu2LzOHDh2SJEVERFicBAAANNahQ4cUHBxc521s/0WTFRUV2rdvnwIDA+VwOKyO45fKysoUERGhgoICvozTD7A9/Avbw7+wPfxLS24Pt9utQ4cOKTw8XG3a1H1UjO1nZtq0aaPevXtbHcMIQUFB/HLwI2wP/8L28C9sD//SUtujvhmZKhwADAAAjEaZAQAARqPMQB06dNAf//hHdejQweooENvD37A9/Avbw7/4y/aw/QHAAADA3piZAQAARqPMAAAAo1FmAACA0SgzAADAaJSZVio5OVnDhg1TYGCgunfvruuuu05ff/211bFwWnJyshwOh2bPnm11lFbt22+/1c0336ywsDB16tRJgwcP1o4dO6yO1SqdOnVKDz/8sKKiotSxY0ddcMEFmjdvnioqKqyO1ips3LhREydOVHh4uBwOh955551qy91utx599FGFh4erY8eOGjVqlD7//HOf5aPMtFLp6emaPn26PvnkE6WmpurUqVMaN26cjhw5YnW0Vi8jI0NLly7VoEGDrI7SqpWUlGjEiBFq166d1qxZoy+++EKLFi1SSEiI1dFapSeeeEIvvviiXnjhBX355Zd68skn9ec//1nPP/+81dFahSNHjujSSy/VCy+8UOvyJ598Uk8//bReeOEFZWRkqGfPnho7dqzn+xFbGqdmQ5L03XffqXv37kpPT9fIkSOtjtNqHT58WJdddpn++te/6vHHH9fgwYO1ePFiq2O1Sg888IA2b96sTZs2WR0FkiZMmKAePXrolVde8Yz9/Oc/V6dOnfTaa69ZmKz1cTgcevvtt3XddddJqpyVCQ8P1+zZs3X//fdLkk6cOKEePXroiSee0G9+85sWz8TMDCRJpaWlkqSuXbtanKR1mz59uq655holJCRYHaXVe/fddzV06FDdeOON6t69u4YMGaKXXnrJ6lit1pVXXql169YpMzNTkvTpp5/qo48+0tVXX21xMuTm5urAgQMaN26cZ6xDhw666qqr9PHHH/skg+2/aBL1c7vdmjNnjq688koNHDjQ6jit1htvvKGdO3cqIyPD6iiQtHfvXi1ZskRz5szRgw8+qG3btul3v/udOnTooFtuucXqeK3O/fffr9LSUvXv319Op1Pl5eVasGCBJk+ebHW0Vu/AgQOSpB49elQb79Gjh/Lz832SgTIDzZgxQ3v27NFHH31kdZRWq6CgQLNmzdIHH3yggIAAq+NAUkVFhYYOHaqFCxdKkoYMGaLPP/9cS5YsocxY4B//+IdWrFihlStXasCAAdq9e7dmz56t8PBw3XrrrVbHgyp3P53J7XbXGGsplJlWbubMmXr33Xe1ceNG9e7d2+o4rdaOHTtUWFioyy+/3DNWXl6ujRs36oUXXtCJEyfkdDotTNj69OrVSxdffHG1sYsuukhvvfWWRYlat3vvvVcPPPCAfvnLX0qSLrnkEuXn5ys5OZkyY7GePXtKqpyh6dWrl2e8sLCwxmxNS+GYmVbK7XZrxowZWrVqlT788ENFRUVZHalVGzNmjD777DPt3r3bcxk6dKimTJmi3bt3U2QsMGLEiBofV5CZmam+fftalKh1O3r0qNq0qf6W5XQ6OTXbD0RFRalnz55KTU31jP3www9KT0/X8OHDfZKBmZlWavr06Vq5cqX+/e9/KzAw0LPPMzg4WB07drQ4XesTGBhY43ilzp07KywsjOOYLHL33Xdr+PDhWrhwoW666SZt27ZNS5cu1dKlS62O1ipNnDhRCxYsUJ8+fTRgwADt2rVLTz/9tG6//Xaro7UKhw8fVnZ2tud6bm6udu/era5du6pPnz6aPXu2Fi5cqJiYGMXExGjhwoXq1KmTkpKSfBPQjVZJUq2XV1991epoOO2qq65yz5o1y+oYrdr//d//uQcOHOju0KGDu3///u6lS5daHanVKisrc8+aNcvdp08fd0BAgPuCCy5wP/TQQ+4TJ05YHa1VWL9+fa3vGbfeeqvb7Xa7Kyoq3H/84x/dPXv2dHfo0ME9cuRI92effeazfHzODAAAMBrHzAAAAKNRZgAAgNEoMwAAwGiUGQAAYDTKDAAAMBplBgAAGI0yAwAAjEaZAQAARqPMAPArDodD77zzjtUxABiEMgPApw4cOKCZM2fqggsuUIcOHRQREaGJEydq3bp1VkcDYCi+aBKAz+Tl5WnEiBEKCQnRk08+qUGDBunkyZNyuVyaPn26vvrqK6sjAjAQMzMAfGbatGlyOBzatm2bJk2apNjYWA0YMEBz5szRJ598UuP2GzZskMPh0MGDBz1ju3fvlsPhUF5eniRp2bJlCgkJ0XvvvacLL7xQnTp10qRJk3TkyBEtX75ckZGRCg0N1cyZM1VeXu65n8jISM2fP19JSUnq0qWLwsPD9fzzz7f0fwGAFkCZAeATxcXFWrt2raZPn67OnTvXWB4SEtLk+z569Kiee+45vfHGG1q7dq02bNigG264Qe+//77ef/99vfbaa1q6dKnefPPNaj/35z//WYMGDdLOnTs1d+5c3X333UpNTW1yDgDWYDcTAJ/Izs6W2+1W//79vX7fJ0+e1JIlS9SvXz9J0qRJk/Taa6/pv//9r7p06aKLL75Yo0eP1vr16/WLX/zC83MjRozQAw88IEmKjY3V5s2b9cwzz2js2LFezwig5TAzA8An3G63pMqzlbytU6dOniIjST169FBkZKS6dOlSbaywsLDaz8XHx9e4/uWXX3o9H4CWRZkB4BMxMTFyOByNKgtt2lT+iqoqQlLlLMzZ2rVrV+26w+GodayioqLex2yJsgWgZVFmAPhE165dlZiYqL/85S86cuRIjeVnHuRbpVu3bpKk/fv3e8Z2797ttUxnH3T8ySeftMhuMAAtizIDwGf++te/qry8XFdccYXeeustZWVl6csvv9Rzzz1XY5ePJEVHRysiIkKPPvqoMjMztXr1ai1atMhreTZv3qwnn3xSmZmZ+stf/qJ//etfmjVrltfuH4BvUGYA+ExUVJR27typ0aNH6/e//70GDhyosWPHat26dVqyZEmN27dr104pKSn66quvdOmll+qJJ57Q448/7rU8v//977Vjxw4NGTJE8+fP16JFi5SYmOi1+wfgGw73mTujAaCViIyM1OzZszV79myrowBoJmZmAACA0SgzAADAaOxmAgAARmNmBgAAGI0yAwAAjEaZAQAARqPMAAAAo1FmAACA0SgzAADAaJQZAABgNMoMAAAw2v8Pe4S6//bao5QAAAAASUVORK5CYII=", + "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", + "ax = cell_df[cell_df['Class'] == 4][0:50].plot(kind = 'scatter', x = 'Clump', y = 'UnifSize', color = 'DarkBlue', label = 'malignant');\n", + "\n", + "cell_df[cell_df['Class'] == 2][0:50].plot(kind = 'scatter', x = 'Clump', y = 'UnifSize', color = 'Yellow', label = 'benign', ax = ax);\n", + "\n", "plt.show()" ] }, @@ -221,9 +375,31 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "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": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "cell_df.dtypes" ] @@ -237,23 +413,64 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "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 int32\n", + "BlandChrom int64\n", + "NormNucl int64\n", + "Mit int64\n", + "Class int64\n", + "dtype: object" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "cell_df = cell_df[pd.to_numeric(cell_df['BareNuc'], errors='coerce').notnull()]\n", + "\n", "cell_df['BareNuc'] = cell_df['BareNuc'].astype('int')\n", + "\n", "cell_df.dtypes" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "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]], dtype=int64)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "feature_df = cell_df[['Clump', 'UnifSize', 'UnifShape', 'MargAdh', 'SingEpiSize', 'BareNuc', 'BlandChrom', 'NormNucl', 'Mit']]\n", + "\n", "X = np.asarray(feature_df)\n", + "\n", "X[0:5]" ] }, @@ -266,12 +483,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([2, 2, 2, 2, 2])" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "cell_df['Class'] = cell_df['Class'].astype('int')\n", + "\n", "y = np.asarray(cell_df['Class'])\n", + "\n", "y [0:5]" ] }, @@ -293,10 +523,21 @@ "cell_type": "code", "execution_count": null, "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", + "X_train, X_test, y_train, y_test = train_test_split( X, y, test_size = 0.2, random_state = 4)\n", + "\n", "print ('Train set:', X_train.shape, y_train.shape)\n", + "\n", "print ('Test set:', X_test.shape, y_test.shape)" ] }, @@ -325,12 +566,432 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "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": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from sklearn import svm\n", + "\n", "clf = svm.SVC(kernel='rbf')\n", + "\n", "clf.fit(X_train, y_train) " ] }, @@ -343,9 +1004,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([2, 4, 2, 4, 2])" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "yhat = clf.predict(X_test)\n", "yhat [0:5]" @@ -360,7 +1032,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -370,7 +1042,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 39, "metadata": {}, "outputs": [], "source": [ @@ -411,9 +1083,38 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 40, "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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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Compute confusion matrix\n", "cnf_matrix = confusion_matrix(y_test, yhat, labels=[2,4])\n", @@ -423,7 +1124,9 @@ "\n", "# Plot non-normalized confusion matrix\n", "plt.figure()\n", - "plot_confusion_matrix(cnf_matrix, classes=['Benign(2)','Malignant(4)'],normalize= False, title='Confusion matrix')" + "plot_confusion_matrix(cnf_matrix, classes=['Benign(2)','Malignant(4)'],normalize= False, title='Confusion matrix')\n", + "\n", + "plt.show()" ] }, { @@ -435,11 +1138,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 41, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "0.9639038982104676" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from sklearn.metrics import f1_score\n", + "\n", "f1_score(y_test, yhat, average='weighted') " ] }, @@ -452,12 +1167,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 42, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "0.9444444444444444" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from sklearn.metrics import jaccard_score\n", - "jaccard_score(y_test, yhat,pos_label=2)" + "\n", + "jaccard_score(y_test, yhat, pos_label=2)" ] }, { @@ -470,11 +1197,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 43, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "f1_score: 0.9639038982104676\n", + "jaccard_score: 0.9444444444444444\n" + ] + } + ], "source": [ - "# write your code here\n" + "# write your code here\n", + "\n", + "clf = svm.SVC(kernel='linear')\n", + "clf.fit(X_train, y_train)\n", + "\n", + "yhat = clf.predict(X_test) # Prediction\n", + "\n", + "print(\"f1_score: \", f1_score(y_test, yhat, average='weighted') )\n", + "print(\"jaccard_score: \", jaccard_score(y_test, yhat, pos_label=2))\n", + "\n" ] }, { @@ -505,7 +1250,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "base", "language": "python", "name": "python3" }, @@ -519,7 +1264,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.8" + "version": "3.12.3" } }, "nbformat": 4,