2413 lines (2412 with data), 426.6 kB
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "dd2d8358",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd \n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import sys\n",
"\n",
"if not sys.warnoptions:\n",
" import warnings\n",
" warnings.simplefilter(\"ignore\")"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "071adfe5",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>sample_id</th>\n",
" <th>patient_cohort</th>\n",
" <th>sample_origin</th>\n",
" <th>age</th>\n",
" <th>sex</th>\n",
" <th>diagnosis</th>\n",
" <th>stage</th>\n",
" <th>benign_sample_diagnosis</th>\n",
" <th>plasma_CA19_9</th>\n",
" <th>creatinine</th>\n",
" <th>LYVE1</th>\n",
" <th>REG1B</th>\n",
" <th>TFF1</th>\n",
" <th>REG1A</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>S1</td>\n",
" <td>Cohort1</td>\n",
" <td>BPTB</td>\n",
" <td>33</td>\n",
" <td>F</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>11.7</td>\n",
" <td>1.83222</td>\n",
" <td>0.893219</td>\n",
" <td>52.94884</td>\n",
" <td>654.282174</td>\n",
" <td>1262.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>S10</td>\n",
" <td>Cohort1</td>\n",
" <td>BPTB</td>\n",
" <td>81</td>\n",
" <td>F</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>0.97266</td>\n",
" <td>2.037585</td>\n",
" <td>94.46703</td>\n",
" <td>209.488250</td>\n",
" <td>228.407</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>S100</td>\n",
" <td>Cohort2</td>\n",
" <td>BPTB</td>\n",
" <td>51</td>\n",
" <td>M</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>7.0</td>\n",
" <td>0.78039</td>\n",
" <td>0.145589</td>\n",
" <td>102.36600</td>\n",
" <td>461.141000</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>S101</td>\n",
" <td>Cohort2</td>\n",
" <td>BPTB</td>\n",
" <td>61</td>\n",
" <td>M</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>8.0</td>\n",
" <td>0.70122</td>\n",
" <td>0.002805</td>\n",
" <td>60.57900</td>\n",
" <td>142.950000</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>S102</td>\n",
" <td>Cohort2</td>\n",
" <td>BPTB</td>\n",
" <td>62</td>\n",
" <td>M</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>9.0</td>\n",
" <td>0.21489</td>\n",
" <td>0.000860</td>\n",
" <td>65.54000</td>\n",
" <td>41.088000</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" sample_id patient_cohort sample_origin age sex diagnosis stage \\\n",
"0 S1 Cohort1 BPTB 33 F 1 NaN \n",
"1 S10 Cohort1 BPTB 81 F 1 NaN \n",
"2 S100 Cohort2 BPTB 51 M 1 NaN \n",
"3 S101 Cohort2 BPTB 61 M 1 NaN \n",
"4 S102 Cohort2 BPTB 62 M 1 NaN \n",
"\n",
" benign_sample_diagnosis plasma_CA19_9 creatinine LYVE1 REG1B \\\n",
"0 NaN 11.7 1.83222 0.893219 52.94884 \n",
"1 NaN NaN 0.97266 2.037585 94.46703 \n",
"2 NaN 7.0 0.78039 0.145589 102.36600 \n",
"3 NaN 8.0 0.70122 0.002805 60.57900 \n",
"4 NaN 9.0 0.21489 0.000860 65.54000 \n",
"\n",
" TFF1 REG1A \n",
"0 654.282174 1262.000 \n",
"1 209.488250 228.407 \n",
"2 461.141000 NaN \n",
"3 142.950000 NaN \n",
"4 41.088000 NaN "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('Debernardi et al 2020 data.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "7aea3f5f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 590 entries, 0 to 589\n",
"Data columns (total 14 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 sample_id 590 non-null object \n",
" 1 patient_cohort 590 non-null object \n",
" 2 sample_origin 590 non-null object \n",
" 3 age 590 non-null int64 \n",
" 4 sex 590 non-null object \n",
" 5 diagnosis 590 non-null int64 \n",
" 6 stage 199 non-null object \n",
" 7 benign_sample_diagnosis 208 non-null object \n",
" 8 plasma_CA19_9 350 non-null float64\n",
" 9 creatinine 590 non-null float64\n",
" 10 LYVE1 590 non-null float64\n",
" 11 REG1B 590 non-null float64\n",
" 12 TFF1 590 non-null float64\n",
" 13 REG1A 306 non-null float64\n",
"dtypes: float64(6), int64(2), object(6)\n",
"memory usage: 64.7+ KB\n"
]
}
],
"source": [
"df.info()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "327fbab1",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"sample_id 0\n",
"patient_cohort 0\n",
"sample_origin 0\n",
"age 0\n",
"sex 0\n",
"diagnosis 0\n",
"stage 391\n",
"benign_sample_diagnosis 382\n",
"plasma_CA19_9 240\n",
"creatinine 0\n",
"LYVE1 0\n",
"REG1B 0\n",
"TFF1 0\n",
"REG1A 284\n",
"dtype: int64"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "bce04c59",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2 208\n",
"3 199\n",
"1 183\n",
"Name: diagnosis, dtype: int64"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.diagnosis.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "de687416",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAEGCAYAAACkQqisAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAsTAAALEwEAmpwYAAAdAUlEQVR4nO3df5BdZZ3n8fen0w0EEQLpFGICE2aT0kUXf/WAW64oPzqkHTTsFrpxV72uUWIpoDI1M1C6suBo4c44rsHRCQp6tVgR0SnCSJNuEESqBGkEwi8xvRhIp5B0JxDACHSnv/vHfTre9HTS3bfvvadPn8+r6laf5zm/vje309/7PM85z1FEYGZmVouWrAMwM7P8chIxM7OaOYmYmVnNnETMzKxmTiJmZlaz1qwDaLb29vZYunRp1mGYmeXKvffeOxQRi8bXFy6JLF26lL6+vqzDMDPLFUlPTFTv7iwzM6uZk4iZmdXMScTMzGrmJGJmZjVzEjEzm6GhoSHOP/98duzYkXUoTeckYmY2Q+VymU2bNlEul7MOpemcRMzMZmBoaIju7m4igu7u7sK1RpxEzMxmoFwuM/ZIjdHR0cK1RpxEzMxmoLe3l+HhYQCGh4fp6enJOKLmchIxM5uBzs5O2traAGhra2PFihUZR9RcTiJmZjNQKpWQBEBLSwulUinjiJrLScTMbAba29vp6upCEl1dXSxcuDDrkJqqcBMwmpnVW6lUYsuWLYVrhYCTiJnZjLW3t3PFFVdkHUYm3J1lZmY1cxIxM7OaOYmYmVnNnETMzKxmTiJmZlYzJxEzM6uZk4iZmdXMScTMzGrmJGJmZjVrWBKRdLWk7ZIeqqr7e0m/kbRJ0r9IWlC17mJJ/ZIek3RmVf3KVNcv6aKq+uMl3Z3qfyjpoEa9FzMzm1gjWyLfBVaOq+sFXh8RJwK/BS4GkHQCsBp4XdrnG5LmSZoH/BPQBZwAvD9tC/Bl4KsRsQx4BljTwPdiZmYTaFgSiYg7gJ3j6noiYiQV7wKWpOVVwLUR8VJE/A7oB05Kr/6IeDwiXgauBVapMu/yacD1af8ycHaj3ouZmU0syzGRjwDdaXkxsLVq3UCq21/9QuDZqoQ0Vj8hSedK6pPUNzg4WKfwzcwskyQi6bPACHBNM84XEVdGREdEdCxatKgZpzQzK4SmTwUv6cPAWcDpMfZ0e9gGHFu12ZJUx37qdwALJLWm1kj19mZm1iRNbYlIWgn8DfCeiNhdtWoDsFrSwZKOB5YDvwLuAZanK7EOojL4viEln9uAc9L+JeCGZr0PMzOraOQlvj8Afgm8RtKApDXA14FXAr2S7pf0zwAR8TBwHfAIcDPwyYjYk1oZ5wEbgUeB69K2AH8LXCipn8oYyVWNei9mZjYx/alHqRg6Ojqir68v6zDMzHJF0r0R0TG+3nesm5lZzZxEzMysZk4iZmZWMycRMzOrmZOImZnVzEnEzMxq5iRiZmY1cxIxM7OaOYmYmVnNnETMzKxmTiJmZlYzJxEzM6uZk4iZmdXMScTMzGrmJGJmZjVzEjEzs5o5iZiZWc2cRMzMrGZOImZmVjMnETMzq5mTiJmZ1axhSUTS1ZK2S3qoqu4oSb2SNqefR6Z6SVonqV/SJklvrtqnlLbfLKlUVf8WSQ+mfdZJUqPei5mZTayRLZHvAivH1V0E3BoRy4FbUxmgC1ieXucC34RK0gEuAU4GTgIuGUs8aZuPVe03/lxmZtZgDUsiEXEHsHNc9SqgnJbLwNlV9d+LiruABZKOAc4EeiNiZ0Q8A/QCK9O6wyPirogI4HtVxzIzsyZp9pjI0RHxVFr+PXB0Wl4MbK3abiDVHah+YIL6CUk6V1KfpL7BwcGZvQMzM9srs4H11IKIJp3ryojoiIiORYsWNeOUZmaF0Owk8nTqiiL93J7qtwHHVm23JNUdqH7JBPVmZtZEzU4iG4CxK6xKwA1V9R9KV2m9FdiVur02AiskHZkG1FcAG9O65yS9NV2V9aGqY5mZWZO0NurAkn4AvBNolzRA5Sqry4HrJK0BngDelza/CXgX0A/sBv4HQETslPQF4J603WURMTZY/wkqV4DNB7rTy8zMmkiVoYni6OjoiL6+vqzDMDPLFUn3RkTH+HrfsW5mZjVzEjEzs5o5iZiZWc2cRMzMrGZOImZmVjMnETMzq5mTiJmZ1cxJxMzMauYkYmZmNXMSMTOboaGhIc4//3x27NiRdShN5yRiZjZD5XKZTZs2US6XJ994jnESMTObgaGhIbq7u4kIuru7C9cacRIxM5uBcrnM2ES2o6OjhWuNOImYmc1Ab28vw8PDAAwPD9PT05NxRM3lJGJmNgOdnZ20tlYezdTa2sqKFSsyjqi5nETMzGagVCoxOjoKVLqzSqXSJHvMLU4iZmZWMycRM7MZKJfLtLRU/pS2tLR4YN3MzKaut7eXkZERAEZGRjywbmbNV+Q7nvOus7OTtrY2ANra2jywbmbNV+Q7nvOuVCohCah0Z3lgvQkkfUbSw5IekvQDSYdIOl7S3ZL6Jf1Q0kFp24NTuT+tX1p1nItT/WOSzszivZjNVNHveM679vZ2urq6kERXVxcLFy7MOqSmanoSkbQYuADoiIjXA/OA1cCXga9GxDLgGWBN2mUN8Eyq/2raDkknpP1eB6wEviFpXjPfi1k9FP2O57ng3e9+N4ceeijvec97sg6l6bLqzmoF5ktqBQ4FngJOA65P68vA2Wl5VSqT1p+uSttxFXBtRLwUEb8D+oGTmhO+Wf0U/Y7nueDGG29k9+7dbNiwIetQmq7pSSQitgH/ADxJJXnsAu4Fno2IkbTZALA4LS8GtqZ9R9L2C6vrJ9hnH5LOldQnqW9wcLC+b8hshoo+MJt3Re+OzKI760gqrYjjgVcDr6DSHdUwEXFlRHRERMeiRYsaeSqzaSv6wGzeFb07MovurDOA30XEYEQMAz8B3gYsSN1bAEuAbWl5G3AsQFp/BLCjun6Cfcxyo+gDs3lX9O7ILJLIk8BbJR2axjZOBx4BbgPOSduUgBvS8oZUJq3/WVTS/gZgdbp663hgOfCrJr0Hs7oqlUqceOKJboXkUNG7IzXWDGvqSaVLgf8KjAD3AR+lMp5xLXBUqvtARLwk6RDg+8CbgJ3A6oh4PB3ns8BH0nE+HRHdk527o6Mj+vr66v+mzKyQhoaGWL16NS+//DIHH3ww11577ZxsTUq6NyI6xte3TrRxo0XEJcAl46ofZ4KrqyLiReC9+znOF4Ev1j1AM7MpGuuO3LBhQyG7IzNJImZmc0mpVGLLli2F7I6c9piIpH8n6X9KergRAZmZWX5MKYlIenWaquQe4OG03+qGRmZmlhNFnvvsgEkk3aR3G3A7lRv81gBPRcSlEfFgE+IzM5vVfLPhgX09bfPfIuJzEbEJaP7lXGZms5RvNjywY4AfAF9JM+V+AWhrfFhmZvngmw0PICJ2RMQ/R8Q7qNwU+CzwtKRHJX2pGQGamc1mRb/ZcMpXZ0XEQER8Jd1ssgp4sXFhmZnlQ9HnPqtp2pOI+C3wyzrHYmaWO0Wf+2wmNxteBRxXr0DMzPKqyDcbHjCJSNrfE1ZE5ZJfM7PCa29v54orrsg6jExM1hJ5O/AB4IVx9cJPETQzK7zJkshdwO6I+Pn4FZIea0xIZmaWFwdMIhHRdYB1p9Q/HDMzy5MsHkplZmZzxGRzZ62R9NdV5W2SnpP0vKSPNz48MzObzSZriXwcuLqqvD0iDgcWAe9vWFRmZpYLkyURRUT1lJQ/gr1PG5zfsKjMzCwXJksiC6oLEfElAEktQHuDYjIzs5yYLIn0SPq7CeovA4o1VaWZmf0bk90n8tfAtyX1Aw+kujcAfcDHGhmYmZnNfpNNBf+HiHg/sAL4bnqdGRGrI+L5Wk8qaYGk6yX9Jk0r/x8lHSWpV9Lm9PPItK0krZPUL2mTpDdXHaeUtt8sqXiT1piZZWyyS3w/ABARjwM7I+LGiPh/ad15Mzjv14CbI+K1VFo2jwIXAbdGxHLg1lQG6AKWp9e5wDfT+Y8CLgFOpjIFyyVjicfMzJpjsjGRC6uWx88u9pFaTijpCOAUKrMAExEvR8SzVJ5RMvZcyTJwdlpeBXwvKu4CFkg6BjgT6I2InRHxDNALrKwlJjMzq82kl/juZ3mi8lQdDwwC35F0n6RvS3oFcHREPJW2+T1wdFpeDGyt2n8g1e2v/t+QdK6kPkl9g4ODNYZtZmbjTZZEYj/LE5WnqhV4M/DNiHgT8Af+1HVVOXDlqfe1Hv/fiIgrI6IjIjoWLVpUr8OamRXeZEnktWkw+8Gq5bHya2o85wAwEBF3p/L1VJLK06mbivRze1q/DTi2av8lqW5/9WZm1iSTXeL77+t9woj4vaStkl4TEY8BpwOPpFcJuDz9vCHtsgE4T9K1VAbRd0XEU5I2Al+qGkxfAVxc73jNzGz/JrvE94mJXlTGIv7TDM57PnCNpE3AG4EvUUkenZI2A2ekMsBNwONAP/At4BMptp3AF4B70uuyVGeWO0NDQ5x//vns2LFj8o3NZpHJHo97OPBJKgPWG6hcAXUe8FdUbj68ppaTRsT9QMcEq06fYNtIMUx0nKvZd4JIs1wql8ts2rSJcrnMhRdeOPkOZrPEZGMi36cy9vEg8FHgNuAc4OyIWNXg2MwKYWhoiO7ubiKC7u5ut0YsVyZLIn8eER+OiPVUpn4/gcod6/c3PDKzgiiXy1Qa3DA6Okq5XJ5kD7PZY7IkMjy2EBF7qFxV9WJjQzIrlt7eXoaHK//VhoeH6enx3KaWH5MlkTekJxk+J+l54MSqJxs+14wAzea6zs5O2traAGhra2PFihUZR2Q2dZNdnTUvIg5Pr1dGRGvV8uHNCtJsLiuVSkiVCSBaWloolTyXqOXHZC0RM2uw9vZ2urq6kERXVxcLFy7MOiSbpiJfou0kYjYLlEolTjzxRLdCcqr6Eu2icRIxmwXa29u54oor3ArJoaJfou0kYmY2A0W/RNtJxMxsBop+ibaTiJnZDBT9Em0nETOzGSj6JdpOImZmM1D0S7Qne56ImZlNolQqsWXLlsK1QsBJxMxsxsYu0S4id2eZmVnNnETMzKxmTiJms0CR516yfHMSMZsFijz3kuWbk4hZxoo+99JcUOSWpJOIWcaKPvfSXLB+/XoeeOAB1q9fn3UoTZdZEpE0T9J9kv41lY+XdLekfkk/lHRQqj84lfvT+qVVx7g41T8m6cyM3orZjBR97qW8Gxoaore3F4Cenp7CtUaybIl8Cni0qvxl4KsRsQx4BliT6tcAz6T6r6btkHQCsBp4HbAS+IakeU2K3axuij73Ut6tX7+e0dFRoNKSLFprJJMkImkJ8JfAt1NZwGnA9WmTMnB2Wl6VyqT1p6ftVwHXRsRLEfE7oB84qSlvwKyOij73Ut7dcsst+5THWiVFkVVL5P8AfwOMpvJC4NmIGEnlAWBxWl4MbAVI63el7ffWT7DPPiSdK6lPUt/g4GAd34bZzBV97qW8G/sCsL/yXNf0JCLpLGB7RNzbrHNGxJUR0RERHYsWLWrWac2mzI/Hza/TTz99n/IZZ5yRUSTZyKIl8jbgPZK2ANdS6cb6GrBA0thcXkuAbWl5G3AsQFp/BLCjun6CfcxyxY/Hza/3vve9+5Tf9773ZRRJNpqeRCLi4ohYEhFLqQyM/ywi/jtwG3BO2qwE3JCWN6Qyaf3PonI95AZgdbp663hgOfCrJr0NMzMAfvSjH+1Tvu666zKKJBuz6T6RvwUulNRPZczjqlR/FbAw1V8IXAQQEQ8D1wGPADcDn4yIPU2P2swKregD65lOBR8RtwO3p+XHmeDqqoh4EXjv+Pq07ovAFxsXoZnZgXlg3czMauaBdTPLXJHnXsq7tWvX0tJS+VPa0tLC2rVrM46ouZxEzGYBz+KbX+3t7XR2dgKwYsWKwl1h58fjmmVs/Cy+pVKpcH+ImmHdunX09/c35NhPPvkkra2tbN26lQsuuKCux162bFndj1lPbomYZcyz+ObfSy+9xMEHH7x3DrQi0dgvb1F0dHREX19f1mGY7bVy5Up27969t3zooYdy8803ZxiRTddYS2HdunUZR9I4ku6NiI7x9W6JmGXMs/hanjmJmGXMs/hanjmJmGXMs/hanvnqLLNZoFQqsWXLFrdCLHecRMxmgbFZfM3yxt1ZZmZWMycRMzOrmZOImZnVzEnEzMxq5iRiZmY1cxIxM7OaOYmYzQJ+nojllZOI2Sywfv16HnjgAdavX591KGbT4iRilrGhoSF6e3sB6OnpcWvEcsVJxCxj69evZ3R0FKg8T8StEcuTpicRScdKuk3SI5IelvSpVH+UpF5Jm9PPI1O9JK2T1C9pk6Q3Vx2rlLbfLMmTDlku3XrrrfuUb7nllowiMZu+LFoiI8BfRcQJwFuBT0o6AbgIuDUilgO3pjJAF7A8vc4FvgmVpANcApwMnARcMpZ4zPJk/IPhivagOMu3pieRiHgqIn6dlp8HHgUWA6uAseeCloGz0/Iq4HtRcRewQNIxwJlAb0TsjIhngF5gZfPeiVl9vP3tb9+nfMopp2QUidn0ZTomImkp8CbgbuDoiHgqrfo9cHRaXgxsrdptINXtr36i85wrqU9S3+DgYP3egJlZwWWWRCQdBvwY+HREPFe9Lirt+bq16SPiyojoiIiORYsW1euwZnVx55137lP+xS9+kVEkZtOXSRKR1EYlgVwTET9J1U+nbirSz+2pfhtwbNXuS1Ld/uoLyzes5ZPHRCzPsrg6S8BVwKMR8Y9VqzYAY1dYlYAbquo/lK7SeiuwK3V7bQRWSDoyDaivSHWFVS6X2bRpE+VyefKNbdY444wz9il3dnZmFInZ9GXREnkb8EHgNEn3p9e7gMuBTkmbgTNSGeAm4HGgH/gW8AmAiNgJfAG4J70uS3WFNDQ0RHd3NxFBd3e3WyM5snbtWirfraClpYW1a9dmHJHZ1DX98bgRcSeg/aw+fYLtA/jkfo51NXB1/aLLr3K5vLcbZHR0lHK5zIUXXphxVDYV7e3tLF68mIGBAV796lezcOHCrEMymzLfsT5H9Pb2Mjw8DMDw8DA9PT0ZR2RTNTQ0xNNPPw3A008/7Vak5UrTWyLWGJ2dnfz0pz9lZGSE1tZWVqxYkXVINkXlcpmRkREARkZGCt+KXLduHf39/VmHMS2bN28G4IILLsg4kqlbtmxZXeJ1EpkjSqUSN954I1DpziqVPAtMXvT09OztiowINm7cWOgk0t/fz30P3wcLso5kGipTn3HftvuyjWOqnq3foZxEzDJ29NFHs2XLln3KhbcARt85mnUUc1bL7fUbyfCYyBxRLpdpaal8nC0tLb7MN0fGxkP2VzabzZxE5oje3t59+tU9sJ4f4+fKesc73pFRJGbT5yQyR3R2dtLaWumd9MC6mTWLk8gcUSqV9nmwkQfW82P8XFl33HFHRpGYTZ+TyBxSfYWP5Yengrc889VZc0T1HesRUfh7DRqlEfcwPPHEE/uU77777rreb1Cv+wHMJuKWyBwxfiB948ZCz0WZK7t27Tpg2Ww2c0tkjmhvb2fr1q37lK3+GvGN/itf+Qo33FCZtLq1tZWzzjrLrUjLDbdE5oht27YdsGyzV6lU2juL77x583xRhOWKk8gcMXZl1v7KNnu1t7dz1FFHAdDV1eVZfC1X3J3VZM2cXM6Ds/nxqle9ihdffNGtEMsdt0TMZoG2tjaWL1/uVojljlsiTdaob/Of//znuf322/eWTz31VC699NKGnMvMbIyTyBxxwQUX7JNEitz15OdRNE8jujkHBgZgV31nmrVxnoWBGKjLoZxE5oj29naOOOIIdu3axamnnlrobpH+/n5++9CvOe6wPVmHMmUHDVf+YL645Z6MI5m6J1+Yl3UINgs4iexHHr/Nvvzyy7S0tLB9+/bcfKNt1ID9cYft4XMdL9T9uPYnf9d3WEOOu2TJEgY16OeJNFDL7S0sWbykLsdyEtmP/v5+7nvwEUYPPSrrUKZMI4J5h7DpyXw8o7tl986sQzCzGcp9EpG0EvgaMA/4dkRcXo/jDgwMAPmayDAOOTzrEKYp0r9zfQ0MDPCH5+c17JuyVTzx/Dxe0YDPD4BnczYmMtbozcuv3LPA4vocKtdJRNI84J+ATmAAuEfShoh4pC4n2DNCy+58fKsHYDSNAbTkpK96z0jDDv3SHvHE8zn5dwCGRyt3rLe15OeLy0t7xCsacNxly5Y14KiNNXZhxPLFyzOOZIoW1+/fOddJBDgJ6I+IxwEkXQusAmacRN75znc2ZExkYGCAP/7xj3U/LrD3uPMPOajux54/fz5LltSnD7VaI/5gNOqzg8Z9fqPpmC2HzK/7sRv12UFjPr9GjeflcZwTZv+NvnlPIouBrVXlAeDk8RtJOhc4F+C4446b0oHz+Is81jXUqD/2s/kXuVoj42zU5+fPLt/mz69/8s8L5fkBRpLOAVZGxEdT+YPAyRFx3v726ejoiL6+vmaFaGY2J0i6NyI6xtfnaORqQtuAY6vKS1KdmZk1Qd6TyD3AcknHSzoIWA1syDgmM7PCyPWYSESMSDoP2EjlEt+rI+LhjMMyMyuMXCcRgIi4Cbgp6zjMzIoo791ZZmaWIScRMzOrmZOImZnVzEnEzMxqluubDWshaRB4Ius4GqgdGMo6CKuJP7t8m+uf359FxKLxlYVLInOdpL6J7iq12c+fXb4V9fNzd5aZmdXMScTMzGrmJDL3XJl1AFYzf3b5VsjPz2MiZmZWM7dEzMysZk4iZmZWMyeROUDS1ZK2S3oo61hs+iQdK+k2SY9IeljSp7KOyaZG0iGSfiXpgfTZXZp1TM3mMZE5QNIpwAvA9yLi9VnHY9Mj6RjgmIj4taRXAvcCZ0fEIxmHZpOQJOAVEfGCpDbgTuBTEXFXxqE1jVsic0BE3AHszDoOq01EPBURv07LzwOPAouzjcqmIipeSMW29CrUN3MnEbNZRNJS4E3A3RmHYlMkaZ6k+4HtQG9EFOqzcxIxmyUkHQb8GPh0RDyXdTw2NRGxJyLeCCwBTpJUqC5lJxGzWSD1p/8YuCYifpJ1PDZ9EfEscBuwMuNQmspJxCxjaXD2KuDRiPjHrOOxqZO0SNKCtDwf6AR+k2lQTeYkMgdI+gHwS+A1kgYkrck6JpuWtwEfBE6TdH96vSvroGxKjgFuk7QJuIfKmMi/ZhxTU/kSXzMzq5lbImZmVjMnETMzq5mTiJmZ1cxJxMzMauYkYmZmNWvNOgCzPJP0v6hMfnk4cEdE3JJhLJdlHYMVj5OIWR1ExOcdgxWRu7PMpknSZyX9VtKdwGtS3XclnZOWPy/pHkkPSboy3ZGOpL+QtCndTPj3Y89/kfRhST+RdLOkzZL+d9W53i/pwXSsL6e6eel8D6V1n5kghsvT80k2SfqHpv4DWaG4JWI2DZLeAqwG3kjl/8+vqTz/o9rXI+KytP33gbOAG4HvAB+LiF9KunzcPm+kMnvvS8Bjkq4A9gBfBt4CPAP0SDob2AosHnt2zNi0G1UxLgT+M/DaiIjx683qyS0Rs+l5O/AvEbE7zbS7YYJtTpV0t6QHgdOA16U/5K+MiF+mbf7vuH1ujYhdEfEi8AjwZ8BfALdHxGBEjADXAKcAjwN/LukKSSuB8TP+7gJeBK6S9F+A3TN902b74yRiVkeSDgG+AZwTEf8B+BZwyBR2falqeQ8H6CWIiGeANwC3Ax8Hvj1u/QhwEnA9lVbQzVN/B2bT4yRiNj13AGdLmp8eZfvucevHEsZQej7IObB3mvDnJZ2c1q+ewrl+BbxDUrukecD7gZ9LagdaIuLHwOeAN1fvlM57RETcBHyGSsIxawiPiZhNQ3oO+g+BB6g8ye6eceuflfQt4CHg9+PWrwG+JWkU+DmVbqcDnespSRdReUaFgJ9GxA2S3gB8R9LYl8CLx+36SuCG1CoScGENb9VsSjyLr1mTSDps7HncKTkcExGfyjgssxlxS8Ssef5S0sVU/t89AXw423DMZs4tETMzq5kH1s3MrGZOImZmVjMnETMzq5mTiJmZ1cxJxMzMavb/Adz0S/zaOZnAAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.boxplot(x='diagnosis', y='REG1A', data=df)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "68f14c8d",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"diagnosis\n",
"1 79\n",
"2 87\n",
"3 140\n",
"Name: REG1A, dtype: int64"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby('diagnosis').REG1A.count()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "ae720538",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 0.0\n",
"Name: REG1A, dtype: float64"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.REG1A.mode()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "fb9ea237",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"diagnosis\n",
"1 113.000\n",
"2 127.174\n",
"3 411.006\n",
"Name: REG1A, dtype: float64"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby('diagnosis')['REG1A'].median()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "32afb3c4",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>count</th>\n",
" <th>mean</th>\n",
" <th>std</th>\n",
" <th>min</th>\n",
" <th>25%</th>\n",
" <th>50%</th>\n",
" <th>75%</th>\n",
" <th>max</th>\n",
" </tr>\n",
" <tr>\n",
" <th>diagnosis</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>79.0</td>\n",
" <td>227.871886</td>\n",
" <td>288.272476</td>\n",
" <td>0.0</td>\n",
" <td>62.15350</td>\n",
" <td>113.000</td>\n",
" <td>285.60700</td>\n",
" <td>1617.142</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>87.0</td>\n",
" <td>547.458092</td>\n",
" <td>1210.159890</td>\n",
" <td>0.0</td>\n",
" <td>63.54550</td>\n",
" <td>127.174</td>\n",
" <td>405.43800</td>\n",
" <td>8083.492</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>140.0</td>\n",
" <td>1138.323721</td>\n",
" <td>1871.810807</td>\n",
" <td>0.0</td>\n",
" <td>152.33625</td>\n",
" <td>411.006</td>\n",
" <td>1435.60625</td>\n",
" <td>13200.000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" count mean std min 25% 50% \\\n",
"diagnosis \n",
"1 79.0 227.871886 288.272476 0.0 62.15350 113.000 \n",
"2 87.0 547.458092 1210.159890 0.0 63.54550 127.174 \n",
"3 140.0 1138.323721 1871.810807 0.0 152.33625 411.006 \n",
"\n",
" 75% max \n",
"diagnosis \n",
"1 285.60700 1617.142 \n",
"2 405.43800 8083.492 \n",
"3 1435.60625 13200.000 "
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby('diagnosis').REG1A.describe()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "bb230276",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.boxplot(x='diagnosis', y='plasma_CA19_9', data=df)\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "3274f336",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>count</th>\n",
" <th>mean</th>\n",
" <th>std</th>\n",
" <th>min</th>\n",
" <th>25%</th>\n",
" <th>50%</th>\n",
" <th>75%</th>\n",
" <th>max</th>\n",
" </tr>\n",
" <tr>\n",
" <th>diagnosis</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>92.0</td>\n",
" <td>8.749569</td>\n",
" <td>12.189355</td>\n",
" <td>0.0</td>\n",
" <td>1.707332</td>\n",
" <td>5.334598</td>\n",
" <td>9.15</td>\n",
" <td>84.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>108.0</td>\n",
" <td>61.785741</td>\n",
" <td>235.816534</td>\n",
" <td>1.0</td>\n",
" <td>9.750000</td>\n",
" <td>17.000000</td>\n",
" <td>29.25</td>\n",
" <td>1913.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>150.0</td>\n",
" <td>1476.154733</td>\n",
" <td>3550.038158</td>\n",
" <td>0.6</td>\n",
" <td>99.700000</td>\n",
" <td>427.500000</td>\n",
" <td>1457.50</td>\n",
" <td>31000.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" count mean std min 25% 50% \\\n",
"diagnosis \n",
"1 92.0 8.749569 12.189355 0.0 1.707332 5.334598 \n",
"2 108.0 61.785741 235.816534 1.0 9.750000 17.000000 \n",
"3 150.0 1476.154733 3550.038158 0.6 99.700000 427.500000 \n",
"\n",
" 75% max \n",
"diagnosis \n",
"1 9.15 84.3 \n",
"2 29.25 1913.0 \n",
"3 1457.50 31000.0 "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby('diagnosis').plasma_CA19_9.describe()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "2e3e811c",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(6,4))\n",
"sns.countplot(data=df, x='diagnosis')\n",
"\n",
"# Add labels and title\n",
"plt.xlabel('Diagnosis')\n",
"plt.ylabel('Count')\n",
"plt.title('Distribution by classes')\n",
"\n",
"# Show the plot\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "72603ac8",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<seaborn.axisgrid.FacetGrid at 0x168b6dc40>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 404.625x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sns.catplot(\n",
" data=df, x=\"diagnosis\", y=\"age\", hue=\"sex\",\n",
" palette={\"M\": \"g\", \"F\": \"m\"},\n",
" markers=[\"^\", \"o\"], linestyles=[\"-\", \"--\"],\n",
" kind=\"point\"\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "88330945",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"##### plt.figure(figsize=(6,4))\n",
"sns.countplot(data=df, x='diagnosis', hue='sex')\n",
"\n",
"# Add labels and title\n",
"plt.xlabel('Diagnosis')\n",
"plt.ylabel('Count')\n",
"plt.title('Gender Count in Each Classes')\n",
"\n",
"# Show the plot\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "4efad607",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"sex diagnosis\n",
"F 1 115\n",
" 2 101\n",
" 3 83\n",
"M 3 116\n",
" 2 107\n",
" 1 68\n",
"Name: diagnosis, dtype: int64\n"
]
}
],
"source": [
"gender = df.groupby(['sex'])['diagnosis'].value_counts()\n",
"print(gender)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "080cd406",
"metadata": {},
"outputs": [],
"source": [
"import plotly.express as px"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "49c8f02b",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>age</th>\n",
" <th>sex</th>\n",
" <th>diagnosis</th>\n",
" <th>plasma_CA19_9</th>\n",
" <th>creatinine</th>\n",
" <th>LYVE1</th>\n",
" <th>REG1B</th>\n",
" <th>TFF1</th>\n",
" <th>REG1A</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>33</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>11.700000</td>\n",
" <td>1.83222</td>\n",
" <td>0.893219</td>\n",
" <td>52.94884</td>\n",
" <td>654.282174</td>\n",
" <td>1262.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>81</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>8.749569</td>\n",
" <td>0.97266</td>\n",
" <td>2.037585</td>\n",
" <td>94.46703</td>\n",
" <td>209.488250</td>\n",
" <td>228.407000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>51</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>7.000000</td>\n",
" <td>0.78039</td>\n",
" <td>0.145589</td>\n",
" <td>102.36600</td>\n",
" <td>461.141000</td>\n",
" <td>227.871886</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>61</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>8.000000</td>\n",
" <td>0.70122</td>\n",
" <td>0.002805</td>\n",
" <td>60.57900</td>\n",
" <td>142.950000</td>\n",
" <td>227.871886</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>62</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>9.000000</td>\n",
" <td>0.21489</td>\n",
" <td>0.000860</td>\n",
" <td>65.54000</td>\n",
" <td>41.088000</td>\n",
" <td>227.871886</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" age sex diagnosis plasma_CA19_9 creatinine LYVE1 REG1B \\\n",
"0 33 0 1 11.700000 1.83222 0.893219 52.94884 \n",
"1 81 0 1 8.749569 0.97266 2.037585 94.46703 \n",
"2 51 1 1 7.000000 0.78039 0.145589 102.36600 \n",
"3 61 1 1 8.000000 0.70122 0.002805 60.57900 \n",
"4 62 1 1 9.000000 0.21489 0.000860 65.54000 \n",
"\n",
" TFF1 REG1A \n",
"0 654.282174 1262.000000 \n",
"1 209.488250 228.407000 \n",
"2 461.141000 227.871886 \n",
"3 142.950000 227.871886 \n",
"4 41.088000 227.871886 "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['sex'] = df['sex'].astype('category')\n",
"df['sex'] = df['sex'].cat.codes\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "34a649f1",
"metadata": {},
"outputs": [],
"source": [
"#drop multiple columns by name\n",
"df.drop(['patient_cohort', \n",
" 'sample_origin',\n",
" 'stage', \n",
" 'benign_sample_diagnosis',\n",
" 'sample_id'], axis=1, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "e2d3ad5a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"diagnosis\n",
"1 227.871886\n",
"2 547.458092\n",
"3 1138.323721\n",
"Name: REG1A, dtype: float64"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby('diagnosis')['REG1A'].mean()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "fbbf9275",
"metadata": {},
"outputs": [],
"source": [
"df['REG1A'] = df['REG1A'].fillna(df.groupby('diagnosis')['REG1A'].transform('mean'))"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "7a3f9ff2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"diagnosis\n",
"1 227.871886\n",
"2 547.458092\n",
"3 1138.323721\n",
"Name: REG1A, dtype: float64"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby('diagnosis')['REG1A'].mean()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "689eb922",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"diagnosis\n",
"1 8.749569\n",
"2 61.785741\n",
"3 1476.154733\n",
"Name: plasma_CA19_9, dtype: float64"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby('diagnosis')['plasma_CA19_9'].mean()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "acd74365",
"metadata": {},
"outputs": [],
"source": [
"df['plasma_CA19_9'] = df['plasma_CA19_9'].fillna(df.groupby('diagnosis')['plasma_CA19_9'].transform('mean'))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "b00a59ec",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>age</th>\n",
" <th>sex</th>\n",
" <th>diagnosis</th>\n",
" <th>plasma_CA19_9</th>\n",
" <th>creatinine</th>\n",
" <th>LYVE1</th>\n",
" <th>REG1B</th>\n",
" <th>TFF1</th>\n",
" <th>REG1A</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>33</td>\n",
" <td>F</td>\n",
" <td>1</td>\n",
" <td>11.700000</td>\n",
" <td>1.83222</td>\n",
" <td>0.893219</td>\n",
" <td>52.94884</td>\n",
" <td>654.282174</td>\n",
" <td>1262.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>81</td>\n",
" <td>F</td>\n",
" <td>1</td>\n",
" <td>8.749569</td>\n",
" <td>0.97266</td>\n",
" <td>2.037585</td>\n",
" <td>94.46703</td>\n",
" <td>209.488250</td>\n",
" <td>228.407000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>51</td>\n",
" <td>M</td>\n",
" <td>1</td>\n",
" <td>7.000000</td>\n",
" <td>0.78039</td>\n",
" <td>0.145589</td>\n",
" <td>102.36600</td>\n",
" <td>461.141000</td>\n",
" <td>227.871886</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>61</td>\n",
" <td>M</td>\n",
" <td>1</td>\n",
" <td>8.000000</td>\n",
" <td>0.70122</td>\n",
" <td>0.002805</td>\n",
" <td>60.57900</td>\n",
" <td>142.950000</td>\n",
" <td>227.871886</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>62</td>\n",
" <td>M</td>\n",
" <td>1</td>\n",
" <td>9.000000</td>\n",
" <td>0.21489</td>\n",
" <td>0.000860</td>\n",
" <td>65.54000</td>\n",
" <td>41.088000</td>\n",
" <td>227.871886</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" age sex diagnosis plasma_CA19_9 creatinine LYVE1 REG1B \\\n",
"0 33 F 1 11.700000 1.83222 0.893219 52.94884 \n",
"1 81 F 1 8.749569 0.97266 2.037585 94.46703 \n",
"2 51 M 1 7.000000 0.78039 0.145589 102.36600 \n",
"3 61 M 1 8.000000 0.70122 0.002805 60.57900 \n",
"4 62 M 1 9.000000 0.21489 0.000860 65.54000 \n",
"\n",
" TFF1 REG1A \n",
"0 654.282174 1262.000000 \n",
"1 209.488250 228.407000 \n",
"2 461.141000 227.871886 \n",
"3 142.950000 227.871886 \n",
"4 41.088000 227.871886 "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c8fa1359",
"metadata": {},
"outputs": [],
"source": [
"ax = sns.heatmap(df, annot=True)\n",
"ax.set(xlabel=\"\", ylabel=\"\")\n",
"ax.xaxis.tick_top()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "75cc9c4b",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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tkcAiCYldNpuI96/4h5e3PdSWvfpSp8jBhU4yoZvrS7tOfnGn/CnC24t+v6ddcnP+tfX49CdaTewH2NvzY7Patm3G6036MmLA0/nxQE/puPOm9J+u40KHGX9N2jDXjx2zv7cf/p+bL9edy773xsAlGUSb4+fznl7D+Tuk/dm4uwFPDTiswJHW89F0PL4M1j0t9tX26Skd19aHnMKCwffkMfApBVSHv8rhOpUMk4D/lRhfVpKqR3QBThqdQellAanlLZOKW3ds3XvbxjmNzNj8gy69ljxC0eX7p2ZMbnyYOMZU2aWtykpLaFNu9bMmz2P6ZNn8O4b7zFv9jy+XPwlbzz3Jht8a/28xl+fLJ48OzdoO6tlj44snjzrK+267LIZ/c8+iDeOv4HMkmXZYyfNYu7747JdrcoyTH5iKO0375uv0OulOVNn0bHnil/aO/ToxOypX309V6dFm5ac8+dL+M9v72XM25/URYgNip/12rN4yixaVPist+jZkS+nfPW92fHbm7HuOQcz4ge/IeU+692+sw1zh43Odolc+CUznh1B+603yFvs9VHXdi2ZUmG81NR5i+jarmWlNu1bNadZk1IADt6yHx9Mng1kqx4bdm9P745taFJawm4b9Srf11hlZk2npELloqRjF1KFygYtW1G69rq0+eVNtLv1PppssAltfvZrSvttCEB07EKbC37FF7dcQ2Zq466ySXWlOklGpJRmVli/HyCltBhouepD6pcP3/mIXuv2ovva3WnStAm7H7grrz5d+T6Crz79GvscvjcAg777bd5+ZQQAb70wlHU3WpfmLZpTUlrCgO03Z9zH41Z+ikZjzohPad2vO636dCGaltLroB2Y8tSwSm3W2mwdBvzmJN44/gaWzJhXvn32iE9p2q4VzTq1BaDLzptWGjDeGH32zmi69e1B595dKW3ahO3234kRT79VrWNLmzbhzD9cyKv/faF8xqnGzs967Zn39qe06tedlrnPeveDdmTak5U/620368smvzmZET/4TaXP+qKJM+mw48ZEaQnRpJQOO27CF5807s/6pj07Mn7mfCbOXsDSZWU8OXI8gzbsVanN9Pkruk+98NEk1u2cHWO1aa+OzF+8lFlfLAbgzc+m0a9L5QHjjU3Z6I8o6dGbkq7doUkTmu60O0uGVphdb+EXzD3pQOadcSTzzjiSZZ+MYsF1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\n",
"text/plain": [
"<Figure size 1080x720 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(15,10))\n",
"mask=np.triu(df.corr())\n",
"sns.heatmap(df.corr(),mask=mask,annot=True)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "de393007",
"metadata": {},
"outputs": [],
"source": [
"x = df.drop('diagnosis', axis=1)\n",
"y = df['diagnosis']"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "09758975",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(590, 8)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.model_selection import train_test_split\n",
"x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.20,random_state=42)\n",
"x.shape"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "f81e6785",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(472, 8) (118, 8)\n"
]
}
],
"source": [
"print(x_train.shape,x_test.shape)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "23965bc4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(472,) (118,)\n"
]
}
],
"source": [
"print(y_train.shape,y_test.shape)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "ec12f24d",
"metadata": {},
"outputs": [],
"source": [
"y_train = np.array(y_train) - 1\n",
"y_test = np.array(y_test) - 1"
]
},
{
"cell_type": "markdown",
"id": "8d95dffb",
"metadata": {},
"source": [
"# Logistic regression"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "5baa9c4b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cross-validation scores: [0.82105263 0.81052632 0.82978723 0.71276596 0.81914894]\n",
"Average cross-validation score: 0.7986562150055991\n",
" precision recall f1-score support\n",
"\n",
" 0 0.82 0.98 0.89 41\n",
" 1 0.92 0.56 0.70 39\n",
" 2 0.80 0.95 0.87 38\n",
"\n",
" accuracy 0.83 118\n",
" macro avg 0.84 0.83 0.82 118\n",
"weighted avg 0.84 0.83 0.82 118\n",
"\n"
]
}
],
"source": [
"from sklearn.datasets import load_iris\n",
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn.model_selection import train_test_split, cross_val_score\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.metrics import confusion_matrix, classification_report\n",
"log_reg = LogisticRegression(multi_class='ovr', solver='liblinear')\n",
"\n",
"# Perform cross-validation on the training set\n",
"cv_scores = cross_val_score(log_reg, x_train, y_train, cv=5)\n",
"\n",
"print(\"Cross-validation scores: \", cv_scores)\n",
"print(\"Average cross-validation score: \", cv_scores.mean())\n",
"\n",
"# Train and evaluate the model with the test set\n",
"log_reg.fit(x_train, y_train)\n",
"y_pred_log = log_reg.predict(x_test)\n",
"\n",
"print(classification_report(y_test, y_pred_log))"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "8a59f018",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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dqU4jLloMTExhIeHU7JkSd5//3127dplScKYAsZni8K90a6cqv4pn+IxRdzu3bvp1KkTt99+O6+88goA27Zto2rVqnZntTEFVI4tChEpqappQKd8jMcUYYMGDaJ+/focOnSI1157zTN29dVXX21JwpgCzFeLYg1Of0SsiMwGZgC/pr+oqv8LcGymiJg9ezYDBw7kzJkzAIgIf/3rX228amMKCX/uoygDxOOMkZ1+P4UCliiMT0lJScTExPDTTz955kVGRrJixQobSMiYQsRXoqjmXvG0iQsJIp3VxzC52rZtmydJlClThhkzZtCnT58gR2WMuVi+EkUIEEbGBJEuuIki/W67iZmmTdBt2LCB6tWrU7VqVdq2bUvfvn0pW7Ys06ZNC3ZoxphL5CtRHFLVJ/MtkrzUq1ewIyh20tLS6NmzJwsWLKBevXqeu6s/++yz4AZmjLlsvu6jKLg/01UzloxNn05/zPE5YJ7JY5MnT6ZMmTIsWLAAgH379nmGKDXGFH6+EkX3fIvCFEqHDx+mXr163H333Zw7dw6ATp068euvv9rlrsYUITkmClVNyOk1YxYtWkT16tXZs2cPAOXKlWPlypUsW7bMLns1poi56KKAxgB06dKFkiWdLq777ruPkydPEhMTE+SojDGBYInC+CU1NZX27dszefJkAEJCQpg/fz7x8fG89tprQY7OGBNIlihMrp5//nlCQ0NZu3Yt9957r6ejumvXrlSqVCnI0RljAs2fO7NNMbVz5046derEkSNHPPN69uwZxIiMMcFgLQqTrQEDBtCwYUNPkqhcuTKbN2/miy++sCuajClmLFGYLObOncv//ueU8ipRogQTJ07k2LFjNGvWLMiRGWOCwU49GQASExMJCwsjJCSEXr160axZM0qXLs3KlSttOFJjijlrURgefvhhKlasSI8ePTzzNm/eTGxsrCUJY4y1KIqzdevWccMNN3DixAkAvv32W9LS0qwPwhiTgSWKYigtLY0ePXqwePFiz7xatWqxatWqApEkzp49y/79+0lJSQl2KMYUOmXKlKFWrVqUKlUqz7ZpiaKYWbJkCT169PDUZgoJCeG1115jzJgxQY7sgv3791OuXDnq1q2LWAl5Y/ymqsTHx7N//37q1auXZ9u1RFHMtGjRwpMkOnfuzKJFiwpEK8JbSkqKJQljLoGIULlyZeLi4vJ0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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import xgboost as xgb\n",
"from sklearn.metrics import roc_curve, auc\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Predict the class probabilities of the testing data\n",
"y_prob = log_reg.predict_proba(x_test)\n",
"\n",
"# Compute the ROC curve and AUC for each class\n",
"fpr = {}\n",
"tpr = {}\n",
"roc_auc = {}\n",
"for i in range(3):\n",
" fpr[i], tpr[i], _ = roc_curve(y_test == i, y_prob[:, i])\n",
" roc_auc[i] = auc(fpr[i], tpr[i])\n",
"\n",
"# Plot the ROC curves and AUCs for each class\n",
"plt.figure()\n",
"lw = 2\n",
"colors = ['red', 'blue', 'green']\n",
"for i, color in zip(range(3), colors):\n",
" plt.plot(fpr[i], tpr[i], color=color, lw=lw,\n",
" label='ROC curve of class {0} (area = {1:0.2f})'\n",
" ''.format(i, roc_auc[i]))\n",
" plt.plot([0, 1], [0, 1], color='black', lw=lw, linestyle='--')\n",
" plt.xlim([0.0, 1.0])\n",
" plt.ylim([0.0, 1.05])\n",
" plt.xlabel('False Positive Rate')\n",
" plt.ylabel('True Positive Rate')\n",
" plt.title('ROC curves and AUCs for each class')\n",
" plt.legend(loc=\"lower right\")\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "24ddd7dc",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x432 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"cm = confusion_matrix(y_test, y_pred_log)\n",
"\n",
"# Define the labels for the confusion matrix\n",
"classes = ['Healthy', 'Non-cancerous', 'Pancreatic cancer']\n",
"\n",
"# Plot the confusion matrix\n",
"plt.figure(figsize=(6, 6))\n",
"plt.imshow(cm, interpolation='nearest', cmap=plt.cm.Blues)\n",
"plt.title('Confusion matrix')\n",
"plt.colorbar()\n",
"tick_marks = np.arange(len(classes))\n",
"plt.xticks(tick_marks, classes, rotation=45)\n",
"plt.yticks(tick_marks, classes)\n",
"fmt = '.2f'\n",
"thresh = cm.max() / 2.\n",
"for i, j in np.ndindex(cm.shape):\n",
" plt.text(j, i, format(cm[i, j], fmt),\n",
" horizontalalignment=\"center\",\n",
" color=\"white\" if cm[i, j] > thresh else \"black\")\n",
"plt.xlabel('Predicted label')\n",
"plt.ylabel('True label')\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "3a9adfe4",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Get the feature coefficients\n",
"feature_importance = np.abs(log_reg.coef_[0])\n",
"\n",
"# Sort the feature importance in descending order\n",
"sorted_indices = np.argsort(feature_importance)[1::]\n",
"sorted_importance = feature_importance[sorted_indices]\n",
"\n",
"# Get the feature names from your dataset (assuming they are stored in a list called 'feature_names')\n",
"sorted_feature_names = [df.columns[i] for i in sorted_indices]\n",
"\n",
"# Plot the feature importance\n",
"plt.figure(figsize=(10, 6))\n",
"plt.barh(range(len(sorted_importance)), sorted_importance, align='center')\n",
"plt.yticks(range(len(sorted_importance)), sorted_feature_names)\n",
"plt.xlabel('Feature Importance')\n",
"plt.title('Logistic Regression - Feature Importance')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "eb25ef16",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Feature '['TFF1', 'LYVE1', 'age', 'creatinine', 'diagnosis', 'sex', 'plasma_CA19_9']': Importance score [0.00365786 0.00374688 0.01836726 0.02765692 0.10125162 0.30531965\n",
" 1.03473583]\n"
]
}
],
"source": [
"print(f\"Feature '{sorted_feature_names}': Importance score {sorted_importance}\")"
]
},
{
"cell_type": "markdown",
"id": "736264ff",
"metadata": {},
"source": [
"# SVM"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "1c0af181",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cross-validation scores: [0.83050847 0.75423729 0.75423729 0.72033898 0.8559322 ]\n",
"Average cross-validation score: 0.7830508474576271\n",
" precision recall f1-score support\n",
"\n",
" 0 0.85 0.95 0.90 41\n",
" 1 0.71 0.77 0.74 39\n",
" 2 0.90 0.71 0.79 38\n",
"\n",
" accuracy 0.81 118\n",
" macro avg 0.82 0.81 0.81 118\n",
"weighted avg 0.82 0.81 0.81 118\n",
"\n"
]
}
],
"source": [
"from sklearn import svm\n",
"from sklearn.model_selection import train_test_split, cross_val_score\n",
"from sklearn.metrics import classification_report\n",
"\n",
"# Initialize SVM model\n",
"svm_model = svm.SVC(kernel='rbf', C=100, gamma='scale', probability=True)\n",
"\n",
"# Perform cross-validation (CV=5)\n",
"cv_scores = cross_val_score(svm_model, x, y, cv=5)\n",
"\n",
"# Print cross-validation scores for each fold\n",
"print(\"Cross-validation scores:\", cv_scores)\n",
"\n",
"# Calculate and print average cross-validation score\n",
"avg_cv_score = cv_scores.mean()\n",
"print(\"Average cross-validation score:\", avg_cv_score)\n",
"\n",
"# Train and evaluate the model with the test set\n",
"svm_model.fit(x_train, y_train)\n",
"y_pred1 = svm_model.predict(x_test)\n",
"print(classification_report(y_test, y_pred1))"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "811920c0",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x432 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"cm = confusion_matrix(y_test, y_pred1)\n",
"\n",
"# Define the labels for the confusion matrix\n",
"classes = ['Healthy', 'Non-cancerous', 'Pancreatic cancer']\n",
"\n",
"# Plot the confusion matrix\n",
"plt.figure(figsize=(6, 6))\n",
"plt.imshow(cm, interpolation='nearest', cmap=plt.cm.Blues)\n",
"plt.title('Confusion matrix')\n",
"plt.colorbar()\n",
"tick_marks = np.arange(len(classes))\n",
"plt.xticks(tick_marks, classes, rotation=45)\n",
"plt.yticks(tick_marks, classes)\n",
"fmt = '.2f'\n",
"thresh = cm.max() / 2.\n",
"for i, j in np.ndindex(cm.shape):\n",
" plt.text(j, i, format(cm[i, j], fmt),\n",
" horizontalalignment=\"center\",\n",
" color=\"white\" if cm[i, j] > thresh else \"black\")\n",
"plt.xlabel('Predicted label')\n",
"plt.ylabel('True label')\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "c0847ae7",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEWCAYAAAB42tAoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAsTAAALEwEAmpwYAABJQklEQVR4nO3dd3hUZfbA8e8htMQQpCqCVOlJ6BDEBQQpElZEFBZFBFF3cRELi2VtrLC79t4VfuiiouAqrKBIFaQjRlCaSJTeAgQiCYFwfn/cm2FCJpMhZDIp5/M88zD3zi1nboY589733vOKqmKMMcbkpFSoAzDGGFO4WaIwxhjjlyUKY4wxflmiMMYY45clCmOMMX5ZojDGGOOXJQpjvIjIIhG5LdRxBEJEOonIzyKSIiLXhjoeX0Skq4jsLCzbMXljiaIQE5FfRSTV/SLYKyKTRSTyrGUuF5EFInJMRJJF5H8i0uysZaJE5EUR2e5u6xd3umrBvqPiQUSGiYiKyCAf87/1sfyvInKV13R7EZktIkdE5JCIrBKR4XkI5QngVVWNVNXP87C+MQGxRFH4/VFVI4GWQCvgocwXRKQj8DUwA7gEqAf8ACwVkfruMmWB+UBzoDcQBXQEkoD2wQpaREoHa9uFwC3AIWDoua7o/s0WAN8AlwFVgJHA1XmIow7wUx7WK+5/H5PfVNUehfQB/Apc5TX9NDDLa3oJ8LqP9b4E3nef3wbsAyLPYb/Ngbk4X4b7gL+78ycDE7yW6wrsPCveB4B1wAn3+fSztv0S8LL7vCIwEdgD7AImAGHua5fhfJkmAweBj/3EOw3Y6y67GGju9dpk4DVgFnAMWAk08Hq9B7DJXfdVd5+3+dlXHeA0MAA4BVzs9dow4Ft/f0fgW+A1P9uvCnwBHHGP/xKglI/lfnHjSAVSgHI4PxZmuuttBW73Wn4cMB2YAhz19R7dbTwLbHf/7m8C4e5rldy4DgCH3ee1vNatDPwfsNt9/XPvzwgwBtjv/q2H+3n/frfjtdyD7jE4BmwA+nu95vOzAwjwghvHUWA9EB3q/+dF4WEtiiJCRGrh/Orc6k5HAJfjfEme7ROcL0CAq4CvVDUlwP1UAOYBX+F88VyG0yIJ1GAgHrgQmAr0cbeJiIQBA4EP3WUn43zZXobTWuqJk9gAxuO0lioBtYBX/OzzS6AhUB1YC3xw1ut/Av7hbmsr8E83nqrAf4FHcL6gfwE65fL+hgJrVPVTYCNwUy7Le7h/s444X9g5GYPzxVoNuAj4O5Ctzo6qNsD5Qv+jOqeeTuAc7504f7frgX+JSDev1fq5+76Q7McI4EmgEU7r9TKgJvCY+1opnC/wOkBtnAT1qte6/wEicH5kVMf5Qs50Mc6PgprACOA1EamUw/v3tx1vvwB/cLf7D2CKiNRwX8vps9MT6Oy+x4o4n8WkHLZvvIU6U9kj5wfOL9EUnF9NivOFfaH7Wi13XhMf6/UGTrrP5wJPnsM+BwPf5/DaZHJvUdx61jrfAkPd5z2AX9znF+G0OsLP2vdC9/n7wNt4/WoNMP4L3eNS0Svmd71e7wNscp8PBVZ4vSY4X7T+WhQ/A/e4zx8CfvB6bRh+WhQ4X5Q+/2Zeyz6BcyrxsgA/H5ktlUuBDKCC1+v/Bia7z8cBi/1sS4Dfydra6ggk5rB8S+Cw+7wGTuumko/luuIkldJe8/YDcT6WzW07O/3EnwD08/fZAboBW4A4fLTS7JHzw1oUhd+1qloB5z9KE5xfvuA0y0/j/Oc6Ww2cJjc4v5h8LZOTS3F+reXVjrOmP8RJAAA3cqY1UQcoA+xxO3WPAG/h/IoEuB/ny2uViPwkIrf62pmIhInIk24H/VGcL084c5zAOS2V6TiQeUHAJd7xqvNtcnb83vvqhNMPNNXrvcWISEt3+pT7ns5WBjiJ/79ZpmdwWj1fi8g2EXnQz7LeLgEOqeoxr3m/4SSnTDm+N5wWTATwndff4yt3PiISISJvichv7nFeDFzothIvdfd9OIdtJ6nqKa9p77+Bt9y24yEiQ0UkwSvWaM78zX1+dlR1AU4r6DVgv4i8LSJRue3LWGd2kaGq3+D8On7Wnf4dWA7c4GPxgZw5XTQP6CUiFwS4qx1A/Rxe+x3nyyTTxb5CPWt6GtDVPXXWnzOJYgdOi6Kqql7oPqJUtTmAqu5V1dtV9RLgz8DrInKZj/3diHNK5Sqc0wl13fni5z1m2oPz5eSsICLe0z7c4m43QUT24vR3ZM4H51RQbXc7mduMwEl+v6nqcZy/2YCcdqCqx1R1jKrWB64B7hOR7gG8l91A5czTfK7aOH0/ns37Wf8gzi//5l5/j4rqXEgBzimxxkAHVY3COYUDzvHY4e77wgDi9Ceg7YhIHeAdYBRQRVUvBH50Y/H72VHVl1W1DdAM5xTU2POMuUSwRFG0vAj0EJEW7vSDwC0iMlpEKohIJRGZgHPK4B/uMv/B+Q/4qYg0EZFSIlJFRP4uIn187OMLoIaI3CMi5dztdnBfS8Dpc6gsIhcD9+QWsKoeABbhnN9OVNWN7vw9OOeRn3Mv3y0lIg1EpAuAiNzgJhdwfokrzq/xs1XASThJOEnsX7nF5GUW0FxErnOvAhqN7+SHiJTHScB34Jx2yXzcBdzorr8SSAMeFJHybnJ+EliD8+senF+7w0RkrIhUcbfdQkSmus/7ishlbrJJxjmd5Ot9Z6GqO4BlwL/dfcfi9AdMCeRAqOppnC/fF0SkuhtLTRHp5S5SASeRHBGRysDjXuvuweknet39DJYRkc6co3PYzgU4n4cDbpzDcVoUuNM+Pzsi0k5EOohIGZwfPWkEcGyNJYoixf3SfR+3g1FVvwV6Adfh/Dr+DadT+ApV/dld5gTOr+1NOP0VR4FVOM30lWftAvfURQ/gjzinbH4GrnRf/g/O5be/4nzJfxxg6B+6MXx41vyhQFmcq1YO43S0Zp6WaQesFJEUnCt57lbVbT62/b77vne521kRYEyo6kGcFtmTOImmIbA0h8WvxfmifN/9xbpXVfcCk4DSQG/3WMdz5kqfbTinhAa6p7VQ1WU458q7AdtE5BDO+fTZ7n4a4rQCU3BaH6+r6sIA39JgnBbVbuAz4HFVnRfguuBcpbYVWOGeXpqH04oA50dKOE7LYwXOaSlvN+OcXtuE0wdxzzns95y2o6obgOdwjs8+IIasf7ecPjtROMnwMM5nJgnnVJ/JhbifX2OMMcYna1EYY4zxyxKFMcYYvyxRGGOM8csShTHGGL+KXGGwqlWrat26dUMdhjHGFCnffffdQVWtlpd1i1yiqFu3LmvWrAl1GMYYU6SIyG+5L+WbnXoyxhjjlyUKY4wxflmiMMYY45clCmOMMX5ZojDGGOOXJQpjjDF+BS1RiMgkEdkvIj/m8LqIyMsislVE1olI62DFYowxJu+C2aKYjDMkZ06uximp3BCnxv8bQYzFGGNKrEOHDp3X+kG74U5VF4tIXT+L9MOp7a849e8vFJEa7uAlJtji42H27NyXMybI4vmC2cSHOoxirB3UO7+blEPZR1GTrGP47iTr+L4eInKHiKwRkTUHDhwokOCKPUsSppCwJBFsLZ1Bes9DkejMVtW3VbWtqratVi1PpUpMTlTtYY/QPuyjmK+PV155lW7dunumT5160xld/DyEstbTLrIOZF+LrAPBG2OMCdD27du5/PLL2bXL+Rp9//33GTp0KGFhYVDp/LYdyhbFTGCoe/VTHJBs/RPGGHPubr75ZurUqeNJEhdeeCGxsbH5tv2gtShE5COcQearishO4HGgDICqvokzmHwfnMHcjwPDgxVLkWadzsVG/IfxzP7Z/pbZjHP+kX+ENIqi6SjwFbDBnb4I6AtHLj1CqxmtYEb+7CaYVz0NzuV1Bf4arP0XG8FMEn36BG/bJhtLEibfzQI24/wEvxLoAITl/26K3HgUJZZXp58p2vTx/P9birjbto9JsZeSkkJkZCQA71zyDqNHj+bDDz+kf//+fteTcZLnfRaJq56MMaak+/HHH6latSqVK1cmIyMDgNtvv53U1NRck8T5skRhjDGFWEZGBvHx8cTExJCUlMTJkyd5+umnCzQGSxTgdBiLFM6HCan8/Ghkso+JCdSUKVMIDw9ntttXWapUKZ599lkeeuihAo3D+iig8F9VFECns11REyTt3UcRYNcmFC9NmzZl06ZNnun27duzZMkSypYtW+CxWKLwVoR7Ai1JFA19GvZhVtH9mJkClJaWBkBkZCSzZs2ic+fOIYvFEkUxE4wrakoyu5rIFJSlS5fy6aef8vzzzwOwatUqJkyYwEsvvRTiyCxRGGNMSKWnp9O1a1eWL18OwE033USbNm2oVq1aoUgSUBI7s331ThpjTAi8+OKLREREeJJE6dKl2bOn8FUyKnktipw6rktoT6BVCDGm4CUmJtKpU6csSaFXr17MmjXLKeJXyJS8RJHJTjoDliQCUUJ/Q5ggaty4MSdPngSgcuXKLFy4MF+L+OW3knfqyfgU6hr6hfkxa1ao/zqmuLnjjjsQEf7+97+TlJRUqJMEWKIwxpigSklJISYmBu9B11599VXS0tL45z//GcLIAmeJwhhjguTRRx8lKiqKH3/8kYMHD/LKK694XgvFjXN5ZYmiCPO+gCuTlX4wJvTWrVtH5cqVmTBhAur2hw4aNIi77rorxJHlTbHvzM5W2mKc++8/isG3ZD6Vl7DOWmPyT+/evZkzZ45nukaNGixdupR69eqFMKrzU+xbFCWptEWfhn2ss9aYEMu8JyIsLIznnnuO3bt3F+kkASWgRZHJU9qiGNVkKEZvxZgi68CBA8ydO5cbb7wRgDlz5jB27Fjmz59fpPoh/Cn2LQpjjAmWv/zlL1SvXp2bbrqJQ4cOARAXFxeyKq/BYomikMjLuAfGmNBYtGgRkZGRvPXWW555X331VQgjCq4Sc+qpsMvrHdLWEW1MwUlPT+eKK65g9erVnnkNGjRg1apVVK5cOYSRBZclikLG+huMKbyioqI4ceIEAGXKlGHSpEkMGTIkxFEFn516MsaYAHXo0AGAPn36kJqaWiKSBFiLwhhjcnTDDTewbds2vvvuOwAWLFjAL7/8QqNGjUIcWcGyFoUxxpzls88+o3z58kyfPp21a9fy4YcfAs69ESUtSYC1KIwxxiM5OZmOHTuyceNGz7zY2Fj69+8fwqhCz1oUxhgDPPTQQ1SqVMmTJMLDw5k1axY//PAD4eHhIY4utCxRGGMM8Oyzz3oK+N14440cP36cPnb9OVCSEoXdpWaM8ZKRkZHlFNPrr79OzZo1+e233/jggw9CGFnhU3IShTf7lWBMifbOO+9Qvnx5YmNjycjIAOD2229n586d1K5dO8TRFT4lpzPb7mQzpsTbu3cvHTp0YPv27Z5506dPZ9CgQSGMqvArmS0KY0yJM2LECGrUqOFJElFRUaxcudKSRACCmihEpLeIbBaRrSLyoI/Xa4vIQhH5XkTWiYidEzLG5KuMjAwqVqzIpEmTABAR7r77bpKTk2nfPh9G/ioBgnbqSUTCgNeAHsBOYLWIzFTVDV6LPQJ8oqpviEgzYDZQN1gxGWNKnrCwMCpXrszRo0dp2LAhK1asKNYF/IIhmC2K9sBWVd2mqunAVKDfWcsoEOU+rwjsDmI8xpgS4qmnnuLmm2/2TK9atYqpU6eyZcsWSxJ5EMxEURPY4TW9053nbRwwRER24rQmfI48LiJ3iMgaEVlz4MCBYMRa4M4ef8IYc/62bNnCRRddxIMPPsiUKVM8NZqqVatmfRHnIdSd2YOByapaC+gD/EdEssWkqm+raltVbVutWrUCDzIYfI0/YVftGpM3GRkZ9O/fn8aNG7N//34AqlatSoUKFUIcWfEQzESxC7jUa7qWO8/bCOATAFVdDpQHqgYxpkJH9cxj1qxQR2NM0fPpp58SERHB559/DkCpUqUYP348Bw4cKJEF/IIhmPdRrAYaikg9nATxJ+DGs5bZDnQHJotIU5xEUTzOLRljgi4jI4OBAwdy+vRpAFq1asXSpUtLfG2m/Ba0FoWqngJGAXOAjThXN/0kIk+IyDXuYmOA20XkB+AjYJiq3RlnjPEvPT0dcK5oGjlyJOHh4Xz99desXbvWkkQQSFH7Xm7btq2uWbMm4OXlH05PsT5euN5nZgd2ETv8xoTUqlWr6NmzJwBHjhwJbTBFjIh8p6pt87JuqDuzjTEmVxkZGXTp0oUOHTqQnJxMcnIyX3zxRajDKjEsURhjCrU33niDcuXKsXjxYgBKly7Nm2++Sd++fUMcWclRcooCGmOKlIyMDOrVq8eOHWdux+rSpQvz588nLCwshJGVPJYojDGFUlhYGMnJyQBUrFiR+fPn06ZNmxBHVTLZqSdjTKExZ84cnnvuuSzTY8aM4ciRI5YkQshaFMaYkEtNTeXyyy8nISEBgOHDh1O5cmXi4uKIi4sLbXDGWhTGmNCaMGECkZGRniRRtmxZtmzZEtqgTBbWojDGhMTGjRvp3LkzBw8e9My79tprmT59unVWFzIBJwoRiVDV48EMxhhTMmRkZNC8eXMyb/itXr06S5YssdpMhVSup55E5HIR2QBscqdbiMjrQY/MGFNshYWF8Yc//IFSpUrx5JNPsm/fPksShVggLYoXgF7ATABV/UFEOgc1KmNMsXLo0CHi4uIICwtj48aNACxYsID09HSrzVQEBNSZrao7zpqVEYRYjDHF0D333EPVqlX5+eef2bRpE4sWLQKcVoUliaIhkBbFDhG5HFARKQPcjVMNNuTiP4xn9s8+RgAyxoTcihUr6NWrF0ePHvXMu+222+jatWvogjJ5Ekii+AvwEs4wpruAr4E7gxlUoAJNEn3sSjtjCkxGRgZdu3bl22+/9cyrU6cOK1as4OKLLw5hZCavAkkUjVX1Ju8ZItIJWBqckM6d3xLimfW8PyiYWIwxTmsCnAJ+r7/+OrfffnuIIzLnI5A+ilcCnGeMKaG2b9/O3LlzAafv4fXXX6dbt26kpaVZkigGcmxRiEhH4HKgmojc5/VSFGB3wxhjALj55puZMmUKpUuXJi0tjbCwMG6//XZLEMWIvxZFWSASJ5lU8HocBa4PfmjGmMJs9uzZhIeHM2XKFMDpm1i9enWIozLBkGOLQlW/Ab4Rkcmq+lsBxmSMKcRSU1OJi4tj3bp1nnnNmzdnxYoVREZGhjAyEyyBdGYfF5FngOZA+cyZqtotaFEZYwql9PR0KlSoQEaGcytVuXLl+Oijj+jfv3+IIzPBFEhn9gc45TvqAf8AfgWsfWlMCVS2bFkuvfRSAK6//nrS0tIsSZQAgbQoqqjqRBG52+t0lCUKY0qAjIwM+vbtS9myZZkxYwYAq1at4ujRozRo0CDE0ZmCEkiiOOn+u0dE4oHdQOXghWSMKQymTJnCrbfeysmTzldAQkICLVu2pFq1alSrVi3E0ZmCFEiimCAiFYExOPdPRAH3BDMoY0zoHDhwgLi4OLZt2+aZFxcXR7NmzUIYlQmlXPsoVPULVU1W1R9V9UpVbQMcKoDYjDEFbNSoUVSvXt2TJCIjI/nmm29Yvnw5ZcuWDXF0JlRyTBQiEiYig0XkbyIS7c7rKyLLgFcLLEJjTIFITU3ltdde80yPHDmSY8eO0bmzjSpQ0vlrUUwEbgOqAC+LyBTgWeBpVW1VEMEVVfHxTokpfw9jCoP09HS2b98OQHh4OKNGjaJevXrs37+f11+38cmMw1+iaAv0UNWHgD5AX6CTqn5eEIEVZbMDrHzep09w4zDGn+eff57w8HBiYmI881555RW2bdtmndUmC3+d2emqehpAVdNEZJuqJhVQXMWC+ilqa0yoJCYm0qlTJ/bs2QPA0aNHPVc0GeOLv0TRREQy79EXoIE7LYCqamzQozPG5KtBgwbxySefeKYrV67MwoULiY21/84mZ/4SRdMCi8IYE1QpKSlUq1aNtLQ0AESEhx9+mPHjx4c4MlMU+CsKaIUAjSkmIiMjKVu2LGlpaURHR7N8+XIr4GcCFkitpzwTkd4isllEtorIgzksM1BENojITyLyYTDjMaYkefjhh3n44Yc903PnzuV///sf69evtyRhzkkgd2bniYiEAa8BPYCdwGoRmamqG7yWaQg8hHM11WERqR6seIwpKdatW0fXrl05fPgwAGPGjKFy5cq0b98+xJGZoiqgFoWIhItI43Pcdntgq6puU9V0YCrQ76xlbgdeU9XDAKq6/xz3YYxxZWRk0KNHD1q0aOFJEjVq1CA1NTXEkZmiLtdEISJ/BBKAr9zpliIyM4Bt1wR2eE3vdOd5awQ0EpGlIrJCRHoHFLUxJovJkydTvnx55s2bBzjjVr/wwgvs3r2bmjXP/m9nzLkJ5NTTOJzWwSIAVU0QkXr5uP+GQFegFrBYRGJU9Yj3QiJyB3AHQO3atfNp18YUD8nJyQwfPtwzffnll7Nw4UKrzWTyTSCnnk6qavJZ8wK5lWwXcKnXdC13nredwExVPamqicAWnMSRdWeqb6tqW1Vta3eMGuPIHGWuYsWKdOnShQoVKvDtt9+ydOlSSxImXwWSKH4SkRuBMBFpKCKvAMsCWG810FBE6olIWeBPwNmnrD7HaU0gIlVxTkVt43ycXWjJmGJm0aJFREZG0rBhwyzzjh49SqdOnUIYmSmuAkkUd+GMl30C+BBIJoDxKFT1FDAKmANsBD5R1Z9E5AkRucZdbA6QJCIbgIXA2PMuE+Kr0JIVVTLFQHp6Ou3bt+fKK6/k999/JzExkS1btoQ6LFMCBNJH0URVHwYeznXJs6jqbGD2WfMe83quwH3uI39ZoSVTjDz99NM89NBDnD59GoAyZcowefJkGjVqFOLITEkQSKJ4TkQuBqYDH6vqj0GOyRjjSk5OpnHjxuzbt88zLz4+nhkzZhAWFhbCyExJEsgId1cCVwIHgLdEZL2IPBL0yIwxREZGkpTknI2tUqUK69ev54svvrAkYQpUQDfcqepeVX0Z+AvOPRWP+V/DGJNXn332GR9//DHg3A/xzjvvMG7cOA4ePEh0dHSIozMlkWgu5/JFpCkwCBgAJAEfA5+G6i5quUSUP2edp497vYfMK51C2EdRCEIwRVBycjJxcXFs2rSJ0qVLk5aWZi0Hk29E5DtVbZuXdQNpUUwCjgC9VLWrqr5RmEpt9GloVzSZou+BBx6gUqVKbNq0CXA6qzOHKDUm1HJtURQ2como7vYTcyH4OV8IQjBFREJCAldeeSVHjhzxzBsyZAj/+c9/QheUKZbOp0WR41VPIvKJqg4UkfVkvRPbRrgzJh8cOHCAVq1aeaZr1qzJsmXLrEyNKXT8XR57t/tv34IIxJiSplq1atStW5cdO3bw4osvMmrUqFCHZIxP/ka42+M+vVNVH/B+TUSeAh7IvpYxJid79+6lQ4cONGrUiLlz5wKwfv16wsPDrdPaFGqBdGb38DHv6vwOxJjibMSIEdSoUYPt27czb948du1y6mNGRkZakjCFnr8+ipHAnUB9EVnn9VIFYGmwAzOmOFiwYAF//OMfOX78OAAiwj333GNjRJgixV8fxYfAl8C/Ae/xro+p6qGgRmVMEZeamsoVV1zB2rVrPfMaNWrE8uXLqVy5cggjM+bc+Tv1pKr6K/BX4JjXAxGxT7oxfqSmpnqSRNmyZZk6dSqbN2+2JGGKpNxaFH2B73Auj/Ue3EGB+kGMy5giZ8uWLaSlpREbG0vlypW59957+eWXX/jvf/9r/RCmSLMb7oKgEIRgClBGRgYDBgxgxowZREVFkZx89oCQxoReUEt4iEgnEbnAfT5ERJ4XEbsjyBhg2rRpREREMGPGDABSUlLYu3dviKMyJn8FcnnsG8BxEWkBjAF+Aay+gCnRMseJGDhwIOnp6QC0atWKlJQULr744hBHZ0z+CiRRnHJHousHvKqqr+FcIltsnT3s9rk+TPG2fft2KlWq5BmGNCIigq+//pq1a9cSHh4e4uiMyX+BJIpjIvIQcDMwS0RKAWWCG1Zo+Rp2+1zZMN3FV+3atalQwfmtNHz4cH7//Xd69PB1X6oxxUMgQ6EOAm4EblXVvW7/xDPBDatwsM5oA05ndbdu3WjTpg3PP/88AEuXLqVSpUp245wpEQK66klELgLauZOrQjkeRUFc9WRXLZlMb7zxBnfddRcZGRkAJCUl2b0QpkgKSplxr40PxGlBLMK5l+IVERmrqtPzskNjioJdu3YRFxfHzp07PfOuvPJKKlasGMKojAmNQE49PQy0y2xFiEg1YB5gicIUS7fccgvvv/++Z7pixYrMnz+fNm3ahDAqY0InkM7sUmedakoKcD1jipxffvnFkyREhDFjxnDkyBFLEqZEC6RF8ZWIzAE+cqcHAflwXZAxhUNqairp6elUrFiRBg0acNVVV7Fjxw5Wrlxpp5qMIfDO7OuAK9zJJar6WVCj8heLdWabfDR+/HjGjRtHnTp12LZtW6jDMSZogjVmdkPgWaABsB74m6ruyluIxhQuGzdupHPnzhw8eBCAxMREkpOTrQVhjA/++homAV8AA3AqyL5SIBEZE0QZGRn07duXZs2aeZJE9erV2bp1qyUJY3LgL1FUUNV3VHWzqj4L1C2gmAqUr3IdpnjasmULERERzJo1C4BSpUrx5JNPsm/fPho0aBDi6IwpvPx1ZpcXkVacGYci3HtaVdfmuGYRklO5DivBUfw0aNCA06dPA9C2bVuWLl1K2bJlQxyVMYVfjp3ZIrLQz3qqqt2CE5J/+d2ZbR3Xxdvdd99Nq1atGDZsGACffvopVapUoWvXriGNy5iCdj6d2SV+4CJLFMXTihUr6NWrF0ePHqV06dKkpaXZKHOmRAvqwEXGFCXp6elcccUVdOzYkaNHjwJQq1YtUlNTQxyZMUVXUBOFiPQWkc0islVEHvSz3AARURHJU7YzBuCVV14hIiKCpUuXAlC6dGneffddEhMTiYyMDHF0xhRdQTv1JCJhwBagB7ATWA0MVtUNZy1XAZgFlAVGqeoav9u1U0/Ghx9//JGYmBjPdPfu3ZkzZ46dbjLGFewxs8UdK/sxd7q2iLQPYNvtga2quk1V04GpOKPknW088BSQdg5xGwPgKf8dHR1N/fr1qVSpEt9//z3z5s2zJGFMPgnk1NPrQEdgsDt9DHgtgPVqAju8pne68zxEpDVwqarO8rchEblDRNaIiN/Whik5Zs+eTXh4eJaR5bZs2cKhQ4do2bJl6AIzphgKJFF0UNW/4v7iV9XDOKeJzos7pOrzwJjcllXVt1W1bbZmk90tV+KkpKQQGxtLfHw8aWlpLFy40NNRbS0IY4IjkERx0u1vUPCMR3E6gPV2AZd6Tddy52WqAEQDi0TkVyAOmHlOHdp5uFvu7Nxiio7HH3+cqKgo1q9fD0C5cuWYMWMG4eHhIY7MmOItkDLjLwOfAdVF5J/A9cAjAay3GmgoIvVwEsSfcMbeBkBVk4GqmdMisgin8OC5n146h55oX7nF7sIu3BITE2nbti2HDh3yzLv++uuZNm1aCKMypuTINVGo6gci8h3QHad8x7WqujGA9U6JyChgDhAGTFLVn0TkCWCNqs48z9jPi13lVHRERkZ6ksTFF1/MsmXLqFevXoijMqbkyPXyWBGp7Wu+qm4PSkS5yHJ5bB6ubbXLYYuGKVOm0KhRI9q3dy6we/zxx6lYsSL33XdfiCMzpmgKagkPEVmP0z8hQHmgHrBZVZvnZYfnyxJF8XbgwAHi4uLYtm0bUVFRJCcnhzokY4qFoN5Hoaoxqhrr/tsQ5/6I5XnZmTH+jBo1iurVq3tGmlNVK71hTCFwziU83PLiHYIQiymhFi9eTIUKFXjttTO354wcOZKjR4/aFU3GFAK5dmaLiPdJ4VJAa2B30CIyJcqKFSvo0qWLZ7pevXqsXLmSatWqhTAqY4y3QFoUFbwe5XDqMvkqxWHMOYuLiyMqKorSpUvz3nvvsW3bNksSxhQyflsU7o12FVT1bwUUjynmEhMT6dSpEzfccAMvvfQSAJs3b6ZatWp2Z7UxhZS/Ee5Ku/dCLFfVjgUcV47sqqeia9CgQXzyyScAiAhpaWk2FKkxBeR8rnry16JYhdMfkSAiM4FpwO+ZL6rqf/OyQ1PyzJw5k4EDB3LixAnASRKPPvqoJQljiohASniUB5KAbpy5n0IBSxTGr5SUFOLi4vjpp58882JiYli2bJkNJGRMEeIvUVR3r3j6kTMJIpOduDG52rx5sydJlC9fnmnTptG3b98QR2WMOVf+EkUYEEnWBJHJEoXxad26ddSoUYNq1arRpk0b+vXrR0REBB9++GGoQzPG5JG/zuy1qtq6gOPJlXVmF04ZGRn07t2befPmUa9ePc/d1caYwiFYJTxstAYTkIkTJ1K+fHnmzZsHwI4dOzxDlBpjij5/iaJ7gUVhiqS9e/dSr149brvtNk6dOgVAp06d+P333+2eCGOKkRwThaoeyuk1YxYsWECNGjX49ddfAahQoQLLly/n22+/tctejSlmzrkooDEAXbp0oXRp51qIUaNGcfToUeLi4kIclTEmGCxRmICkp6fTvn17Jk6cCEBYWBhz584lKSmJV155JcTRGWOCKdeBiwqbc73qKT7e9zjZRexth9TTTz/NQw89xOnTpyldujRpaWnWB2FMEROsEh7Fgq8k0adPwcdRFP3yyy906tSJffv2eeb17t07hBEZY0Kh2CeKTNaCODcDBgzgv/89U6WlSpUqLFmyhKZNm4YwKmNMKFgfhclm9uzZniRRqlQpxo0bx8GDBy1JGFNCFfs+CrsTOzDJyclERkZ6+h6aNWtG2bJlWb58uQ1HakwxEKw7s00Jcf/991OpUiV69OjhmbdhwwYSEhIsSRhjinaLIl5mMZv4gNYrYm+zQHz33XdcddVVHDlyBHBOM6Wnp9sVTcYUQyX2qqdAk4Rd5ZRVRkYGPXr0YOHChZ55tWrVYsWKFYUiSZw8eZKdO3eSlpYW6lCMKXLKly9PrVq1KFOmTL5ts0gnikzWWgjcokWL6NGjh6c2U1hYGK+88gojR44McWRn7Ny5kwoVKlC3bl1ErDalMYFSVZKSkti5cyf16tXLt+0Wi0RhAte8eXNPkujcuTMLFiwoFK0Ib2lpaZYkjMkDEaFKlSocOHAgX7drndklwIgRI1i1ahUA1apV44UXXmDlypV88803hS5JZLIkYUzeBOP/jrUoirG5c+dy7bXXcvz4caZPn05ycjIA99xzT2gDM8YUKdaiKIZSU1Np06YNPXv25Pjx4wBccsklNpjQOQgLC6Nly5ZER0fzxz/+0XNlGMBPP/1Et27daNy4MQ0bNmT8+PF4Xz345Zdf0rZtW5o1a0arVq0YM2ZMCN5B3gwePJjY2FheeOGFgJaPjIwMShyqyujRo7nsssuIjY1l7dq1PpdLTU2lS5cuhfqz/e9//5vLLruMxo0bM2fOHJ/LLFiwgNatWxMdHc0tt9ziOT38zDPP0LJlS89nMSwsjEOHDpGenk7nzp09ywWdqhapBzXQTE43thov48eP11KlSinOuOZatmxZ/eSTT0Id1jnZsGFDqEPQCy64wPN86NChOmHCBFVVPX78uNavX1/nzJmjqqq///679u7dW1999VVVVV2/fr3Wr19fN27cqKqqp06d0tdffz1fYzt58mS+bi/Tnj17tEGDBue0jvdxyk+zZs3S3r176+nTp3X58uXavn17n8u9+uqr+uKLLwa83dOnT2tGRkZ+hZmrn376SWNjYzUtLU23bdum9evX11OnTmVZJiMjQ2vVqqWbN29WVdVHH31U33333Wzbmjlzpl555ZWe6XHjxumUKVN87tfX/yFgjeb1ezevK4bqYYkiZ5988oknQQDar1+/bB/KoiDLhzzzj5zfj1x4fwG+8cYbOnLkSFVVfffdd/Xmm2/OsuzWrVu1Vq1aqqp6880368SJE3Pd/rFjx3TYsGEaHR2tMTExOn369Gz7nTZtmt5yyy2qqnrLLbfon//8Z23fvr3ee++9WqdOHT18+LBn2csuu0z37t2r+/fv1+uuu07btm2rbdu21W+//TbbvlNTUz37btmypS5YsEBVVWNiYrR8+fLaokULXbx4cZZ19u7dq9dee63GxsZqbGysLl26NEu8x44d027dummrVq00OjpaP//8c1VVTUlJ0T59+mhsbKw2b95cp06dqqqqDzzwgDZt2lRjYmJ0zJgx2WK844479MMPP/RMN2rUSHfv3p1tuY4dO2piYqLfGBITE7VRo0Z68803a7NmzfTXX3/Vp59+Wtu2basxMTH62GOPebbXr18/bd26tTZr1kzfeuutbPs7V//617/0X//6l2e6Z8+eumzZsizL7N+/X+vXr++ZXrx4sV599dXZtjV48GB9++23PdMJCQk+l1MtYokC6A1sBrYCD/p4/T5gA7AOmA/UyXWblij8qlixolavXt3z66QoKkyJ4tSpU3r99dfrl19+qaqq9957r89fsBdeeKEmJydrq1atNCEhIdft33///Xr33Xd7pg8dOpRlv6rZE0V8fLwn8Y8ePVonTZqkqqorVqzQ7t27q6rzZbJkyRJVVf3tt9+0SZMm2fb97LPP6vDhw1VVdePGjXrppZdqamqqJiYmavPmzX3GO3DgQH3hhRc8x+TIkSNZ4j158qQmJyerquqBAwe0QYMGevr0aZ0+fbredtttnu0cOXJEDx48qI0aNdLTp0+rqmZJeJni4+M970NVtVu3brp69eosy5w4cUIvuugiz3ROMSQmJqqI6PLly1VVdc6cOXr77bd7Whfx8fH6zTffqKpqUlKSqjotx+bNm+vBgwezxXbPPfdoixYtsj3+/e9/Z1v2r3/9q/7nP//xTN966606bdq0LMucPn1aa9eu7Xl/o0eP1ujo6CzL/P7771qpUiVPfKrO36Fq1arZ9qma/4kiaJ3ZIhIGvAb0AHYCq0Vkpqpu8Frse6Ctqh4XkZHA08CgYMVU3EybNo0hQ4Zwxx13eAYPSkpKKrRXMuWJhuYmmdTUVFq2bMmuXbto2rRplvIm+WHevHlMnTrVM12pUqVc17nhhhs8f9tBgwbxxBNPMHz4cKZOncqgQYM8292w4cx/saNHj5KSkpKlL+Hbb7/lrrvuAqBJkybUqVOHLVu2EBUVleO+FyxYwPvvvw84/TcVK1bM8rqq8ve//53FixdTqlQpdu3axb59+4iJiWHMmDE88MAD9O3blz/84Q+cOnWK8uXLM2LECPr27Uvfvn1zfe++HDx4kAsvvDDXGADq1KnjGYHx66+/5uuvv6ZVq1YApKSk8PPPP9O5c2defvllPvvsMwB27NjBzz//TJUqVbLsN9D+m0CJCFOnTuXee+/lxIkT9OzZM9v/4f/973906tSJypUre+aFhYVRtmxZjh07RoUKFfI1prMFszO7PbBVVbepajowFejnvYCqLlTV4+7kCqBWEOMpNpKTk2ncuDEDBw4kPT2d119/3fNasUoSIRQeHk5CQgK//fYbqsprr70GOMUSv/vuuyzLbtu2jcjISKKiomjevHm218+F96WNZ9+ZfsEFF3ied+zYka1bt3LgwAE+//xzrrvuOgBOnz7NihUrSEhIICEhgV27dgWtw9nbBx98wIEDB/juu+9ISEjgoosuIi0tjUaNGrF27VpiYmJ45JFHeOKJJyhdujSrVq3i+uuv54svvvA5xknNmjXZsWOHZ3rnzp3UrFkzyzLh4eFZjlFOMUDWY6eqPPTQQ55jtHXrVkaMGMGiRYuYN28ey5cv54cffqBVq1Y+qwPce++9ng5m78eTTz6Zp/cBzt9zyZIlrFq1is6dO9OoUaMsr0+dOpXBgwdnW+/EiROUL18+2/z8FsxEURPY4TW9052XkxHAl75eEJE7RGSNiKzJx/iKpPvuu49KlSqxZcsWACIiIvjqq69CHFXxFRERwcsvv8xzzz3HqVOnuOmmm/j222+ZN28e4LQ8Ro8ezf333w/A2LFj+de//uX5+5w+fZo333wz23Z79OjhST4Ahw8fBuCiiy5i48aNnD592vPL1hcRoX///tx33300bdrU86u3Z8+eWYamTUhIyLbuH/7wBz744AMAtmzZwvbt22ncuLHf49C9e3feeOMNwCkBk3mpdabk5GSqV69OmTJlWLhwIb/99hsAu3fvJiIigiFDhjB27FjWrl1LSkoKycnJ9OnThxdeeIEffvgh2/6uueYa3n//fVSVFStWULFiRWrUqJFlmUqVKpGRkeH5Ms8phrP16tWLSZMmkZKSAsCuXbvYv38/ycnJVKpUiYiICDZt2sSKFSt8rv/CCy94koz348EHH/T5PqZOncqJEydITEzk559/pn379tmW279/P+B88T/11FP85S9/yXJsv/nmG/r1y/I7m6SkJKpWrZqvpTpylNdzVrk9gOuBd72mbwZezWHZITgtinK5breE9lF8//33GhUVlaWzOvM8c3FT2K56UlXt27evvv/++6qqum7dOu3SpYs2atRIGzRooOPGjfOcb1dV/d///qetW7fWJk2aaNOmTXXs2LHZtn/s2DEdOnSoNm/eXGNjY/XTTz9VVadfon79+tqhQwf961//mqWP4uxz26tXr1ZAJ0+e7Jl34MABHThwoMbExGjTpk31z3/+c7Z959SZ7a+PYu/evXrNNddodHS0tmjRwtMhm3mcDhw4oHFxcRodHa3Dhg3TJk2aaGJion711VcaExOjLVq00LZt2+rq1at19+7d2q5dO42JidHo6Ogs8Wc6ffq03nnnnVq/fn2Njo7O1j+R6dZbb9W5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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"from sklearn.svm import SVC\n",
"from sklearn.metrics import roc_curve, auc\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.inspection import permutation_importance\n",
"\n",
"# Predict the class probabilities of the testing data\n",
"y_prob = svm_model.predict_proba(x_test)\n",
"\n",
"# Compute the ROC curve and AUC for each class\n",
"fpr = {}\n",
"tpr = {}\n",
"roc_auc = {}\n",
"for i in range(3):\n",
" fpr[i], tpr[i], _ = roc_curve(y_test == i, y_prob[:, i])\n",
" roc_auc[i] = auc(fpr[i], tpr[i])\n",
"\n",
"# Plot the ROC curves and AUCs for each class\n",
"plt.figure()\n",
"lw = 2\n",
"colors = ['red', 'blue', 'green']\n",
"for i, color in zip(range(3), colors):\n",
" plt.plot(fpr[i], tpr[i], color=color, lw=lw,\n",
" label='ROC curve of class {0} (area = {1:0.2f})'\n",
" ''.format(i, roc_auc[i]))\n",
" plt.plot([0, 1], [0, 1], color='black', lw=lw, linestyle='--')\n",
" plt.xlim([0.0, 1.0])\n",
" plt.ylim([0.0, 1.05])\n",
" plt.xlabel('False Positive Rate')\n",
" plt.ylabel('True Positive Rate')\n",
" plt.title('ROC curves and AUCs for each class')\n",
" plt.legend(loc=\"lower right\")\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "b2a9b6c3",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0, 0.5, 'Feautures')"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAqAAAAGDCAYAAAD07KLAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAsTAAALEwEAmpwYAAAr6ElEQVR4nO3dd5glZZ33//cHBiQjwqgoDGOWoKC0ILooa1ZWRRfXjCgrhl1R0VV8xJXHlf1heswJRTEiRkRYA+qCgCLMIAxJMACCcchRlOH7+6PulkPb3XNmpru6p+f9uq5zdZ26K3zrppr+zF1V56SqkCRJkvqy1kwXIEmSpDWLAVSSJEm9MoBKkiSpVwZQSZIk9coAKkmSpF4ZQCVJktQrA6gkrYaS7JHk8knaP5bkLX3WJEnDMoBKa4Ak/5Dkx0muTXJVklOTPGym6xpriFB1UJIfjTN/iyR/SbLDSu533ySnrMy6k2zzkCSV5NVj5r+6zT9kKvc3VlW9vKr+azr3MZ4kC9vx3TDwOnuKtjlvquocYp8nJvnXvvY3mSRHJnn7TNchTSUDqDTHJdkEOA74IHAX4J7A/wVumcm6xhoyXHweeESSe42Z/xzgnKo6d+orW75Jar8I2GfMvBe1+XPdnatqo/bacSYLSWe1/HuXZO2ZrkGaDqvlL6SkFXJ/gKo6qqqWVdXNVfW9qloCfxup+/zowmNHm9pI0P+X5PQk1yX5ZpK7jFl2/yS/S/L7JK8f2Nadkryvtf2uTd+pte2R5PIkb0zyB+Ao4NvAPQZGzu4xeCBVdTnwQ+CFY45xH+Czbbv/lOSsJNe0Ud8HD9SzdZKvJ1ma5MokH0qyLfAxYLe2z2vaspsm+Wxb9tIkB4+GmDZiemqS9ya5Ejhkgr4/A9ggyfZtve2B9dr80Zo2S3Jc28/VbXqrgfa7JPl067+rkxwzuIMkr0vyp9b3Lx6Y/7dRs4G+nmjZOyV5d5LfJPljusv3609wTCstyQOTnJBuFP7CJP8y0LZnkp+1c+yyMSPEo6Pe17T/RrsNed4emuRU4Cbg3pPtfzl1j/bfGwb6b68kT0lyUdve/xlY/pAkX01ydJLrk5yZZMeB9m1bfdckOS/J0wbajkzy0ST/k+RGYD/g+cAb2rF/qy13UJJfte2fn+QZA9vYN8kp7b/p1UkuTvLkgfYJz6nJfn+kqWQAlea+i4BlST6T5MlJNluJbewDvATYErgV+MCY9n8E7gc8AXhjkse1+W8GHg7sBOwI7AIcPLDe3elGZbdp+3gy8LuBkbPfjVPLZxgIoEke0Lb/xSQPAT4FvAzYHPg4cGwLWGvTjQRfCiykGwn+UlVdALwc+Enb553bpj8IbArcG3h0q+9voQ3YFfg1cDfg0PG7DYDPcfso6Iva+0FrAZ9ufbAAuBn40Jj1NwC2B+4KvHeg7e6txnvSBZUPT/Lfd7JlD6P7h8pOwH3bMv85yTGtsCQbAicAX2zH8RzgI0m2a4vcSNdPdwb2BF6RZK/W9qj2c3RU9SdD7vaFwP7AxsDS5ex/ee5O94+H0b75BPACYGdgd+AtuePI/NOBr9Cd318EjkmyTpJ1gG8B32t1vAr4QjuPRz2P7pzamO4fVl8A3tmO/altmV+1/W5Kd0Xj80m2HNjGrsCFwBbAO4EjkqS1jXtOTfb7M2QfScOrKl++fM3xF7AtcCRwOV2APBa4W2s7BPj8wLILgQLmtfcnAocNtG8H/AVYe2DZBw60vxM4ok3/CnjKQNsTgUva9B5tO+sNtO8BXL6cY9kAuA54RHt/KPDNNv1R4L/GLH8hXYDcjS6EzBtnm/sCpwy8X7vVtt3AvJcBJw4s/5vl1HkI3S0DC4DfAOu0n1u3+YdMsN5OwNVtekvgNmCzcZbbgy6szhuY9yfg4W36SODty1sWCF34u89A227AxSt5ro2eE9cMvF4PPBs4ecyyHwfeOsF23ge8d7xzcgXO27cNtK/o/k8E/nVM/63d3m/c9rXrwPKLgb0GajttoG0t4Pd0gXF34A/AWgPtR42eD+2/22fH1PK3/5aT9PtZwNMHzs9fjvmdKboQPdk5NeHvz8qcC758TfZyBFRaA1TVBVW1b1VtBewA3IPuD/ywLhuYvpQuTG0xSfvopfN7tPfjtQEsrao/r0AdVNVNdCNL+7QRnefTLr/TjSK+rl0+vCbd5fSt2z63Bi6tqluH2M0WdMc4tvZ7Dry/jCFU1W+AXwL/Dfyiqu6wXpINknw83WX+6+guN9+5jdhuDVxVVVdPsPkrxxzPTcBGK7jsfLqAsnigz77T5v+ddsl49BaJ3Sc59C2q6s7t9W66/za7jvlv83y6UESSXZP8b7pbEa6lG5XeYsKtD2ewryfd/xCurKplbfrm9vOPA+03c8e+/9u+q+o2un/83aO9LmvzRq3wuZVkn4FL5dfQ/V4P9tcfBvZ/U5vciMnPqcl+f6Qp1dsThZJmh6r6eZIj6Ub0oBv92mBgkfH+IG89ML0A+CtwxcD8rYGfD7SPXjr/Hd0ftfPGaYNuVIZJ3k/kM8AxwNfpRqO+1eZfBhxaVX93STzJbsCCJPPGCaFj93sF3TFuA5w/UPtvV6JW6ALyp7jjJfxRrwMeQDea9ockOwE/oxuZvAy4S5I7V9U1K7C/FXEFXXjavqp+u7yFq2r7ldzPZcBJVfX4Cdq/SHfrwZOr6s9J3sftgWq8vh7mvB1cb3n7n2p/+51Jd+/wVtx+7m+dZK2BELqAOz6YNunvRZJt6G4BeCzdrSPLkpxFd84sz2Tn1IS/P9JUcwRUmuPagxevS3uwJcnWwHOB09oiZwGPSrIgyabAm8bZzAuSbJdkA+BtwFcHRoOgu/9t9GGbFwNHt/lHAQcnmZ9kC7p75z7PxP4IbN7qmMzJdJd2D6e7j/Mvbf4ngJe30bQk2TDdwy0bA6fTXQY9rM1fL8kjB/a7VZJ1AdqxfRk4NMnG7Q/+gcupfTJH090f++Vx2jamC4DXpHu4662jDVX1e7oHsz6S7mGldZI8apxtrLQWgj4BvDfJXQGS3DPJE6dyP3T3394/yQtH74VM8rB0D4FB1w9XtfC5C919kKOW0l02vvfAvLNY/nm7IvufajsneWa6h6JeQ/epE6cBP6UbfX5Dq2EP4KnAlybZ1h+547FvSBdKlwKke6BsqI8gW845NdnvjzSlDKDS3Hc93QMJP033VO1pwLl0I29U1Ql0AWkJ3X1sx42zjc/R3Yf2B7oHMQ4Y034S3WXmHwDvrqrvtflvBxa1bZ8DnNnmjauqfk4XWn/dLgGOe+mvqopuVHEbbr/8TlUtAl5KN5J2datp39a2jO4P/X3p7sW8nO6+QOierD8P+EOSK9q8V9GNsv0aOIVuhO5TE9U+meo+eeD7VXXzOM3vA9anG4k8je7y96AX0o3G/pzuvs3XrEwNy/FGur46rd0G8H26UdkpU1XX04Xw59CNBP4BeAcw+oDLK4G3Jbme7h8qXx5Y9ya6e31PbefFw4c8b1dk/1Ptm3Tn19V0/w2fWVV/bf9YeirdA3dXAB8B9mnn/kSOALZrx35MVZ0PvAf4CV04fRBw6grUNu45NdnvjzTV0v1/XJLGl+REuoc9PjlO20LgYmCdIe+tlOa8dB8hdd+qesFM1yLNVo6ASpIkqVcGUEmSJPXKS/CSJEnqlSOgkiRJ6pUBVJIkSb3yg+hXI1tssUUtXLhwpsuQJElarsWLF19RVeN+q5oBdDWycOFCFi1aNNNlSJIkLVeSSydq8xK8JEmSemUAlSRJUq8MoJIkSeqVAVSSJEm9MoBKkiSpVwZQSZIk9coAKkmSpF4ZQCVJktQrA6gkSZJ6ZQCVJElSrwygkiRJ6pUBVJIkSb2aN9MFaPZaeNDxM12CJEmaBpcctueM7t8RUEmSJPXKACpJkqReGUAlSZLUKwOoJEmSemUAlSRJUq8MoJIkSeqVAVSSJEm9MoBKkiSpVwZQSZIk9coAKkmSpF4ZQCVJktSrNeK74JMcAtwAbAL8qKq+P4O1vG2ma5AkSZpJa0QAHVVV/2kNkiRJM2vOXoJP8uYkFyU5BXhAm3dkkr3b9H8mOSPJuUkOT5I2/2FJliQ5K8m7kpzb5u+b5OtJvpPkF0neObCv5yY5p23rHW3e2m1/57a2145Tw2FJzm/7e3evHSRJkjRD5uQIaJKdgecAO9Ed45nA4jGLfaiq3taW/xzwT8C3gE8DL62qnyQ5bMw6OwEPAW4BLkzyQWAZ8A5gZ+Bq4HtJ9gIuA+5ZVTu0fdx5TI2bA88AHlhVNbZdkiRprpqrI6C7A9+oqpuq6jrg2HGW+cckP01yDvAYYPsWAjeuqp+0Zb44Zp0fVNW1VfVn4HxgG+BhwIlVtbSqbgW+ADwK+DVw7yQfTPIk4Lox27oW+DNwRJJnAjeNdyBJ9k+yKMmipUuXrlgvSJIkzUJzNYBOKsl6wEeAvavqQcAngPWGWPWWgellTDKCXFVXAzsCJwIvBz45pv1WYBfgq3Sjr9+ZYDuHV9VIVY3Mnz9/iBIlSZJmt7kaQH8E7JVk/SQbA08d0z4aNq9IshGwN0BVXQNcn2TX1v6cIfZ1OvDoJFskWRt4LnBSki2Atarqa8DBwEMHV2r73bSq/gd4LV1YlSRJmvPm5D2gVXVmkqOBs4E/AWeMab8mySeAc4E/jGnfD/hEktuAk+gulU+2r98nOQj4XyDA8VX1zSQ7Ap9OMhry3zRm1Y2Bb7bR2AAHrsShSpIkrXZSVTNdw6ySZKOquqFNHwRsWVWvnuGyABgZGalFixb1tr+FBx3f274kSVJ/Ljlsz2nfR5LFVTUyXtucHAFdRXsmeRNd31wK7Duz5UiSJM0tBtAxqupo4OiZrkOSJGmumqsPIUmSJGmWMoBKkiSpVwZQSZIk9coAKkmSpF4ZQCVJktQrA6gkSZJ6ZQCVJElSrwygkiRJ6pUfRK8J9fE1XZIkac3jCKgkSZJ6ZQCVJElSrwygkiRJ6pUBVJIkSb0ygEqSJKlXBlBJkiT1yo9h0oQWHnT8TJcgzXp+XJkkrThHQCVJktQrA6gkSZJ6ZQCVJElSrwygkiRJ6pUBVJIkSb0ygEqSJKlXBlBJkiT1ygAqSZKkXhlAJUmS1CsDqCRJknplAJUkSVKv/C74FZRkc+AH7e3dgWXA0vZ+R+DsgcX3AhYC3wQubvOuqKrHJXkU8D7gwcBzquqr01q4JEnSLGEAXUFVdSWwE0CSQ4Abqurd7f0NVbXT4PJJFgInV9U/jdnUb4B9gddPa8GSJEmzjAF0hlTVJQBJbpvhUiRJknrlPaBTa/0kZ7XXNwbm7z4w/80zVp0kSdIs4Ajo1Lp57CX4ZrxL8ENJsj+wP8CCBQtWoTRJkqTZwRHQWa6qDq+qkaoamT9//kyXI0mStMoMoJIkSeqVAXSGJHlYksuBZwEfT3LeTNckSZLUB+8BXQVVdciY9xuNs8yJwInjzD8D2GqaSpMkSZq1HAGVJElSrwygkiRJ6pUBVJIkSb0ygEqSJKlXBlBJkiT1ygAqSZKkXhlAJUmS1CsDqCRJknplAJUkSVKvDKCSJEnqlV/FqQldctieM12CJEmagxwBlSRJUq8MoJIkSeqVAVSSJEm9MoBKkiSpVwZQSZIk9coAKkmSpF75MUya0MKDjp/pEnrjR05JktQfR0AlSZLUKwOoJEmSemUAlSRJUq8MoJIkSeqVAVSSJEm9MoBKkiSpVwZQSZIk9coAKkmSpF4ZQCVJktQrA6gkSZJ6ZQCVJElSrwygy5HkhoHpLyR5xcD7XZMsSfLpJC8bs95eSb7dppclOWvgdVCb/+9JfpmkkmzR1zFJkiTNpHkzXcBq5kDgJ0m+ClwJfAh4JbAB8Cbg4wPLPgc4qk3fXFU7jbO9U4HjgBOnqV5JkqRZxwC6Aqrqj0neDbwTOANYUlWnJFkb+EySLavq90k2BB4H7L+c7f0MIMl0ly5JkjRreAl+xX0M2A74D+ANAFW1DPga8C9tmacCJ1bVde39+mMuwT+776IlSZJmC0dAV1BV3Zbk48BIVV050HQU8G7g/XSX3z830DbRJfjlSrI/bSR1wYIFK1WzJEnSbOII6Mq5rb0G/RjYMsmOwCOA46diR1V1eFWNVNXI/Pnzp2KTkiRJM8oAOkWqqoCjgc8A366qP89wSZIkSbOSAXT5Nkhy+cDrwEmWPQrYkduffh819h7QwwCSHJDkcmArYEmST07PIUiSJM0e3gO6HFU1UUg/cpxlzwL+7pH2qlp7gm1/APjAKpQnSZK02nEEVJIkSb0ygEqSJKlXBlBJkiT1ygAqSZKkXhlAJUmS1CsDqCRJknplAJUkSVKvDKCSJEnqlQFUkiRJvTKASpIkqVd+FacmdMlhe850CZIkaQ5yBFSSJEm9MoBKkiSpVwZQSZIk9coAKkmSpF4ZQCVJktQrA6gkSZJ6ZQCVJElSr/wcUE1o4UHHr9Dyfm6oJEkahiOgkiRJ6pUBVJIkSb0ygEqSJKlXBlBJkiT1ygAqSZKkXhlAJUmS1CsDqCRJknplAJUkSVKvDKCSJEnqlQFUkiRJvTKADkiyLMlZSc5N8q0kd27zFya5ubWNvvZpbRsl+WiSXyU5M8niJC8d2OZ3klyT5Lgx+zoxyYVtWxck2b/Xg5UkSZohQwXQJK9Oskk6R7Sg9YTpLm4G3FxVO1XVDsBVwL8NtP2qtY2+PtvmfxK4GrhfVT0UeBJwl4H13gW8cIL9Pb+qdgIeCbwjybpTeTCSJEmz0bAjoC+pquuAJwCb0QWqw6atqtnhJ8A9J1sgyX2AXYCDq+o2gKpaWlXvGF2mqn4AXL+cfW0E3AgsW6WKJUmSVgPzhlwu7edTgM9V1XlJMtkKq7MkawOPBY4YmH2fJGcNvH8VXRg/ezR8roQvJLkFuB/wmqoygEqSpDlv2BHQxUm+RxdAv5tkY2BlQ9dstn4LmX8A7gacMNA29hL8yWNXTvLmdk/n74bc3/Or6sHAAuD1SbYZZ5v7J1mUZNHSpUtX/IgkSZJmmWED6H7AQcDDquomYF3gxdNW1cy5ud2TuQ3dqO+/Tb445wM7JlkLoKoObetvsiI7raqlwJnAruO0HV5VI1U1Mn/+/BXZrCRJ0qw0bAAtYDvggPZ+Q2C9aaloFmgh+wDgdUkmvE2hqn4JLALe3i7bk2Q9br9lYShJNgAeAvxqpYuWJElaTQwbQD8C7AY8t72/HvjwtFQ0S1TVz4Al3H7M9xnzMUyjYfxfgc2BXyZZRHfZ/g2j20lyMvAV4LFJLk/yxIHdfKFd8l8MHFlVi6f3qCRJkmbesA8h7VpVD03yM4CqunoufmRQVW005v1TB96uP8E61wEvm2Sbu08wf4+VKFGSJGm1N+wI6F/bJeYCSDKfufkQkiRJkqbZsAH0A8A3gLsmORQ4BfjvaatKkiRJc9ZyL8G3J7wvpruv8bF0D9jsVVUXTHNtkiRJmoOWG0Cr6rYkH66qhwA/76EmSZIkzWHDXoL/QZJ/nsvffiRJkqR+DBtAX0b3UUK3JLkuyfVJrpvGuiRJkjRHDfUxTFW18XQXIkmSpDXDUAE0yaPGm19VP5raciRJkjTXDftB9P8xML0esAvdt/c8ZsorkiRJ0pw27CX4wW8EIsnWwPumoyBJkiTNbcOOgI51ObDtVBai2eeSw/ac6RIkSdIcNOw9oB+kfQ0n3ZPzOwFnTlNNkiRJmsOGHQFdNDB9K3BUVZ06DfVIkiRpjhs2gN65qt4/OCPJq8fOkyRJkpZn2A+if9E48/adwjokSZK0hph0BDTJc4HnAfdKcuxA08bAVdNZmCRJkuam5V2C/zHwe2AL4D0D868HlkxXUZIkSZq7Jg2gVXUpcCmwWz/lSJIkaa4b9mOYruf2j2FaF1gHuLGqNpmuwiRJkjQ3DftNSBuPTicJ8HTg4dNVlCRJkuauYZ+C/5vqHAM8cerLkSRJ0lw37CX4Zw68XQsYAf48LRVJkiRpThv2g+ifOjB9K3AJ3WV4SZIkaYUMew/oi6e7EEmSJK0Zhr0Evx6wH7A9sN7o/Kp6yTTVJUmSpDlq2IeQPgfcne7Bo5OAreg+jF6SJElaIcMG0PtW1VvoPvvzM8CewK7TV5YkSZLmqmED6F/bz2uS7ABsCtx1ekqSJEnSXDbsU/CHJ9kMeAtwLLAR8J/TVpUkSZLmrGGfgv9kmzwJuPf0lTP7JNkD+EtV/bi9fzlwU1V9dpJ1RoB9quqAXoqUJElajQz7FPzdgP8G7lFVT06yHbBbVR0xrdVNsSTzqurWFVxtD+AG4McAVfWx5a1QVYuARStcoCRJ0hpg2HtAjwS+C9yjvb8IeM001LPKkuyTZEmSs5N8LsmRST6W5KfAO5PcJ8l3kixOcnKSB7b1nprkp0l+luT7Se6WZCHwcuC1Sc5KsnuSQ5K8vq1zYpJ3JDk9yUVJdm/z90hyXJs+JMmn2rK/TnLAQK0vaOueleTjSdbuu78kSZL6NmwA3aKqvgzcBtBGEZdNW1UrKcn2wMHAY6pqR+DVrWkr4BFVdSBwOPCqqtoZeD3wkbbMKcDDq+ohwJeAN1TVJcDHgPdW1U5VdfI4u51XVbvQBfK3TlDaA+k+wmoX4K1J1kmyLfBs4JFVtRNdfz5/pQ9ekiRpNTHsQ0g3JtkcKIAkDweunbaqVt5jgK9U1RUAVXVVEtq8ZUk2Ah4BfKXNB7hT+7kVcHSSLYF1gYuH3OfX28/FwMIJljm+qm4BbknyJ+BuwGOBnYEzWi3rA38au2KS/YH9ARYsWDBkSZIkSbPXsAH0QLqn3++T5FRgPrD3tFU19W5sP9cCrmkjjmN9EPh/VXVse/DokCG3fUv7uYyJ+/OWgenR5QJ8pqreNNnGq+pwulFbRkZGasiaJEmSZq1JL8EnWQBQVWcCj6YbPXwZsH1VLZn+8lbYD4FntdFaktxlsLGqrgMuTvKs1p4kO7bmTYHftukXDax2PbDxNNT6A2DvJHcdrTXJNtOwH0mSpFllefeAHjMwfXRVnVdV51bVXydaYSZV1XnAocBJSc4G/t84iz0f2K+1nwc8vc0/hO7S/GLgioHlvwU8Y/QhpCms9Xy6+1W/l2QJcAKw5VRtX5IkabZK1cRXdZP8rD2Uc4dpzYyRkZFatMhPd5IkSbNfksVVNTJe2/JGQGuCaUmSJGmlLO8hpB2TXEf3wMz6bZr2vqpqk2mtTpIkSXPOpAG0qvxgdEmSJE2pYT+IXpIkSZoSBlBJkiT1ygAqSZKkXhlAJUmS1CsDqCRJknplAJUkSVKvDKCSJEnqlQFUkiRJvTKASpIkqVcGUEmSJPXKACpJkqReGUAlSZLUKwOoJEmSemUAlSRJUq8MoJIkSeqVAVSSJEm9MoBKkiSpVwZQSZIk9coAKkmSpF4ZQCVJktQrA6gkSZJ6ZQCVJElSrwygkiRJ6pUBVJIkSb0ygEqSJKlXBlBJkiT1ygAqSZKkXvUeQJOcmGSk7/2OJ8k6SQ5L8oskZyb5SZInD7TvlKSSPGnMep9K8qck546Zv2PbxjlJvpVkk0n2vW6ST7dlz06yx1QfnyRJ0my0po+A/hewJbBDVT0U2AvYeKD9ucAp7eegI4En8fc+CRxUVQ8CvgH8xyT7filAW/bxwHuSrOn/PSRJ0hpg2gJPkoVJfp7kC0kuSPLVJBuMWeajSRYlOS/J/x2Yf1iS85MsSfLuNu/ItvxpSX6dZI82EnlBkiOXt81x6tuALgS+qqpuAaiqP1bVl1t7gGcB+wKPT7Le6LpV9SPgqnE2e3/gR236BOCfJ+mi7YAftu39CbgGmBUjw5IkSdNpukfcHgB8pKq2Ba4DXjmm/c1VNQI8GHh0kgcn2Rx4BrB9VT0YePvA8psBuwGvBY4F3gtsDzwoyU4TbXOC2u4L/Kaqrpug/RHAxVX1K+BEYM8hjvc84Olt+lnA1pMsezbwtCTzktwL2Hm85ZPs3wL1oqVLlw5RgiRJ0uw23QH0sqo6tU1/HviHMe3/kuRM4Gd0QXI74Frgz8ARSZ4J3DSw/LeqqoBzgD9W1TlVdRtd8Fs4yTZXxnOBL7XpL/H3l+HH8xLglUkW013K/8sky34KuBxYBLwP+DGwbOxCVXV4VY1U1cj8+fOHr16SJGmWmjfN26+J3rdRv9cDD6uqq9tl9PWq6tYkuwCPBfYG/h14TFvtlvbztoHp0ffzJtrmBLX9EliQZJOxo6BJ1qa7fP70JG8GAmyeZOOqun7Cg636OfCEto37M8moaVXdSjeSO7rPHwMXTbS8JEnSXDHdI6ALkuzWpp9H90DPqE2AG4Frk9wNeDJAko2ATavqf+gC2o4rsL9xtzmeqroJOAJ4f5J1277nJ3kWXfhdUlVbV9XCqtoG+BrdrQETSnLX9nMt4GDgY5Msu0GSDdv044Fbq+r84Q9VkiRp9TTdAfRC4N+SXEB3/+ZHRxuq6my6y+Q/B74IjF6q3xg4LskSusB64LA7m2SbEzkYWAqc3z5S6Ti6e1WfS/cU+6CvtfkkOQr4CfCAJJcn2a8t89wkF7X9/w749CT7vitwZuubNwIvHOogJUmSVnPpbqmchg0nC4HjqmqHadnBGmhkZKQWLVo002VIkiQtV5LF7cHwv+PnTkqSJKlX0/YQUlVdAsyK0c8k3wDuNWb2G6vquz3s+4nAO8bMvriqJr2fVJIkaa6a7qfgZ4WZDHst5E570JUkSVpdeAlekiRJvTKASpIkqVcGUEmSJPXKACpJkqReGUAlSZLUKwOoJEmSemUAlSRJUq8MoJIkSeqVAVSSJEm9MoBKkiSpVwZQSZIk9coAKkmSpF4ZQCVJktQrA6gkSZJ6ZQCVJElSrwygkiRJ6pUBVJIkSb0ygEqSJKlXBlBJkiT1ygAqSZKkXhlAJUmS1CsDqCRJknplAJUkSVKvDKCSJEnqlQFUkiRJvTKASpIkqVcGUEmSJPXKADrFkmyY5PgkZyc5N8mzk+yc5KQki5N8N8mWSTZNcmGSB7T1jkry0pmuX5IkabrNm+kC5qAnAb+rqj0BkmwKfBt4elUtTfJs4NCqekmSfweOTPJ+YLOq+sTMlS1JktQPA+jUOwd4T5J3AMcBVwM7ACckAVgb+D1AVZ2Q5FnAh4Edx9tYkv2B/QEWLFgw7cVLkiRNNwPoFKuqi5I8FHgK8Hbgh8B5VbXb2GWTrAVsC9wEbAZcPs72DgcOBxgZGalpLF2SJKkX3gM6xZLcA7ipqj4PvAvYFZifZLfWvk6S7dvirwUuAJ4HfDrJOjNRsyRJUp8cAZ16DwLeleQ24K/AK4BbgQ+0+0HnAe9Lcivwr8AuVXV9kh8BBwNvnaG6JUmSemEAnWJV9V3gu+M0PWqcedsOrHfgtBUlSZI0i3gJXpIkSb0ygEqSJKlXBlBJkiT1ygAqSZKkXhlAJUmS1CsDqCRJknplAJUkSVKvDKCSJEnqlQFUkiRJvTKASpIkqVcGUEmSJPXKACpJkqReGUAlSZLUKwOoJEmSemUAlSRJUq8MoJIkSeqVAVSSJEm9MoBKkiSpVwZQ/Z2FBx3PwoOOn+kyJEnSHGUAlSRJUq8MoJIkSeqVAVSSJEm9MoBKkiSpVwZQSZIk9coAKkmSpF4ZQCVJktQrA6gkSZJ6ZQCVJElSrwygkiRJ6pUBVJIkSb0ygEqSJKlXBtAplOSYJIuTnJdk/zZvvyQXJTk9ySeSfKjNn5/ka0nOaK9Hzmz1kiRJ/Zg30wXMMS+pqquSrA+ckeR44C3AQ4HrgR8CZ7dl3w+8t6pOSbIA+C6w7UwULUmS1CcD6NQ6IMkz2vTWwAuBk6rqKoAkXwHu39ofB2yXZHTdTZJsVFU3DG6wjaTuD7BgwYJpLl+SJGn6GUCnSJI96ELlblV1U5ITgZ8z8ajmWsDDq+rPk223qg4HDgcYGRmpqapXkiRppngP6NTZFLi6hc8HAg8HNgQenWSzJPOAfx5Y/nvAq0bfJNmpz2IlSZJmigF06nwHmJfkAuAw4DTgt8B/A6cDpwKXANe25Q8ARpIsSXI+8PLeK5YkSZoBXoKfIlV1C/DksfOTLKqqw9sI6DeAY9ryVwDP7rVISZKkWcAR0Ol3SJKzgHOBi2kBVJIkaU3lCOg0q6rXz3QNkiRJs4kjoJIkSeqVAVSSJEm9MoBKkiSpVwZQSZIk9coAKkmSpF4ZQCVJktQrA6gkSZJ6ZQCVJElSr/wgev2dSw7bc6ZLkCRJc5gjoJIkSeqVAVSSJEm9MoBKkiSpVwZQSZIk9coAKkmSpF4ZQCVJktQrA6gkSZJ6ZQCVJElSrwygkiRJ6pUBVJIkSb0ygEqSJKlXBlBJkiT1ygAqSZKkXhlAJUmS1KtU1UzXoCElWQpc2uMutwCu6HF/c5l9OXXsy6ljX04N+3Hq2JdTZzb05TZVNX+8BgOoJpRkUVWNzHQdc4F9OXXsy6ljX04N+3Hq2JdTZ7b3pZfgJUmS1CsDqCRJknplANVkDp/pAuYQ+3Lq2JdTx76cGvbj1LEvp86s7kvvAZUkSVKvHAGVJElSrwyga6gkT0pyYZJfJjlonPY7JTm6tf80ycKBtje1+RcmeWKvhc9CK9uXSRYmuTnJWe31sd6Ln0WG6MdHJTkzya1J9h7T9qIkv2ivF/VX9ey0in25bOCcPLa/qmenIfrywCTnJ1mS5AdJthlo87xsVrEfPScHDNGXL09yTuuvU5JsN9A2e/5+V5WvNewFrA38Crg3sC5wNrDdmGVeCXysTT8HOLpNb9eWvxNwr7adtWf6mFbTvlwInDvTxzAbXkP240LgwcBngb0H5t8F+HX7uVmb3mymj2l17MvWdsNMH8NseQ3Zl/8IbNCmXzHw++15OQX92N57Tq5YX24yMP004Dttelb9/XYEdM20C/DLqvp1Vf0F+BLw9DHLPB34TJv+KvDYJGnzv1RVt1TVxcAv2/bWVKvSl7rdcvuxqi6pqiXAbWPWfSJwQlVdVVVXAycAT+qj6FlqVfpSdzRMX/5vVd3U3p4GbNWmPS9vtyr9qDsapi+vG3i7ITD6sM+s+vttAF0z3RO4bOD95W3euMtU1a3AtcDmQ667JlmVvgS4V5KfJTkpye7TXewstirnlefkHa1qf6yXZFGS05LsNaWVrX5WtC/3A769kuvOZavSj+A5OWiovkzyb0l+BbwTOGBF1u3LvJnasSR+DyyoqiuT7Awck2T7Mf96lfq2TVX9Nsm9gR8mOaeqfjXTRc12SV4AjACPnulaVmcT9KPn5Aqqqg8DH07yPOBgYNbdg+wI6Jrpt8DWA++3avPGXSbJPGBT4Moh112TrHRftssgVwJU1WK6+3HuP+0Vz06rcl55Tt7RKvVHVf22/fw1cCLwkKksbjUzVF8meRzwZuBpVXXLiqy7hliVfvScvKMVPa++BOy1kutOKwPomukM4H5J7pVkXboHY8Y+WXgst/+LaW/gh9XdxXws8Jz2ZPe9gPsBp/dU92y00n2ZZH6StQHav+zvR/egwppomH6cyHeBJyTZLMlmwBPavDXVSvdl68M7tektgEcC509bpbPfcvsyyUOAj9OFpj8NNHle3m6l+9Fz8u8M05f3G3i7J/CLNj27/n7P9BNdvmbmBTwFuIhu1O3Nbd7b6H75AdYDvkJ3k/LpwL0H1n1zW+9C4MkzfSwz/VrZvgT+GTgPOAs4E3jqTB/LLO/Hh9Hds3Qj3Wj8eQPrvqT17y+BF8/0scz0a2X7EngEcA7dk7LnAPvN9LHM9GuIvvw+8Mf2e3wWcOzAup6Xq9iPnpMr1ZfvH/jb8r/A9gPrzpq/334TkiRJknrlJXhJkiT1ygAqSZKkXhlAJUmS1CsDqCRJknplAJUkSVKvDKCStBKSLEty1sBr4RRue2H7BpNpkeTEJCPTtf0J9vl/+tyfpNnNACpJK+fmqtpp4HXJFG57IbDCAXT0iw1mk3TWAgygkv7GACpJUyTJzklOSrI4yXeTbNnmvzTJGUnOTvK1JBu0+Ucm2Xtg/Rva5GHA7m1k9bVJ9k3yoYHljkuyx+g6Sd6T5GxgtyQvSHJ6W/fjywulbf13JTkvyfeT7NJGSH+d5GltmX2TfLPN/0WStw6sf2CSc9vrNW3ewiQXJvkscC5wBLB+q+kLbZljWj+dl2T/MfUc2vrqtCR3a/PvluQbbf7ZSR7R5q/Q8UqaHQygkrRyRgPVWS0YrQN8ENi7qnYGPgUc2pb9elU9rKp2BC4A9lvOtg8CTm4jq+9dzrIbAj9t274SeDbwyKraCVgGPH+I9X9YVdsD1wNvBx4PPIPu21VG7UL37V0PBp6VZCTJzsCLgV2BhwMvbV+pCN3X/H2kqravqhdz+4jxaD0vaf00AhyQZPOBek5rx/Mj4KVt/geAk9r8hwLnJdl2JY5X0iwwb6YLkKTV1M0t9ACQZAdgB+CEJABrA79vzTskeTtwZ2AjpvY7wZcBX2vTjwV2Bs5oNawP/GmC9Ub9BfhOmz4HuKWq/prkHLpbAUadUFVXAiT5OvAPQAHfqKobB+bvTved05dW1WmT7PeAJM9o01vTBdYrWz3HtfmL6cIwwGOAfQCqahlwbZIXrsTxSpoFDKCSNDVC953qu43TdiSwV1WdnWRfYI82/1balah2n+S6E2z7b8s16w1M/7kFstEaPlNVb1qBuv9at38n823ALQBVdVuSwb8RY7+3eXnf43zjRA3t9oHHAbtV1U1JTuT2YxqsZxmT/51ameOVNAt4CV6SpsaFwPwkuwEkWSfJ9q1tY+D37TL94CXiS+hG8ACeBqzTpq9v6wwut1OStZJsTXc5fDw/APZOctdWw12SbLNKR3W7x7ftrQ/sBZwKnAzslWSDJBvSXbY/eYL1/9qOH2BT4OoWPh9Id/l+eX4AvAK6h62SbMr0Hq+kaWQAlaQpUFV/AfYG3tEeCDoLeERrfgvwU7rQ9vOB1T4BPHr0ASJuHzVcAixrD9u8tq13MXA+3b2QZ05Qw/nAwcD3kiwBTgC2nKJDPJ3uUv8S4GtVtaiqzqQb3T29Hd8nq+pnE6x/OLCkPYT0HWBekgvoHria7FL9qFcD/9huDVgMbDfNxytpGuX2Kx2SJP29dtvASFX9+0zXImlucARUkiRJvXIEVJIkSb1yBFSSJEm9MoBKkiSpVwZQSZIk9coAKkmSpF4ZQCVJktQrA6gkSZJ69f8DtOY4++NpOogAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 720x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"perm_importance = permutation_importance(svm_model, x_test, y_test)\n",
"\n",
"feature_names = df.columns # Replace with your feature names\n",
"\n",
"features = np.array(feature_names)\n",
"sorted_idx = perm_importance.importances_mean.argsort()\n",
"plt.figure(figsize=(10, 6))\n",
"plt.barh(features[sorted_idx], perm_importance.importances_mean[sorted_idx])\n",
"plt.title('Support Vector Machine - Feature Importance')\n",
"plt.xlabel(\"Feauture Importance\")\n",
"plt.ylabel(\"Feautures\")"
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "f0475908",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0. , -0.00847458, 0. , 0. , 0. ],\n",
" [ 0. , 0. , 0. , 0. , 0. ],\n",
" [ 0. , 0. , 0. , 0. , 0. ],\n",
" [ 0. , 0. , 0. , 0. , 0. ],\n",
" [ 0.00847458, 0.02542373, -0.00847458, 0.03389831, 0.00847458],\n",
" [ 0.01694915, 0.00847458, 0.04237288, 0.04237288, -0.00847458],\n",
" [ 0.13559322, 0.13559322, 0.18644068, 0.16101695, 0.1440678 ],\n",
" [ 0.37288136, 0.3559322 , 0.33050847, 0.28813559, 0.3220339 ]])"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"perm_importance.importances[sorted_idx]"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "8983c3e5",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training accuracy 84.53389830508475\n",
"Test accuracy 81.35593220338984\n"
]
}
],
"source": [
"print('Training accuracy', np.mean(svm_model.predict(x_train) == y_train)*100)\n",
"print('Test accuracy', np.mean(svm_model.predict(x_test) == y_test)*100)"
]
},
{
"cell_type": "markdown",
"id": "9dad11b6",
"metadata": {},
"source": [
"# XGBoost"
]
},
{
"cell_type": "code",
"execution_count": 56,
"id": "3b8a7b51",
"metadata": {},
"outputs": [],
"source": [
"from xgboost import XGBClassifier\n",
"import xgboost as xgb\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.model_selection import train_test_split, GridSearchCV\n",
"from sklearn.metrics import confusion_matrix, classification_report\n",
"from sklearn.metrics import balanced_accuracy_score, accuracy_score, precision_score, recall_score, f1_score\n",
"from sklearn.utils.class_weight import compute_sample_weight"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "ccef7809",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fitting 5 folds for each of 405 candidates, totalling 2025 fits\n",
"Best hyperparameters: {'colsample_bytree': 0.6, 'gamma': 1, 'max_depth': 4, 'min_child_weight': 5, 'subsample': 0.8}\n",
"Best score: 0.8982530795072788\n"
]
}
],
"source": [
"import numpy as np\n",
"import xgboost as xgb\n",
"from sklearn.model_selection import GridSearchCV\n",
"\n",
"# Create an XGBoost classifier object with the desired hyperparameters\n",
"clf = xgb.XGBClassifier(objective='multi:softmax', num_class=3, missing=1)\n",
"\n",
"# Define the hyperparameters to tune and their possible values\n",
"param_grid = {\n",
" 'min_child_weight': [1, 5, 10],\n",
" 'gamma': [0.5, 1, 1.5, 2, 5],\n",
" 'subsample': [0.6, 0.8, 1.0],\n",
" 'colsample_bytree': [0.6, 0.8, 1.0],\n",
" 'max_depth': [3, 4, 5]\n",
"}\n",
"\n",
"# Create a grid search object with the XGBoost classifier and the hyperparameters to tune\n",
"grid_search = GridSearchCV(clf, param_grid=param_grid, cv=5, n_jobs = 2, verbose = 2, scoring='accuracy')\n",
"\n",
"# Fit the grid search object on the training data\n",
"grid_search.fit(x_train, y_train)\n",
"\n",
"# Print the best hyperparameters and their corresponding score\n",
"print('Best hyperparameters:', grid_search.best_params_)\n",
"print('Best score:', grid_search.best_score_)"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "a21ef45a",
"metadata": {},
"outputs": [],
"source": [
"xgb = XGBClassifier(colsample_bytree = 0.6,\n",
"gamma = 1, \n",
"max_depth = 4,\n",
"min_child_weight = 5,\n",
"subsample = 0.8)\n",
"xgb_tuned = xgb.fit(x_train,y_train)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"id": "85d2cfa1",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.923728813559322"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_pred = xgb_tuned.predict(x_test)\n",
"accuracy_score(y_test, y_pred)"
]
},
{
"cell_type": "code",
"execution_count": 98,
"id": "2c078569",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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RqVKldi+fTsA5cqV46uvvgpxVMVXuXLleO2113j55Zc5e/Ysv/nNb1i8eDHz5s0DnDOPkSNH8vjjjwMwevRo/v73v3v+PufOneM///lPtu127drVk3wAz1UuV155JVu2bOHcuXOeX7a+iAh33HEHjz32GI0bN/b86r3llluyDE27bt26bOveeOONTJo0CYDt27ezZ88eGjVq5Pc4dOnShbfffhtwSsBkXmqdKTk5mejoaMqUKcOCBQv46aefADhw4ADlypVjwIABjB49mrVr15KSkkJycjLdu3fnlVdeYf369dn216tXLz788ENUleXLl1OhQgWqVauWZZlKlSqRkZHh+TLPKYYL3XrrrYwfP56UlBQA9u/fz88//0xycjKVKlWiXLlybN26leXLl/tc/5VXXvEkGe/Hk08+6fcY+tOrVy8++OADAD744AN69+6d63HYvn07MTExed7nRclrm1VuD+Au4H2v6XuBN3JYdgDOGcVluW63hPZRfP/99xoVFZWlszqznbm48dW+WtC8+wpUVXv27Kkffvihqqpu2LBBO3bsqA0bNtR69erpmDFjPO3tqqr/+9//9LrrrtNrr71WGzdurKNHj862/ZMnT+rAgQO1adOmGhcXp59++qmqOv0SdevW1bZt2+rvf//7LH0UU6dOzbKNVatWKaATJkzwzEtMTNS+fftqbGysNm7cWB944IFs+86pM9tfH8WhQ4e0V69eGhMTo82aNdOlS5dmOU6JiYkaHx+vMTExOnjwYL322ms1ISFBv/rqK42NjdVmzZppq1atdNWqVXrgwAFt3bq1xsbGakxMTJb4M507d05/97vfad26dTUmJiZb/0Sm3/72tzp37ly/Mfh6X6+++qrGxMRoTEyMxsfH686dOzUtLU27deum1157rfbu3Vs7duyoCxYs8Lnfi1GrVi2tVKmSXn755Vq9enX94YcfVFV1yJAhnvd15MgR7dy5s9avX1+7dOni6SvxdxxefPFFfe2113zus8h0ZgPtgDle008BT/lY7mZgCxAd0HZLaKJYsWKFJ0Fcc801um/fvlCHFDSFIVGYomHNmjU6YMCAUIcREjfeeKPnIogL5XeiCGbT0yqggYjUEZGywK+Bmd4LiEgL4B2gl6r+HMRYiqR33nnHU7OlTZs23HffffznP/9hz5492dprjSmJrrvuOm666aZC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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import xgboost as xgb\n",
"from sklearn.metrics import roc_curve, auc\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Predict the class probabilities of the testing data\n",
"y_prob = xgb_tuned.predict_proba(x_test)\n",
"\n",
"# Compute the ROC curve and AUC for each class\n",
"fpr = {}\n",
"tpr = {}\n",
"roc_auc = {}\n",
"for i in range(3):\n",
" fpr[i], tpr[i], _ = roc_curve(y_test == i, y_prob[:, i])\n",
" roc_auc[i] = auc(fpr[i], tpr[i])\n",
"\n",
"# Plot the ROC curves and AUCs for each class\n",
"plt.figure()\n",
"lw = 2\n",
"colors = ['red', 'blue', 'green']\n",
"for i, color in zip(range(3), colors):\n",
" plt.plot(fpr[i], tpr[i], color=color, lw=lw,\n",
" label='ROC curve of class {0} (area = {1:0.2f})'\n",
" ''.format(i, roc_auc[i]))\n",
" plt.plot([0, 1], [0, 1], color='black', lw=lw, linestyle='--')\n",
" plt.xlim([0.0, 1.0])\n",
" plt.ylim([0.0, 1.05])\n",
" plt.xlabel('False Positive Rate')\n",
" plt.ylabel('True Positive Rate')\n",
" plt.title('ROC curves and AUCs for each class')\n",
" plt.legend(loc=\"lower right\")\n",
"plt.show()\n"
]
},
{
"cell_type": "markdown",
"id": "5c34f0e0",
"metadata": {},
"source": [
"the results show that the classifier has high performance for all three classes, with AUC values of 1 for class 0, 0.97 for class 1, and 0.99 for class 2. This indicates that the classifier is doing an excellent job of distinguishing between the three classes. The ROC curves for each class are plotted in different colors, and the legend indicates the AUC value for each class. The black dashed line represents the ROC curve for a random classifier."
]
},
{
"cell_type": "code",
"execution_count": 58,
"id": "dfa19bed",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x432 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"cm = confusion_matrix(y_test, y_pred)\n",
"\n",
"# Define the labels for the confusion matrix\n",
"classes = ['Healthy', 'Non-cancerous', 'Pancreatic cancer']\n",
"\n",
"# Plot the confusion matrix\n",
"plt.figure(figsize=(6, 6))\n",
"plt.imshow(cm, interpolation='nearest', cmap=plt.cm.Blues)\n",
"plt.title('Confusion matrix')\n",
"plt.colorbar()\n",
"tick_marks = np.arange(len(classes))\n",
"plt.xticks(tick_marks, classes, rotation=45)\n",
"plt.yticks(tick_marks, classes)\n",
"fmt = '.2f'\n",
"thresh = cm.max() / 2.\n",
"for i, j in np.ndindex(cm.shape):\n",
" plt.text(j, i, format(cm[i, j], fmt),\n",
" horizontalalignment=\"center\",\n",
" color=\"white\" if cm[i, j] > thresh else \"black\")\n",
"plt.xlabel('Predicted label')\n",
"plt.ylabel('True label')\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "d2d05336",
"metadata": {},
"source": [
"Class 0 (healthy): There were 37 examples that were correctly classified as healthy (true negatives), 4 examples that were misclassified as non-cancerous pancreas condition (false positives), and 0 examples that were misclassified as pancreatic cancer (false positives).\n",
"\n",
"Class 1 (non-cancerous pancreas condition): There were 36 examples that were correctly classified as non-cancerous pancreas condition (true negatives), 0 examples that were misclassified as healthy (false negatives), and 3 examples that were misclassified as pancreatic cancer (false positives).\n",
"\n",
"Class 2 (pancreatic cancer): There were 36 examples that were correctly classified as pancreatic cancer (true negatives), 2 examples that were misclassified as healthy (false negatives), and 0 examples that were misclassified as non-cancerous pancreas condition (false positives)."
]
},
{
"cell_type": "code",
"execution_count": 59,
"id": "fea7425f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"-------------------- Key Metrics --------------------\n",
"\n",
"Accuracy: 0.92\n",
"Micro Precision: 0.92\n",
"Micro Recall: 0.92\n",
"Micro F1-score: 0.92\n",
"\n",
"Macro Precision: 0.92\n",
"Macro Recall: 0.92\n",
"Macro F1-score: 0.92\n",
"\n",
"Weighted Precision: 0.93\n",
"Weighted Recall: 0.92\n",
"Weighted F1-score: 0.92\n",
"\n",
"--------------- Classification Report ---------------\n",
"\n",
" precision recall f1-score support\n",
"\n",
" 0 1.00 0.93 0.96 41\n",
" 1 0.88 0.90 0.89 39\n",
" 2 0.90 0.95 0.92 38\n",
"\n",
" accuracy 0.92 118\n",
" macro avg 0.92 0.92 0.92 118\n",
"weighted avg 0.93 0.92 0.92 118\n",
"\n",
"---------------------- XGBoost ----------------------\n"
]
}
],
"source": [
"print('\\n-------------------- Key Metrics --------------------')\n",
"print('\\nAccuracy: {:.2f}'.format(accuracy_score(y_test, y_pred)))\n",
"\n",
"print('Micro Precision: {:.2f}'.format(precision_score(y_test, y_pred, average='micro')))\n",
"print('Micro Recall: {:.2f}'.format(recall_score(y_test, y_pred, average='micro')))\n",
"print('Micro F1-score: {:.2f}\\n'.format(f1_score(y_test, y_pred, average='micro')))\n",
"\n",
"print('Macro Precision: {:.2f}'.format(precision_score(y_test, y_pred, average='macro')))\n",
"print('Macro Recall: {:.2f}'.format(recall_score(y_test, y_pred, average='macro')))\n",
"print('Macro F1-score: {:.2f}\\n'.format(f1_score(y_test, y_pred, average='macro')))\n",
"\n",
"print('Weighted Precision: {:.2f}'.format(precision_score(y_test, y_pred, average='weighted')))\n",
"print('Weighted Recall: {:.2f}'.format(recall_score(y_test, y_pred, average='weighted')))\n",
"print('Weighted F1-score: {:.2f}'.format(f1_score(y_test, y_pred, average='weighted')))\n",
"\n",
"print('\\n--------------- Classification Report ---------------\\n')\n",
"print(classification_report(y_test, y_pred))\n",
"print('---------------------- XGBoost ----------------------') # unnecessary fancy styling"
]
},
{
"cell_type": "code",
"execution_count": 73,
"id": "73bd98ce",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"from xgboost import plot_importance\n",
"# plot feature importance\n",
"plot_importance(xgb)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "ef8a1272",
"metadata": {},
"source": [
"# Random Forest"
]
},
{
"cell_type": "code",
"execution_count": 67,
"id": "941f40b4",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>#sk-container-id-2 {color: black;background-color: white;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GridSearchCV(cv=5, estimator=RandomForestClassifier(random_state=42),\n",
" param_grid={'bootstrap': [True, False],\n",
" 'criterion': ['gini', 'entropy'],\n",
" 'max_depth': [4, 5, 6, 7, 8],\n",
" 'min_samples_leaf': [1, 2, 4],\n",
" 'min_samples_split': [2, 5, 10],\n",
" 'n_estimators': [100, 200, 500]})</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" ><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">GridSearchCV</label><div class=\"sk-toggleable__content\"><pre>GridSearchCV(cv=5, estimator=RandomForestClassifier(random_state=42),\n",
" param_grid={'bootstrap': [True, False],\n",
" 'criterion': ['gini', 'entropy'],\n",
" 'max_depth': [4, 5, 6, 7, 8],\n",
" 'min_samples_leaf': [1, 2, 4],\n",
" 'min_samples_split': [2, 5, 10],\n",
" 'n_estimators': [100, 200, 500]})</pre></div></div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-5\" type=\"checkbox\" ><label for=\"sk-estimator-id-5\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">estimator: RandomForestClassifier</label><div class=\"sk-toggleable__content\"><pre>RandomForestClassifier(random_state=42)</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-6\" type=\"checkbox\" ><label for=\"sk-estimator-id-6\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">RandomForestClassifier</label><div class=\"sk-toggleable__content\"><pre>RandomForestClassifier(random_state=42)</pre></div></div></div></div></div></div></div></div></div></div>"
],
"text/plain": [
"GridSearchCV(cv=5, estimator=RandomForestClassifier(random_state=42),\n",
" param_grid={'bootstrap': [True, False],\n",
" 'criterion': ['gini', 'entropy'],\n",
" 'max_depth': [4, 5, 6, 7, 8],\n",
" 'min_samples_leaf': [1, 2, 4],\n",
" 'min_samples_split': [2, 5, 10],\n",
" 'n_estimators': [100, 200, 500]})"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn.model_selection import GridSearchCV\n",
"from sklearn.metrics import accuracy_score\n",
"\n",
"# Create a RandomForestClassifier object\n",
"clf = RandomForestClassifier(random_state=42)\n",
"\n",
"# Define the hyperparameters to tune\n",
"param_grid = {\n",
" 'n_estimators': [100, 200, 500],\n",
" 'max_depth': [4,5,6,7,8],\n",
" 'min_samples_split': [2, 5, 10],\n",
" 'min_samples_leaf': [1, 2, 4],\n",
" 'bootstrap': [True, False],\n",
" 'criterion': ['gini', 'entropy']\n",
"}\n",
"\n",
"# Create a GridSearchCV object with 5-fold cross-validation\n",
"grid_search = GridSearchCV(clf, param_grid, cv=5)\n",
"\n",
"# Train the GridSearchCV object on the training data\n",
"grid_search.fit(x_train, y_train)\n"
]
},
{
"cell_type": "code",
"execution_count": 68,
"id": "70bea1b3",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Best hyperparameters: {'bootstrap': False, 'criterion': 'entropy', 'max_depth': 8, 'min_samples_leaf': 1, 'min_samples_split': 10, 'n_estimators': 100}\n",
"Accuracy: 0.8898305084745762\n"
]
}
],
"source": [
"# Get the best hyperparameters and the corresponding classifier\n",
"best_params = grid_search.best_params_\n",
"best_clf = grid_search.best_estimator_\n",
"\n",
"# Predict the class labels of the testing data using the best classifier\n",
"y_pred = best_clf.predict(x_test)\n",
"\n",
"# Compute the accuracy of the classifier\n",
"accuracy = accuracy_score(y_test, y_pred)\n",
"\n",
"# Print the best hyperparameters and the accuracy of the classifier\n",
"print(\"Best hyperparameters:\", best_params)\n",
"print(\"Accuracy:\", accuracy)"
]
},
{
"cell_type": "code",
"execution_count": 70,
"id": "a35e5f41",
"metadata": {},
"outputs": [],
"source": [
"rfc = RandomForestClassifier (\n",
" criterion = 'gini',\n",
" max_depth = 4,\n",
" bootstrap = False,\n",
" min_samples_leaf = 1,\n",
" min_samples_split = 10,\n",
" n_estimators = 200\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 71,
"id": "f8d6ec61",
"metadata": {},
"outputs": [],
"source": [
"rfc_tuned = rfc.fit(x_train,y_train)"
]
},
{
"cell_type": "code",
"execution_count": 72,
"id": "dbd70d2c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.8813559322033898"
]
},
"execution_count": 72,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_pred = rfc_tuned.predict(x_test)\n",
"accuracy_score(y_test, y_pred)"
]
},
{
"cell_type": "code",
"execution_count": 74,
"id": "1c86dbdf",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x432 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"cm = confusion_matrix(y_test, y_pred)\n",
"\n",
"# Define the labels for the confusion matrix\n",
"classes = ['Healthy', 'Non-cancerous', 'Pancreatic cancer']\n",
"\n",
"# Plot the confusion matrix\n",
"plt.figure(figsize=(6, 6))\n",
"plt.imshow(cm, interpolation='nearest', cmap=plt.cm.Blues)\n",
"plt.title('Confusion matrix')\n",
"plt.colorbar()\n",
"tick_marks = np.arange(len(classes))\n",
"plt.xticks(tick_marks, classes, rotation=45)\n",
"plt.yticks(tick_marks, classes)\n",
"fmt = '.2f'\n",
"thresh = cm.max() / 2.\n",
"for i, j in np.ndindex(cm.shape):\n",
" plt.text(j, i, format(cm[i, j], fmt),\n",
" horizontalalignment=\"center\",\n",
" color=\"white\" if cm[i, j] > thresh else \"black\")\n",
"plt.xlabel('Predicted label')\n",
"plt.ylabel('True label')\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 75,
"id": "67d1fd8d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"-------------------- Key Metrics --------------------\n",
"\n",
"Accuracy: 0.91\n",
"Micro Precision: 0.91\n",
"Micro Recall: 0.91\n",
"Micro F1-score: 0.91\n",
"\n",
"Macro Precision: 0.91\n",
"Macro Recall: 0.91\n",
"Macro F1-score: 0.91\n",
"\n",
"Weighted Precision: 0.91\n",
"Weighted Recall: 0.91\n",
"Weighted F1-score: 0.91\n",
"\n",
"--------------- Classification Report ---------------\n",
"\n",
" precision recall f1-score support\n",
"\n",
" 0 0.97 0.90 0.94 41\n",
" 1 0.85 0.87 0.86 39\n",
" 2 0.90 0.95 0.92 38\n",
"\n",
" accuracy 0.91 118\n",
" macro avg 0.91 0.91 0.91 118\n",
"weighted avg 0.91 0.91 0.91 118\n",
"\n",
"---------------------- Random Forest ----------------------\n"
]
}
],
"source": [
"print('\\n-------------------- Key Metrics --------------------')\n",
"print('\\nAccuracy: {:.2f}'.format(accuracy_score(y_test, y_pred)))\n",
"\n",
"print('Micro Precision: {:.2f}'.format(precision_score(y_test, y_pred, average='micro')))\n",
"print('Micro Recall: {:.2f}'.format(recall_score(y_test, y_pred, average='micro')))\n",
"print('Micro F1-score: {:.2f}\\n'.format(f1_score(y_test, y_pred, average='micro')))\n",
"\n",
"print('Macro Precision: {:.2f}'.format(precision_score(y_test, y_pred, average='macro')))\n",
"print('Macro Recall: {:.2f}'.format(recall_score(y_test, y_pred, average='macro')))\n",
"print('Macro F1-score: {:.2f}\\n'.format(f1_score(y_test, y_pred, average='macro')))\n",
"\n",
"print('Weighted Precision: {:.2f}'.format(precision_score(y_test, y_pred, average='weighted')))\n",
"print('Weighted Recall: {:.2f}'.format(recall_score(y_test, y_pred, average='weighted')))\n",
"print('Weighted F1-score: {:.2f}'.format(f1_score(y_test, y_pred, average='weighted')))\n",
"\n",
"print('\\n--------------- Classification Report ---------------\\n')\n",
"print(classification_report(y_test, y_pred))\n",
"print('---------------------- Random Forest ----------------------') # unnecessary fancy styling"
]
},
{
"cell_type": "code",
"execution_count": 99,
"id": "1e432882",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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K3JJIoslCWPyJxD/d6xFUYLNnTuX6667juPHjzNt2jRSUlIAuP/++4MbmDGmWLEWRQmUlpZG27Zt6dmzJ8ePHwfgkksuscGEzkFISAitWrUiKiqKa6+91n1lGMBPP/3EVVddRdOmTWncuDHPPfccnlcP/ve//6Vdu3a0aNGC1q1b89BDDwXhHeTP4MGDiYmJ4fXXX/dr+bCwsIDEoaqMGjWKRo0aERMTw7p167wul5aWRteuXYv0Z/sf//gHjRo1omnTpsyZM8frMgsWLKBNmzZERUVx2223uU8Pp6SkcO211xIbG0vLli3517/+BUBSUlLhltNR1WL1oBZqcvfcc89pmTJlFGdccy1fvrx++eWXwQ7rnGzatCnYIegFF1zgfj5kyBAdO3asqqoeP35cGzRooHPmzFFV1T/++EN79eql77zzjqqqbty4URs0aKCbN29WVdXTp0/ru+++W6CxnTp1qkC3l2Xfvn3asGHDc1rH8zgVpFmzZmmvXr00MzNTly9frh06dPC63DvvvKNvvPGG39vNzMzUjIyMggozTz/99JPGxMRoenq67ty5Uxs0aKCnT5/OtkxGRobWqVNHt27dqqqqTz75pH700Ueqqvr888/rww8/rKqqv//+u1arVk1PnDihqqpDhw7VJUuWeN2vt/9DwBrN5/eutShKkKlTp/Lkk0+SmZkJQL9+/Th+/Dg33nhjkCM7DyKBeZyDTp06sXfvXgAmT55M586d6dmzJwCVKlXinXfe4YUXXgCcSruPP/44zZo1A5yWibcrylJTUxk2bBjR0dHExMTw1VdfAdl/oU+bNo2hQ4cCMHToUO666y46duzIww8/TP369bO1cho3bsyBAwdISkpiwIABtG/fnvbt27N06dKz9p2enu7ed+vWrd2XSffs2ZO9e/fSqlUrvv/++2zrHDhwgOuvv57Y2FhiY2NZtmzZWe+ne/futGnThujoaGbMmAHAH3/8QXx8PLGxsURFRfHFF18A8Oijj9KiRQtiYmL461//elaMM2bMYMiQIYgIcXFxHDlyhH379p213GeffUa/fv18xvDLL7/QtGlThgwZQlRUFHv27OHll1+mffv2xMTE8PTTT7u3d91119G2bVtatmzJBx98cNb+ztWMGTP4v//7PypUqEBkZCSNGjVy9xdmSU5Opnz58jRp0gSAHj16uD8PIsKx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KSkpSePi4jQqKkqHDh2qzZo10127dum3336r0dHRGhsbq+3atdPVq1frb7/9pu3bt9fo6GiNiorKFn+WzMxM/fOf/6wNGjTQqKios/onstx+++06d+5cnzF4e19vvPGGRkVFaVRUlMbFxen27ds1PT1de/Xqpc2aNdN+/fpp165ddeHChV73ey7Gjh2rDRo00CZNmujs2bPd8//0pz/p3r17VVX1r3/9qzZr1kybNGni7gtSVd27d6/26NFDo6KitGXLltn6O15++WV96623vO6zoPsoApkoOgFzPKYfAx7zstzVwGYgwq/tltJEsXLlSneCuPTSSzUxMTHYIQVMUUgUpnhYu3at3nLLLcEOIyiuuOIK90UQORWny2NXA41FJFJEygP/B8z0XEBEWgPvA31V9fcAxlIsvf/+++6aLR06dGDYsGH885//ZPfu3V7PcxpT2rRp04Yrr7yySN9wFwhJSUnu09CFIaDjUYhIb+ANIASYoKrPi8izOJltpojMA6KBrAukd6tqX5/bLAXjUezevZvLLruMvXv3EhkZyc6dO4MdUqHavHmzDbtqzHnw9n+oyI5Hoaqzgdk55j3l8fzqQO6/OLrtttvclyECHDt2LIjRGGOM1XoqMubMmUOlSpXcSUJEGD16dIGXCzbGmHNl1WOLgPHjx3PHHXe4p5s1a+a+JNAYY4LNWhRFwNChQylbtizly5dn2rRpbN682ZKEMabIsEQRBJs3b6ZmzZqMHz8ecO6m3rZtGydOnGDAgAFBjs6AlRkPdpnxLVu20KlTJypUqMArr7yS63KqylVXXcXRo0cDEkdB+Pjjj2ncuDGNGzfm448/9rrM+vXr6dSpE9HR0Vx77bVnvZ/du3cTFhbmPhYnT56kS5cu7nLkAZff62qD9SjO91GcPn1a4+Pj3fdDlCtXLtghFUlF4T4KKzPun0CVGT9w4ICuWrVK//a3v+nLL7+c63LffPON3n///ee07ZxlvgMpOTlZIyMjNTk5WQ8dOqSRkZFe731o166dLlq0SFVVx48fr0888US21wcMGKA33HBDtmMxZswYnTRpktf9Fqf7KIyHyZMnU6lSJWbNmgVAmTJlGDt2bJCjKvqKQJVxKzNO4ZcZj4iIoH379pQrV87bn8TNs8w45F4mPCwsjIceeojY2FiWL1/OpEmT6NChA61ateLOO+9034dx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ahUANWvWZNq0aRw9evSsKyiMMaaksEThpyeffJLw8HASEhKyXVM/YMCAgNW7McaYosDuo8jDjz/+SNeuXTl06JB7Xq9evYIYkTHGFC5LFLnIyMggPj6eOXPmuOfVqlWLpUuXEhkZGcTIjDGmcNmpp1y88sor7iRRpkwZXn31VX777TdLEqWElRkPbpnxzz77jJiYGKKjo7nssstYv3691+W0hJcZ/+yzz2jVqpX7UaZMGXctrquvvtqvGmEFIr936gXrEcg7s48fP55tOiIiQjt16qQnTpwI2D7N2YrandlWZjx3gSozvnTpUvfd6rNnz9YOHTp4Xa60lBlXVd2wYYM2aNDAPT1x4kT35zKngr4zO+hf/OcccIASxd13362Ajho1KiDbN/7z/JAzhoA88uL5Bfjee+/p3XffraqqH330kd56663Zlt2+fbvWqVNHVTXX8gs5HTt2TIcOHapRUVEaHR2t06ZNO2u/U6dOzVbC484779QOHTroAw88oPXq1dPDhw+7l23UqJHu379ff//9d+3fv7+2a9dO27Vrp0uWLDlr32lpae59t2rVShcsWKCqqtHR0VqxYkWNjY3VxYsXZ1tn//79et1112lMTIzGxMTo0qVLs8V77Ngxveqqq7R169YaFRWlX3/9taqqpqamau/evTUmJkZbtmypU6ZMUVWnhEnz5s01OjpaH3roIZ/H6tChQ3rJJZd4fW3w4MHuMh2qqv369dM2bdpoixYt9P3333fPv+CCC/TBBx/UmJgY/f777/XTTz/V9u3ba2xsrI4cOdKdPO666y5t27attmjRQp966imfcflj8uTJOnLkSPf0yJEjdfLkyWctFx4erpmZmaqqunv3bm3evPlZyzz22GP6t7/9zT196NChXEuuFHSiKPV9FIsXLyY+Pt5dNvn999/nzTffDHJUpqiwMuOOYJYZHz9+PH/605+8vlbSy4x7+uKLL9zjfIBzg++JEydITk6mRo0auRy9glFqE8XJkyfp2rUrK1ascM9r0KBBtmkTfPp0cMq1WJnx7IJVZnzhwoWMHz+eJUuWeH29pJcZz7Jy5UoqVapEVFRUtvkRERH89ttvAU8UpbIz+4svviA0NNSdFMqVK8fHH3/Mjh07qFmzZpCjM0VBVpnxX3/9FVVl3LhxgFNQbu3atdmW9VZmPL/yW2a8f//+wJky4wkJ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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import xgboost as xgb\n",
"from sklearn.metrics import roc_curve, auc\n",
"import matplotlib.pyplot as plt\n",
"\n",
"# Predict the class probabilities of the testing data\n",
"y_prob = rfc_tuned.predict_proba(x_test)\n",
"\n",
"# Compute the ROC curve and AUC for each class\n",
"fpr = {}\n",
"tpr = {}\n",
"roc_auc = {}\n",
"for i in range(3):\n",
" fpr[i], tpr[i], _ = roc_curve(y_test == i, y_prob[:, i])\n",
" roc_auc[i] = auc(fpr[i], tpr[i])\n",
"\n",
"# Plot the ROC curves and AUCs for each class\n",
"plt.figure()\n",
"lw = 2\n",
"colors = ['red', 'blue', 'green']\n",
"for i, color in zip(range(3), colors):\n",
" plt.plot(fpr[i], tpr[i], color=color, lw=lw,\n",
" label='ROC curve of class {0} (area = {1:0.2f})'\n",
" ''.format(i, roc_auc[i]))\n",
" plt.plot([0, 1], [0, 1], color='black', lw=lw, linestyle='--')\n",
" plt.xlim([0.0, 1.0])\n",
" plt.ylim([0.0, 1.05])\n",
" plt.xlabel('False Positive Rate')\n",
" plt.ylabel('True Positive Rate')\n",
" plt.title('ROC curves and AUCs for each class')\n",
" plt.legend(loc=\"lower right\")\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 96,
"id": "c2b10656",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Feature 'plasma_CA19_9': Importance score 0.023456563152226412\n",
"Feature 'age': Importance score 0.056031320629402935\n",
"Feature 'LYVE1': Importance score 0.06168900062137468\n",
"Feature 'REG1B': Importance score 0.07328207477185975\n",
"Feature 'creatinine': Importance score 0.10190630653592864\n",
"Feature 'TFF1': Importance score 0.24920307196419297\n",
"Feature 'diagnosis': Importance score 0.42972559808785915\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Get feature importance scores\n",
"feature_importance = rfc_tuned.feature_importances_\n",
"\n",
"# Sort feature importance scores in descending order\n",
"sorted_indices = np.argsort(feature_importance)[1::]\n",
"sorted_feature_importance = feature_importance[sorted_indices]\n",
"\n",
"# Print feature importance scores\n",
"for feature_idx, importance_score in zip(sorted_indices, sorted_feature_importance):\n",
" feature_name = df.columns[feature_idx]\n",
" print(f\"Feature '{feature_name}': Importance score {importance_score}\")\n",
"\n",
"# Optionally, visualize feature importance scores\n",
"import matplotlib.pyplot as plt\n",
"\n",
"plt.figure(figsize=(10, 6))\n",
"plt.barh(range(len(sorted_feature_importance)), sorted_feature_importance)\n",
"plt.yticks(range(len(sorted_feature_importance)), [df.columns[idx] for idx in sorted_indices])\n",
"plt.xlabel('Feature')\n",
"plt.ylabel('Importance Score')\n",
"plt.title('Feature Importance')\n",
"plt.xticks(rotation=90)\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.8 (tensorflow)",
"language": "python",
"name": "tensorflow"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.15"
}
},
"nbformat": 4,
"nbformat_minor": 5
}