Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pb111/289b4d5bc64b408e5b3462e4e2edb2b3 to your computer and use it in GitHub Desktop.
Save pb111/289b4d5bc64b408e5b3462e4e2edb2b3 to your computer and use it in GitHub Desktop.
k Nearest Neighbours with Python and Scikit-Learn
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# k Nearest Neighbours with Python and Scikit-Learn\n",
"\n",
"\n",
"k Nearest Neighbours is a very simple and one of the topmost machine learning algorithms. In this project, I build a k Nearest Neighbours classifier to classify the patients suffering from Breast Cancer. I have used the `Breast Cancer Wisconsin (Original) Data Set` downloaded from the UCI Machine Learning Repository."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Table of Contents\n",
"\n",
"\n",
"1.\tIntroduction to k Nearest Neighbours Algorithm\n",
"2.\tk Nearest Neighbours intuition\n",
"3.\tThe problem statement\n",
"4.\tDataset description\n",
"5.\tImport libraries\n",
"6.\tImport dataset\n",
"7.\tExploratory data analysis\n",
"8.\tData visualization\n",
"9.\tDeclare feature vector and target variable\n",
"10.\tSplit data into separate training and test set\n",
"11.\tFeature engineering\n",
"12.\tFeature scaling\n",
"13.\tFit Neighbours classifier to the training set\n",
"14.\tPredict the test-set results\n",
"15.\tCheck the accuracy score\n",
"16.\tRebuild kNN classification model using different values of k\n",
"17.\tConfusion matrix\n",
"18.\tClassification metrices\n",
"19.\tROC - AUC\n",
"20.\tk-Fold Cross Validation\n",
"21.\tResults and conclusion\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. Introduction to k Nearest Neighbours algorithm\n",
"\n",
"\n",
"\n",
"In machine learning, k Nearest Neighbours or kNN is the simplest of all machine learning algorithms. It is a non-parametric algorithm used for classification and regression tasks. Non-parametric means there is no assumption required for data distribution. So, kNN does not require any underlying assumption to be made. In both classification and regression tasks, the input consists of the k closest training examples in the feature space. The output depends upon whether kNN is used for classification or regression purposes.\n",
"\n",
"-\tIn kNN classification, the output is a class membership. The given data point is classified based on the majority of type of its neighbours. The data point is assigned to the most frequent class among its k nearest neighbours. Usually k is a small positive integer. If k=1, then the data point is simply assigned to the class of that single nearest neighbour.\n",
"\n",
"-\tIn kNN regression, the output is simply some property value for the object. This value is the average of the values of k nearest neighbours.\n",
"\n",
"\n",
"kNN is a type of instance-based learning or lazy learning. Lazy learning means it does not require any training data points for model generation. All training data will be used in the testing phase. This makes training faster and testing slower and costlier. So, the testing phase requires more time and memory resources.\n",
"\n",
"In kNN, the neighbours are taken from a set of objects for which the class or the object property value is known. This can be thought of as the training set for the kNN algorithm, though no explicit training step is required. In both classification and regression kNN algorithm, we can assign weight to the contributions of the neighbours. So, nearest neighbours contribute more to the average than the more distant ones.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. k Nearest Neighbours intuition\n",
"\n",
"\n",
"The kNN algorithm intuition is very simple to understand. It simply calculates the distance between a sample data point and all the other training data points. The distance can be Euclidean distance or Manhattan distance. Then, it selects the k nearest data points where k can be any integer. Finally, it assigns the sample data point to the class to which the majority of the k data points belong.\n",
"\n",
"\n",
"Now, we will see kNN algorithm in action. Suppose, we have a dataset with two variables which are classified as `Red` and `Blue`.\n",
"\n",
"\n",
"In kNN algorithm, k is the number of nearest neighbours. Generally, k is an odd number because it helps to decide the majority of the class. When k=1, then the algorithm is known as the nearest neighbour algorithm.\n",
"\n",
"Now, we want to classify a new data point `X` into `Blue` class or `Red` class. Suppose the value of k is 3. The kNN algorithm starts by calculating the distance between `X` and all the other data points. It then finds the 3 nearest points with least distance to point `X`. \n",
"\n",
"\n",
"In the final step of the kNN algorithm, we assign the new data point `X` to the majority of the class of the 3 nearest points. If 2 of the 3 nearest points belong to the class `Red` while 1 belong to the class `Blue`, then we classify the new data point as `Red`.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3. The problem statement\n",
"\n",
"\n",
"In this project, I try to classify the patients suffering from breast cancer. I implement kNN algorithm with Python and Scikit-Learn. \n",
"\n",
"\n",
"To answer the question, I build a kNN classifier to predict whether or not a patient is suffering from breast cancer. I have used the **Breast Cancer Wisconsin (Original) Data Set** downloaded from the UCI Machine Learning Repository for this project."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4. Dataset description\n",
"\n",
"\n",
"I have used the **Breast Cancer Wisconsin (Original) Data Set** downloaded from the UCI Machine Learning Repository for this project.\n",
"\n",
"\n",
"The data set can be found at the following url:-\n",
"\n",
"\n",
"https://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+(Original)\n",
"\n",
"\n",
"This dataset contains the patient samples that arrive periodically as Dr. Wolberg reports his clinical cases. \n",
"\n",
"\n",
"The attribute information of this dataset is as follows:-\n",
"\n",
"1. Sample code number: id number \n",
"2. Clump Thickness: 1 - 10 \n",
"3. Uniformity of Cell Size: 1 - 10 \n",
"4. Uniformity of Cell Shape: 1 - 10 \n",
"5. Marginal Adhesion: 1 - 10 \n",
"6. Single Epithelial Cell Size: 1 - 10 \n",
"7. Bare Nuclei: 1 - 10 \n",
"8. Bland Chromatin: 1 - 10 \n",
"9. Normal Nucleoli: 1 - 10 \n",
"10. Mitoses: 1 - 10 \n",
"11. Class: (2 for benign, 4 for malignant)\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 5. Import libraries"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import warnings\n",
"\n",
"warnings.filterwarnings('ignore')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 6. Import dataset"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"data = 'C:/datasets/breast-cancer-wisconsin.data'\n",
"\n",
"df = pd.read_csv(data, header=None)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 7. Exploratory data analysis\n",
"\n",
"\n",
"Now, I will explore the data to gain insights about the data. "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(699, 11)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# view dimensions of dataset\n",
"\n",
"df.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that there are 699 instances and 11 attributes in the data set. \n",
"\n",
"\n",
"In the dataset description, it is given that there are 10 attributes and 1 `Class` which is the target variable. So, we have 10 attributes and 1 target variable."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### View top 5 rows of dataset"
]
},
{
"cell_type": "code",
"execution_count": 5,
"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>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>10</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1000025</td>\n",
" <td>5</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1002945</td>\n",
" <td>5</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>5</td>\n",
" <td>7</td>\n",
" <td>10</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1015425</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1016277</td>\n",
" <td>6</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>4</td>\n",
" <td>3</td>\n",
" <td>7</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1017023</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4 5 6 7 8 9 10\n",
"0 1000025 5 1 1 1 2 1 3 1 1 2\n",
"1 1002945 5 4 4 5 7 10 3 2 1 2\n",
"2 1015425 3 1 1 1 2 2 3 1 1 2\n",
"3 1016277 6 8 8 1 3 4 3 7 1 2\n",
"4 1017023 4 1 1 3 2 1 3 1 1 2"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# preview the dataset\n",
"\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Rename column names\n",
"\n",
"We can see that the dataset does not have proper column names. The columns are merely labelled as 0,1,2.... and so on. We should give proper names to the columns. I will do it as follows:-"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['Id', 'Clump_thickness', 'Uniformity_Cell_Size',\n",
" 'Uniformity_Cell_Shape', 'Marginal_Adhesion',\n",
" 'Single_Epithelial_Cell_Size', 'Bare_Nuclei', 'Bland_Chromatin',\n",
" 'Normal_Nucleoli', 'Mitoses', 'Class'],\n",
" dtype='object')"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"col_names = ['Id', 'Clump_thickness', 'Uniformity_Cell_Size', 'Uniformity_Cell_Shape', 'Marginal_Adhesion', \n",
" 'Single_Epithelial_Cell_Size', 'Bare_Nuclei', 'Bland_Chromatin', 'Normal_Nucleoli', 'Mitoses', 'Class']\n",
"\n",
"df.columns = col_names\n",
"\n",
"df.columns"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that the column names are renamed. Now, the columns have meaningful names."
]
},
{
"cell_type": "code",
"execution_count": 7,
"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>Id</th>\n",
" <th>Clump_thickness</th>\n",
" <th>Uniformity_Cell_Size</th>\n",
" <th>Uniformity_Cell_Shape</th>\n",
" <th>Marginal_Adhesion</th>\n",
" <th>Single_Epithelial_Cell_Size</th>\n",
" <th>Bare_Nuclei</th>\n",
" <th>Bland_Chromatin</th>\n",
" <th>Normal_Nucleoli</th>\n",
" <th>Mitoses</th>\n",
" <th>Class</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1000025</td>\n",
" <td>5</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1002945</td>\n",
" <td>5</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>5</td>\n",
" <td>7</td>\n",
" <td>10</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1015425</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1016277</td>\n",
" <td>6</td>\n",
" <td>8</td>\n",
" <td>8</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>4</td>\n",
" <td>3</td>\n",
" <td>7</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1017023</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Id Clump_thickness Uniformity_Cell_Size Uniformity_Cell_Shape \\\n",
"0 1000025 5 1 1 \n",
"1 1002945 5 4 4 \n",
"2 1015425 3 1 1 \n",
"3 1016277 6 8 8 \n",
"4 1017023 4 1 1 \n",
"\n",
" Marginal_Adhesion Single_Epithelial_Cell_Size Bare_Nuclei \\\n",
"0 1 2 1 \n",
"1 5 7 10 \n",
"2 1 2 2 \n",
"3 1 3 4 \n",
"4 3 2 1 \n",
"\n",
" Bland_Chromatin Normal_Nucleoli Mitoses Class \n",
"0 3 1 1 2 \n",
"1 3 2 1 2 \n",
"2 3 1 1 2 \n",
"3 3 7 1 2 \n",
"4 3 1 1 2 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# let's agian preview the dataset\n",
"\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Drop redundant columns\n",
"\n",
"\n",
"We should drop any redundant columns from the dataset which does not have any predictive power. Here, `Id` is the redundant column. So, I will drop it first."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"# drop Id column from dataset\n",
"\n",
"df.drop('Id', axis=1, inplace=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### View summary of dataset\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 699 entries, 0 to 698\n",
"Data columns (total 10 columns):\n",
"Clump_thickness 699 non-null int64\n",
"Uniformity_Cell_Size 699 non-null int64\n",
"Uniformity_Cell_Shape 699 non-null int64\n",
"Marginal_Adhesion 699 non-null int64\n",
"Single_Epithelial_Cell_Size 699 non-null int64\n",
"Bare_Nuclei 699 non-null object\n",
"Bland_Chromatin 699 non-null int64\n",
"Normal_Nucleoli 699 non-null int64\n",
"Mitoses 699 non-null int64\n",
"Class 699 non-null int64\n",
"dtypes: int64(9), object(1)\n",
"memory usage: 54.7+ KB\n"
]
}
],
"source": [
"# view summary of dataset\n",
"\n",
"df.info()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that the `Id` column has been removed from the dataset. \n",
"\n",
"We can see that there are 9 numerical variables and 1 categorical variable in the dataset. I will check the frequency distribution of values in the variables to confirm the same."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Frequency distribution of values in variables"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 145\n",
"5 130\n",
"3 108\n",
"4 80\n",
"10 69\n",
"2 50\n",
"8 46\n",
"6 34\n",
"7 23\n",
"9 14\n",
"Name: Clump_thickness, dtype: int64\n",
"1 384\n",
"10 67\n",
"3 52\n",
"2 45\n",
"4 40\n",
"5 30\n",
"8 29\n",
"6 27\n",
"7 19\n",
"9 6\n",
"Name: Uniformity_Cell_Size, dtype: int64\n",
"1 353\n",
"2 59\n",
"10 58\n",
"3 56\n",
"4 44\n",
"5 34\n",
"7 30\n",
"6 30\n",
"8 28\n",
"9 7\n",
"Name: Uniformity_Cell_Shape, dtype: int64\n",
"1 407\n",
"3 58\n",
"2 58\n",
"10 55\n",
"4 33\n",
"8 25\n",
"5 23\n",
"6 22\n",
"7 13\n",
"9 5\n",
"Name: Marginal_Adhesion, dtype: int64\n",
"2 386\n",
"3 72\n",
"4 48\n",
"1 47\n",
"6 41\n",
"5 39\n",
"10 31\n",
"8 21\n",
"7 12\n",
"9 2\n",
"Name: Single_Epithelial_Cell_Size, dtype: int64\n",
"1 402\n",
"10 132\n",
"5 30\n",
"2 30\n",
"3 28\n",
"8 21\n",
"4 19\n",
"? 16\n",
"9 9\n",
"7 8\n",
"6 4\n",
"Name: Bare_Nuclei, dtype: int64\n",
"2 166\n",
"3 165\n",
"1 152\n",
"7 73\n",
"4 40\n",
"5 34\n",
"8 28\n",
"10 20\n",
"9 11\n",
"6 10\n",
"Name: Bland_Chromatin, dtype: int64\n",
"1 443\n",
"10 61\n",
"3 44\n",
"2 36\n",
"8 24\n",
"6 22\n",
"5 19\n",
"4 18\n",
"9 16\n",
"7 16\n",
"Name: Normal_Nucleoli, dtype: int64\n",
"1 579\n",
"2 35\n",
"3 33\n",
"10 14\n",
"4 12\n",
"7 9\n",
"8 8\n",
"5 6\n",
"6 3\n",
"Name: Mitoses, dtype: int64\n",
"2 458\n",
"4 241\n",
"Name: Class, dtype: int64\n"
]
}
],
"source": [
"for var in df.columns:\n",
" \n",
" print(df[var].value_counts())\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The distribution of values shows that data type of `Bare_Nuclei` is of type integer. But the summary of the dataframe shows that it is type object. So, I will explicitly convert its data type to integer."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Convert data type of Bare_Nuclei to integer"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"df['Bare_Nuclei'] = pd.to_numeric(df['Bare_Nuclei'], errors='coerce')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Check data types of columns of dataframe"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Clump_thickness int64\n",
"Uniformity_Cell_Size int64\n",
"Uniformity_Cell_Shape int64\n",
"Marginal_Adhesion int64\n",
"Single_Epithelial_Cell_Size int64\n",
"Bare_Nuclei float64\n",
"Bland_Chromatin int64\n",
"Normal_Nucleoli int64\n",
"Mitoses int64\n",
"Class int64\n",
"dtype: object"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.dtypes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, we can see that all the columns of the dataframe are of type numeric."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Summary of variables\n",
"\n",
"\n",
"- There are 10 numerical variables in the dataset.\n",
"\n",
"\n",
"- All of the variables are of discrete type.\n",
"\n",
"\n",
"- Out of all the 10 variables, the first 9 variables are feature variables and last variable `Class` is the target variable.\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Explore problems within variables\n",
"\n",
"\n",
"Now, I will explore problems within variables.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Missing values in variables"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Clump_thickness 0\n",
"Uniformity_Cell_Size 0\n",
"Uniformity_Cell_Shape 0\n",
"Marginal_Adhesion 0\n",
"Single_Epithelial_Cell_Size 0\n",
"Bare_Nuclei 16\n",
"Bland_Chromatin 0\n",
"Normal_Nucleoli 0\n",
"Mitoses 0\n",
"Class 0\n",
"dtype: int64"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# check missing values in variables\n",
"\n",
"df.isnull().sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that the `Bare_Nuclei` column contains missing values. We need to dig deeper to find the frequency distribution of \n",
"values of `Bare_Nuclei`."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"Clump_thickness 0\n",
"Uniformity_Cell_Size 0\n",
"Uniformity_Cell_Shape 0\n",
"Marginal_Adhesion 0\n",
"Single_Epithelial_Cell_Size 0\n",
"Bare_Nuclei 16\n",
"Bland_Chromatin 0\n",
"Normal_Nucleoli 0\n",
"Mitoses 0\n",
"Class 0\n",
"dtype: int64"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# check `na` values in the dataframe\n",
"\n",
"df.isna().sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that the `Bare_Nuclei` column contains 16 `nan` values."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.0 402\n",
"10.0 132\n",
"5.0 30\n",
"2.0 30\n",
"3.0 28\n",
"8.0 21\n",
"4.0 19\n",
"9.0 9\n",
"7.0 8\n",
"6.0 4\n",
"Name: Bare_Nuclei, dtype: int64"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# check frequency distribution of `Bare_Nuclei` column\n",
"\n",
"df['Bare_Nuclei'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 1., 10., 2., 4., 3., 9., 7., nan, 5., 8., 6.])"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# check unique values in `Bare_Nuclei` column\n",
"\n",
"df['Bare_Nuclei'].unique()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that there are `nan` values in the `Bare_Nuclei` column."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"16"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# check for nan values in `Bare_Nuclei` column\n",
"\n",
"df['Bare_Nuclei'].isna().sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that there are 16 `nan` values in the dataset. I will impute missing values after dividing the dataset into training and test set."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### check frequency distribution of target variable `Class`"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2 458\n",
"4 241\n",
"Name: Class, dtype: int64"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# view frequency distribution of values in `Class` variable\n",
"\n",
"df['Class'].value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### check percentage of frequency distribution of `Class`"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2 0.655222\n",
"4 0.344778\n",
"Name: Class, dtype: float64"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# view percentage of frequency distribution of values in `Class` variable\n",
"\n",
"df['Class'].value_counts()/np.float(len(df))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that the `Class` variable contains 2 class labels - `2` and `4`. `2` stands for benign and `4` stands for malignant cancer."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Outliers in numerical variables"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Clump_thickness Uniformity_Cell_Size Uniformity_Cell_Shape \\\n",
"count 699.00 699.00 699.00 \n",
"mean 4.42 3.13 3.21 \n",
"std 2.82 3.05 2.97 \n",
"min 1.00 1.00 1.00 \n",
"25% 2.00 1.00 1.00 \n",
"50% 4.00 1.00 1.00 \n",
"75% 6.00 5.00 5.00 \n",
"max 10.00 10.00 10.00 \n",
"\n",
" Marginal_Adhesion Single_Epithelial_Cell_Size Bare_Nuclei \\\n",
"count 699.00 699.00 683.00 \n",
"mean 2.81 3.22 3.54 \n",
"std 2.86 2.21 3.64 \n",
"min 1.00 1.00 1.00 \n",
"25% 1.00 2.00 1.00 \n",
"50% 1.00 2.00 1.00 \n",
"75% 4.00 4.00 6.00 \n",
"max 10.00 10.00 10.00 \n",
"\n",
" Bland_Chromatin Normal_Nucleoli Mitoses Class \n",
"count 699.00 699.00 699.00 699.00 \n",
"mean 3.44 2.87 1.59 2.69 \n",
"std 2.44 3.05 1.72 0.95 \n",
"min 1.00 1.00 1.00 2.00 \n",
"25% 2.00 1.00 1.00 2.00 \n",
"50% 3.00 1.00 1.00 2.00 \n",
"75% 5.00 4.00 1.00 4.00 \n",
"max 10.00 10.00 10.00 4.00 \n"
]
}
],
"source": [
"# view summary statistics in numerical variables\n",
"\n",
"print(round(df.describe(),2))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"kNN algorithm is robust to outliers."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 8. Data Visualization\n",
"\n",
"\n",
"Now, we have a basic understanding of our data. I will supplement it with some data visualization to get better understanding\n",
"of our data."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Univariate plots"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Check the distribution of variables\n",
"\n",
"\n",
"Now, I will plot the histograms to check variable distributions to find out if they are normal or skewed. "
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABsMAAAVxCAYAAADS8PIwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3X2YXWV5L/7vTRIICIpC8IcJnESKogIGGNCKYg74gkBBqVS0VUCRYws9gJaC1mrac7hOeuQcUFEq7y9HRJQqFNSKVIrWKgQNEkUlQoQAlQiCikIJPL8/ZpMOMAmTMHv2np3P57rm2ms969lrfWfc4HVz7/Wsaq0FAAAAAAAABtF6vQ4AAAAAAAAA3aIZBgAAAAAAwMDSDAMAAAAAAGBgaYYBAAAAAAAwsDTDAAAAAAAAGFiaYQAAAAAAAAwszTAAAAAAAAAGlmYYAAAAAAAAA0szDAAAgL5RVVOq6ntVdXlnf05Vfaeqbq6qz1bV+p3xDTr7SzrHZ/cyNwAA0L+m9jrA07H55pu32bNn9zoGAAAwTq6//vpftNZm9DoHPXV0kpuSPLOz/3dJTm6tXVRVf5/kXUlO67z+srX2e1V1cGfeW1Z3YjUkAAAMlrHWkJO6GTZ79uwsXLiw1zEAAIBxUlU/63UGeqeqZiXZN8mJSd5bVZVkzyRv60w5L8n8DDfDDuhsJ8nnk5xaVdVaa6s6vxoSAAAGy1hrSMskAgAA0C9OSfKXSR7t7G+W5L7W2orO/rIkMzvbM5PcniSd4/d35j9OVR1RVQurauHy5cu7mR0AAOhTmmEAAAD0XFXtl+Tu1tr1I4dHmdrGcOw/B1o7vbU21FobmjHDCpwAALAumtTLJAIAADAwdk+yf1Xtk2R6hp8ZdkqSTatqaufur1lJ7uzMX5ZkqyTLqmpqkmcluXfiYwMAAP1OMwwAgL718MMPZ9myZXnwwQd7HYVxNn369MyaNSvTpk3rdRT6RGvt/UnenyRVNS/JX7TW/riqPpfkzUkuSnJIkks7b7mss/9vneP/vLrnhQEA0L/UfjyVp1tDaoYBANC3li1blk022SSzZ89O1WgrojEZtdZyzz33ZNmyZZkzZ06v49D/jk9yUVX9zyTfS3JWZ/ysJBdU1ZIM3xF2cI/yAQDwNKn9WJ3xqCE1wwAA6FsPPvigYmgAVVU222yzLF++vNdR6FOttauTXN3ZviXJbqPMeTDJQRMaDACArlD7sTrjUUOuN455AABg3CmGBpP/XQEAgJHUCKzO0/18aIYBAAAAAAAwsCyTCADApDH7hCvG9XxLF+w7rucDAABgHMx/1jif7/7xPR+TjmbYOBnv/zAzCPzHJQBgEPz7v/97jjnmmFx33XXZYIMNMnv27Jxyyik58MADs3jx4gnNct999+XCCy/Mn/3ZnyVJrr766px00km5/PLLnzT38MMPz3vf+968+MUvHvVc8+fPz8Ybb5y/+Iu/6GpmYBXG+z/wDAL/kQoA6KGlS5dmv/32e1yd91R108KFC3P++efnYx/7WB566KHsu++++cUvfpH3v//9ectb3jKu+V7xilfkW9/6VpYuXZpvfetbedvb3rZW5/nyl7+cv/7rv84DDzyQ1lr222+/nHTSSaucf+6552bhwoU59dRTn/Lv8e1vfztHH310HnrooTz00EN5y1vekvnz5+eyyy7LD3/4w5xwwglrlXk8aIYBAMAqtNbypje9KYccckguuuiiJMmiRYvy85//vCd57rvvvnzyk59c2QxbnTPPPHMCEgEAAKy7hoaGMjQ0lCT53ve+l4cffjiLFi0a8/sfeeSRTJkyZUxzv/WtbyUZbtpdeOGFa9UMW7x4cY466qhcccUV2W677bJixYqcfvrpa3yeVTnkkENy8cUX56UvfWkeeeSR/PjHP06S7L///tl///3H7TprwzPDAABgFb7+9a9n2rRpec973rNybO7cudlqq61W7p977rk56qijVu7vt99+ufrqq5MkG2+8cY4//vjssssuec1rXpNrr7028+bNy/Of//xcdtllK99/wAEHZO+9984LX/jC/M3f/M0q85xwwgn56U9/mrlz5+a4445LkvzmN7/Jm9/85my33Xb54z/+47TWkiTz5s3LwoULkyRf+cpXsvPOO+elL31p9tprryed94wzzsgb3vCG/O53v8u8efNy/PHHZ7fddssLXvCCfOMb30gyXKQdd9xx2XXXXbPjjjvmU5/6VJLkrrvuyh577JG5c+dm++23zze+8Y088sgjOfTQQ7P99ttnhx12yMknn7zGf3sAAIB+sao66eqrr85+++2Xu+++O3/yJ3+SRYsWZe7cufnpT3+aq666KjvttFN22GGHvPOd78xDDz2UJJk9e3b+9m//Nq985Svzuc99LvPmzcuxxx6bPfbYIy960Yty3XXX5cADD8y2226bD37wgyszbLzxxkmG68JvfOMbmTt3bk4++eS86lWvelwDbvfdd8/3v//9UX+P//2//3f+6q/+Ktttt12SZOrUqSu/bLl8+fL84R/+YXbdddfsuuuu+dd//dc1/jvdfffd2XLLLZMkU6ZMWblSyci6ee7cuSt/Ntxww/zLv/xLHnjggbzzne/Mrrvump122imXXnrpGl/7qWiGAQDAKixevDi77LLLWr//gQceyLx583L99ddnk002yQc/+MFceeWV+cIXvpAPfehDK+dde+21+fSnP51Fixblc5/73Mom1hMtWLAg22yzTRYtWpSPfOQjSYa/fXjKKafkhz/8YW655ZYnFSzLly/Pu9/97lxyySW54YYb8rnPfe5xx0899dT84z/+Y774xS9mww03TJKsWLEi1157bU455ZSVzbmzzjorz3rWs3LdddfluuuuyxlnnJFbb701F154YV7/+tdn0aJFueGGGzJ37twsWrQod9xxRxYvXpwbb7wxhx122Fr/DQEAAPrBaHXSY7bYYouceeaZKxtTM2fOzKGHHprPfvazufHGG7NixYqcdtppK+dPnz493/zmN3PwwQcnSdZff/1cc801ec973pMDDjggn/jEJ7J48eKce+65ueeeex53rQULFqy8zrHHHpvDDz885557bpLkJz/5SR566KHsuOOOo/4Oq6txjz766Bx77LG57rrrcskll+Twww9f47/Rsccemxe+8IV505velE996lN58MEHnzRn0aJFWbRoUf7H//gfGRoayite8YqceOKJ2XPPPXPdddfl61//eo477rg88MADa3z91dEMAwCALll//fWz9957J0l22GGHvPrVr860adOyww47ZOnSpSvnvfa1r81mm22WDTfcMAceeGC++c1vjvkau+22W2bNmpX11lsvc+fOfdx5k+E12/fYY4/MmTMnSfKc5zxn5bELLrggX/7yl3PJJZdkgw02WDl+4IEHJkl22WWXlef76le/mvPPPz9z587Ny172stxzzz25+eabs+uuu+acc87J/Pnzc+ONN2aTTTbJ85///Nxyyy358z//83zlK1/JM5/5zDX5swEAAEy4qlrt+Gh10qr8+Mc/zpw5c/KCF7wgyfDygddcc83K4098nthjSwjusMMOeclLXpItt9wyG2ywQZ7//Ofn9ttvX+21DjrooFx++eV5+OGHc/bZZ+fQQw9d7fxV+drXvpajjjoqc+fOzf77759f/epX+fWvf71G5/jQhz6UhQsX5nWve10uvPDClfXwE91888057rjj8tnPfjbTpk3LV7/61SxYsCBz587NvHnz8uCDD+a2225bq99jVbrWDKuqs6vq7qp60lPFq+ovqqpV1ead/aqqj1XVkqr6flXt3K1cAAAwVi95yUty/fXXr3bO1KlT8+ijj67cH/nNt2nTpq0snNZbb72VDaf11lsvK1asWDnviUXXqoqw0YxsYk2ZMuVx502Gn3u2qvNtv/32Wbp0aZYtWzbqOUeer7WWj3/84yu/xXfrrbfmda97XfbYY49cc801mTlzZt7+9rfn/PPPz7Of/ezccMMNmTdvXj7xiU+s1TcKAQAAJtJmm22WX/7yl48bu/fee7P55psnGb1OWpXHlq9flWc84xmP2x9ZK46s8Z5YO45mo402ymtf+9pceumlufjii1f7LLHV1biPPvpo/u3f/m1lzXfHHXdkk002We21R7PNNtvkT//0T3PVVVflhhtueNKdbQ888ED+6I/+KGeccUae97znJRn+e11yySUrr33bbbflRS960Rpfe3WmjuvZHu/cJKcmOX/kYFVtleS1SUa29d6QZNvOz8uSnNZ5BQCAlZYu2HdCr7fnnnvmAx/4QM4444y8+93vTpJcd911+e1vf7tyzuzZs/PJT34yjz76aO64445ce+21a3ydK6+8Mvfee2823HDDfPGLX8zZZ5896rxNNtlkjb+Z9/u///s58sgjc+utt2bOnDm59957V94dttNOO+VP//RPs//+++ef/umfVhYio3n961+f0047LXvuuWemTZuWn/zkJ5k5c2Z+8YtfZObMmXn3u9+dBx54IN/97nezzz77ZP31188f/uEfZptttlnrbyYCAADrqPn3T/glN95442y55Za56qqrstdee+Xee+/NV77ylRx99NE555xz1uhc2223XZYuXZolS5bk937v93LBBRfk1a9+9bjkHK0uPPzww/MHf/AHedWrXvW41UCe6LjjjsuBBx6YV77ylXnBC16QRx99NKecckre+9735nWve11OPfXUlc+nfuz5Z2viiiuuyD777JOqys0335wpU6Zk0003fdycww47LIcddlhe9apXrRx7/etfn49//OP5+Mc/nqrK9773vey0005rdO2n0rVmWGvtmqqaPcqhk5P8ZZKRT0A7IMn5bbhd+u2q2rSqtmyt3dWtfAAA8FSqKl/4whdyzDHHZMGCBZk+fXpmz56dU045ZeWc3XffPXPmzMkOO+yQ7bffPjvvvOaLHLzyla/M29/+9ixZsiRve9vbMjQ0NOq8zTbbLLvvvnu23377vOENb8i++z51c3DGjBk5/fTTc+CBB+bRRx/NFltskSuvvPJx1z7ppJOy7777Pm78iQ4//PAsXbo0O++8c1prmTFjRr74xS/m6quvzkc+8pFMmzYtG2+8cc4///zccccdOeyww1beMfe//tf/WsO/CAAAwMQ7//zzc+SRR+Z973tfkuTDH/5wttlmmzU+z/Tp03POOefkoIMOyooVK7LrrrvmPe95z7hk3HHHHTN16tS89KUvzaGHHppjjz02u+yyS575zGc+5fOad9xxx5xyyil561vfmt/+9repqpV15cc+9rEceeSR2XHHHbNixYrsscce+fu///s1ynbBBRfk2GOPzUYbbZSpU6fm05/+dKZMmbLy+M9+9rN8/vOfz09+8pOVXwI988wz89d//dc55phjsuOOO6a1ltmzZ+fyyy9fw7/M6tVT3a73tE4+3Ay7vLW2fWd//yR7tdaOrqqlSYZaa7+oqsuTLGitfbMz76okx7fWnvTk8Ko6IskRSbL11lvv8rOf/axr+dfE7BOu6HWEvjPR39wGAAbPTTfdNO5LI/Sbc889NwsXLsypp57a6ygTbrT/favq+tba6N1AeJqGhobawoVPKjN7Y/6zep2g//TgG+AAQH9YF2q/brrzzjszb968/OhHP8p663Xt6Vg993RqyAn7q1TVRkn+KsmHRjs8ytioXbrW2umttaHW2tCMGTPGMyIAAAAAAMCkcf755+dlL3tZTjzxxIFuhD1d3Xxm2BNtk2ROkhs6D/CeleS7VbVbkmVJthoxd1aSOycwGwAA9MShhx76pGdq3XPPPdlrr72eNPeqq67KZpttNkHJAAAA6HfveMc78o53vONxY+ecc04++tGPPm5s9913zyc+8YlxueaRRx6Zf/3Xf33c2NFHH/2UyzT20oQ1w1prNybZ4rH9JyyTeFmSo6rqoiQvS3K/54UBAJAkrbV0vky1zths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l112WXbZZZfssMMOOfroo7No0aIkyeabb55PfOIT2WuvvXLxxRdnn332yYknnphXv/rV2XbbbXPttdfmkEMOyVZbbZW/+Zu/WRbD+uuvnyQ56aST8tOf/jQ777xzzjjjjOy9995PKsDtueeemTt37pC/4x/+4R9y8sknZ5tttkmSTJgwIe9617uSJAsXLszb3va2vOIVr8grXvGK/OxnP1vpf6d77rknkydPTpKsvfbaT3rr8JZbbsk+++yTl7zkJTnzzDOXtb/lLW/Jbrvtlu233/5Jhbn1118/73vf+7Lrrrtmv/32y9L///zXv/51DjjggOy2227Ze++9c+utt650nDyrnZBk8BShv09yRmttqyT3J3ln1/7OJPe31l6a5IyuHwAA9MQb3vCGfO9730uSXHDBBTn88MOXXbvmmmvyqle9Krvsskte9apXLXvp8JxzzsmMGTPypje9Ka9//euzZMmSvOtd78r222+fgw46KAceeGC+/vWBRfT22WefzJ49O8lArnXyySdnp512yvTp03P33XcnSb7zne9kjz32yC677JLXve51y9qH46tf/Wre8Y535PWvf30uueSSZe3XXXdddtppp7zyla/M5z73uSeNufPOO3PAAQdkq622ygc/+MFl7T/84Q/zyle+MrvuumtmzJiRhx4amBd10kknZbvttsuOO+64bNWRU045ZdlKJ3PmzMn06dOz44475q1vfWvuv//+Zb99qHx+JPW0GNZae6K1tnOSqUl2r6qXJ/lwkm2SvCIDb/Z9qOteQ91iiHue1Vqb1lqbNmnSpB5FDgDAeLR48eJcc801+fSnP52Pf/zjT7r2ohe9KF/60peWFaamTJmSI488MhdeeGFuvPHGLF68OJ///OeX9Z84cWKuvPLKHHbYYUmS5zznObniiity3HHH5eCDD87nPve5ZUtH3HvvvU961ic/+cllzznxxBNzzDHH5JxzzkmS/L//9/+yaNGi7LjjjkP+hptuuim77bbbkNdOOOGEnHjiibn22mvzjW98I8ccc8xK/xudeOKJednLXpa3vvWt+ad/+qc8+uijy67deuut+dd//ddcc801+fjHP57HH388SfKVr3wl1113XWbPnp0zzzxz2e99+OGHs+uuu+b666/Pa17zmmX/5scee2z+1//6X7nuuuvyqU99alkxD1akqqYmeWOSL3XnlWTfJEuX2Z+V5C3d8cHdebrr+3X9AQBgxB122GH52te+lkcffTRz587NHnv85y5P22yzTa644orccMMN+cQnPpGPfOQjy65dddVVmTVrVn784x/nm9/8ZubPn58bb7wxX/rSl3LVVVcN+ayHH34406dPzy9/+cu8+tWvzhe/+MUkyV577ZWrr746N9xwQw477LD8wz/8w7Djv/DCC3PooYfm8MMPf9IyiUcddVTOPPPMIWOZM2fOspz5wgsvzB133JHf//73OfXUU/OjH/0o119/faZNm5bTTz899913X771rW/l5ptvzty5c5/04uhSRxxxRP7+7/8+c+fOzQ477PCkvH15+fxI6OWeYcu01h6oqsuTHNBaW7rZwaKqOjvJ0k0JFiTZdNCwqUnuXBPxAQAwPjzT37mXth9yyCFJkt122y3z589f7r1+9atfZYsttsjWW2+dZGD5wM997nN5z3vekyRP20/szW9+c5Jkhx12yPbbb79sdtVLXvKS3HHHHdl4442f8VkzZszI3/3d3+V//s//ma985Ss58sgjl/9Dn8GPfvSj3HLLLcvO//CHP+SPf/zjSt3jb//2b/MXf/EX+eEPf5ivfvWrueCCC3L55ZcnSd74xjdm3XXXzbrrrpsXvehFufvuuzN16tSceeaZ+da3vpUkueOOO3Lbbbdl4403zlprrbXs3+ntb397DjnkkDz00EP5+c9/nhkzZix75tIZdzAMn07ywSQbdOcbJ3mgtba4Ox+8gsiy1UVaa4ur6sGu/+8H37Cqjk1ybJJsttlmPQ0eAID+teOOO2b+/Pm54IILcuCBBz7p2oMPPpiZM2fmtttuS1Ute7EwSfbff/+88IUvTJJceeWVmTFjRtZaa628+MUvzmtf+9ohn/Wc5zwnBx10UJKB/PbSSy9NkixYsCCHHnpo7rrrrjz22GPZYosthhX7tddem0mTJuXP/uzPMnXq1Bx99NG5//77s9Zaa+WBBx7Ia17zmiTJO97xjvzgBz9YNm6//fbLhhtumCTZbrvt8m//9m954IEHcsstt2TPPfdMkjz22GN55Stfmec///mZOHFijjnmmLzxjW9cFv/gf6PBz5o5c+aT8saVyedXRc9mhlXVpKraqDt+bpLXJbm1qiZ3bZWBN/qW7n5+SZIjasD0JA/aLwwAgME23njjZcsoLHXfffdlk002SZKsu+7ACtxrr712Fi9e/LTxgw1sVfvMnrp++tJ7r7XWWsuOl56v6Fnrrbde9t9//3z729/ORRddtNy9xLbffvtcd911Q15bsmRJrrrqqsyZMydz5szJ7373u2ywwQZD9l2eLbfcMn/1V3+Vyy67LL/85S+XzfQa/LuW/htefvnl+dGPfpSrrroqv/zlL7PLLrs8aTbZYFWVJUuWZKONNloW45w5czJv3rwh+8NgVXVQkntaa4P/B2B5K4hYXQQAgDXqzW9+c97//vc/aYnEJPnoRz+a1772tbnpppvyne9850k50+DcckV56FLrrLPOspc+B+e3f/3Xf513v/vdufHGG5+20sfyXHDBBbn11luz+eabZ8stt8wf/vCHfOMb30hr7RlfOk2GzhFba9l///2X5Xu33HJLvvzlL2fChAm55ppr8ra3vS3//M//nAMOOGBYsRN7CewAACAASURBVD31WcPJ51dFL2eGTU4yq9v8eK0kF7XWvltVP66qSRlIXOYkWbp72veTHJjk9iSPJDmqh7EBADACbpx54xp93vrrr5/Jkyfnsssuy3777Zf77rsv//Iv/5ITTjghZ5999krda5tttsn8+fNz++2356UvfWnOO++8ZW+ora4NNtjgaTO2jjnmmLzpTW/K3nvvveytwKF84AMfyCGHHJK99torW2+9dZYsWZJPf/rTee9735vXv/71+exnP5sPfOADSbJs/7OV8b3vfS8HHnhgqiq33XZb1l577Wy00UbP2P/BBx/MC17wgqy33nq59dZbc/XVVy+7tmTJknz961/PYYcdlq9+9avZa6+98vznPz9bbLFFLr744syYMSOttcydOzc77bTTSsXJs9KeSd5cVQcmmZjk+RmYKbZRVU3oZocNXkFk6eoiC6pqQpINk9y35sMGAGBN2vbW0XvZ7uijj86GG26YHXbYYdkKG8lA3jRlysACBkuXyB/KXnvtlVmzZmXmzJlZuHBhLr/88uW+LPlUg58za9asFfQesGTJklx88cWZO3fusrE/+clPcuqpp+aYY47JhhtumCuvvDJ77bVXzj///BXeb/r06Tn++OOX5dKPPPJIFixYkD/90z/NI488kgMPPDDTp0/PS1/60ieN23DDDfOCF7wgP/3pT7P33nuPaA4+HD0rhrXW5ibZZYj2fZ+hf0tyfK/iAQCgP5x77rk5/vjj8773vS9J8rGPfSxbbrnlSt9n4sSJOfvsszNjxowsXrw4r3jFK3LccceteOAw7LjjjpkwYUJ22mmnHHnkkTnxxBOz22675fnPf36OOmr573ztuOOO+fSnP53DDz88jzzySKoqb3zjG5MkZ555Zo4//vjsuOOOWbx4cV796lfnC1/4wkrFdt555+XEE0/MeuutlwkTJuT888/P2muv/Yz9DzjggHzhC1/IjjvumJe97GWZPn36smvPe97zcvPNN2e33XbLhhtumAsvvDBJcv755+ev/uqvcuqpp+bxxx/PYYcdphjGCrXWPpyBPaZTVfskeX9r7S+q6uIk/yXJ15LMTPLtbsgl3flV3fUft+G+agsAAKtg6tSpOeGEE57W/sEPfjAzZ87M6aefnn33HbIEkiR529velssuuywvf/nLs/XWW2ePPfZYtgzhcJxyyimZMWNGpkyZkunTp+e3v/3tCsdcccUVmTJlyrJCWJK8+tWvzi233JK77rorZ599do4++uist956+fM///MV3m/SpEk555xzcvjhhy9bEv/UU0/NBhtskIMPPjiPPvpoWms544wznjZ21qxZOe644/LII4/kJS95yUq/1Lo6ajznCtOmTWuzZ88e7TCSJDvM2mG0Qxhz1vSb4gBA782bNy/bbrvtaIcxLt15553ZZ599cuutt2attXq2Wvkatf766+ehhx5a5fFD/fdUVde11qatbmyMb4OKYQdV1UsyUAh7YZIbkry9tbaoqiYmOS8DL2Hel+Sw1tpvlnffsZRDztvG/y59qtF8yxsAGLv6LQ996KGHsv766+fee+/N7rvvnp/97Gd58YtfPNphjQurk0P2cplEAAAgA7PZTj755Jx++ul9UwiDXmqtXZ7k8u74N0l2H6LPo0lmPLUdAADGsoMOOigPPPBAHnvssXz0ox9VCFtDFMMAAKDHjjjiiBxxxBFPajv77LPzmc985klte+65Zz73uc+NyDOPP/74/OxnP3tS2wknnLDCZRpXxurMCgMAAHg2GrzX2Eg77bTTcvHFFz+pbcaMGTn55JN79szxQjEMAICV0lpLVY12GOPeUUcdNaKFqacaqaJar4zn5doBAIA1Sx46PCeffHLfFr5WN4e0RgsAAMM2ceLE3HvvvQoZrJbWWu69995MnDhxtEMBAADGOHkoI5FDmhkGAMCw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/L/5m79ZtX3aaafl1a9+9api2KZ44xvfuMnXOOOMM3LZZZflqquuyvbbb5+77rorX/3qVzf5ukmyZMmSnHzyyVm0aFF22GGHLF++PMuWLUvy8N8JbGanJflfSbbr9ndKcmdr7cFuf0mSad32tCS3JUlr7cGququb/8vVL1hV85LMS5InPOEJPQ0eAABGwzbbbLMqr/2nf/qnnHDCCfnnf/7nEZ3bWktrLVtttWGraN1xxx35+te/nhe/+MUbHO+GeulLX5qXvvSlm/Wa1gwDAKCnbr/99uy8887ZeuutkyQ777xzdt111xx00EGrvlU2ZcqUvP/978/ee++duXPn5he/+EWS5Cc/+Unmzp2bfffdNx/84AczZcqUNa7/0EMP5d3vfnf23XffPPOZz8ynP/3pjYpzypQpOf744zN79uwccsghqwo/xxxzTC688MJ8/OMfz9KlS/O85z0vz3ve81adN1zcy5Yty5/+6Z9m3333zb777pt/+7d/W+N+J554Yk455ZQkyVlnnZV99903e++9d/70T/80995774hi/j//5//kU5/6VLbffqib3A477JCjjz46SbJw4cI897nPzT777JNDDz00t99++wb9Pu64445st912q37nU6ZMycyZMx/2O1mwYEFmzZqVWbNmZa+99lq1oPFPfvKTvOhFL8o+++yT5zznOfnRj360Qfdmy1RVhyW5o7W2cPXhYaa2ERz7/UBrZ7bW5rTW5kydOnUzRAoAAGPH3Xffncc85jFJkuXLl+eQQw7J7Nmzs9dee+Xiiy9O8vsuKW9+85sze/bs3HbbbfnmN7+Z/fffP7Nnz84RRxyx3q4n7373u3PSSSetMX7OOefkLW95y6r9ww47bNUTY9/4xjcye/bs7L333jnkkEPWOHdtufMjr7k5KIYBANBTL3zhC3PbbbflyU9+ct785jcP+2213/72t5k7d26uueaaHHjggTnrrLOSJMcdd1yOO+64XH311dl1112Hvf7ZZ5+dHXbYIVdffXWuvvrqnHXWWbnlllvWGs9PfvKTVQWcWbNm5V/+5V9WxTB79uwsWrQoz33uc/PXf/3XDzvvbW97W3bddddcfvnlufzyy9cb9zve8Y5cffXVueiii/L6179+nb+jV7ziFbn66qtzzTXXZM8998zZZ5+9zvlJcs899+See+7JE5/4xDWOPfDAA3nrW9+aCy+8MAsXLsxf/MVf5P3vf/96r7m6vffeO49//OMzc+bMHHvssfnHf/zHNebMmTMnixcvzuLFi/OiF71oVTvHefPm5e/+7u+ycOHCnHLKKXnzm9+8Qfdmi3VAkpdW1a1JzstQe8TTkuxYVSu7mkxPsrTbXpJktyTpju+Q5NejGTAAAPTDf//3f2fWrFl56lOfmte//vX5q7/6qyTJ5MmT85WvfCWLFi3K5ZdfnuOPPz4ru4jfdNNNee1rX5sf/OAH2XbbbXPSSSflW9/6VhYtWpQ5c+bkYx/72Drvuf/++2frrbdelQ+vz7Jly/KGN7whF110Ua655pp8+ctfXmPOhubOm0KbRAAAemrKlClZuHBh/uVf/iWXX355jjzyyHz4wx9+2JxHPepROeywofVz9tlnn1x22WVJhlosrmz792d/9mfDrp31zW9+M9dee20uvPDCJMldd92VH//4x6ueYnqktbVJ3GqrrXLkkUcmSV796lfnFa94xXp/trXF/a1vfSs33HDDqnl333137rnnnrVe57rrrssHPvCB3HnnnVm+fHkOPfTQ9d67tbbqSaxHuummm3LdddflBS94QZKhp+d22WWX9V5zdRMmTMg3vvGNXH311fn2t7+dd7zjHVm4cGFOPPHENeZecMEFWbRoUb75zW9m+fLl+fd///ccccQRq47ff//9G3RvtkyttROSnJAkVXVQkne11v68qr6c5JUZKpAdneTi7pRLuv0ru+PfGS/rhQEAwKZYvU3ilVdemde+9rW57rrr0lrL+973vnz3u9/NVlttlZ///OerOpjsvvvumTt3bpLke9/7Xm644YYccMABSZLf/e532X///dd73w984AM56aST8pGPfGS9c7/3ve/lwAMPXJWbP/axj11jzobmzptCMQwAgJ6bMGFCDjrooBx00EHZa6+9cu655z7s+KRJk1YVdiZMmJAHH3xwuMsMq7WWv/u7vxtRAWlDrK3QtLq1xb1ixYpceeWV2WabbUZ0r2OOOSZf/epXs/fee+ecc84Z0SLE22+/fbbddtv89Kc/zR/8wR887FhrLU9/+tNz5ZVXjuj+a1NV2W+//bLffvvlBS94QY499tg1imHXX399PvShD+W73/1uJkyYkBUrVmTHHXfcoHXZYD3ek+S8qjopyQ+SrHx08uwkn6+qmzP0RNhRfYoPAAD6Zv/9988vf/nLLFu2LF/72teybNmyLFy4MJMmTcqMGTNy3333JUm23XbbVee01vKCF7wgX/rSlzboXgcffHD+6q/+Kt/73vdWjU2cODErVqxYtb/yfuv6AudKG5o7bwrFMACALcz8Mw4e1fvddNNN2WqrrbLHHnskSRYvXpzdd98911133XrPnTt3bi666KIceeSROe+884adc+ihh+b000/PwQcfnEmTJuU//uM/Mm3atIf9j/5IrFixIhdeeGGOOuqofPGLX8wf/dEfrTFnu+22yz333JOdd955ndd64QtfmE984hN597vfnWToZ541a9Za599zzz3ZZZdd8sADD+QLX/hCpk2bNqKYTzjhhMyfPz/nn39+tt9++9x9990577zzcswxx2TZsmW58sors//+++eBBx7If/zHf+TpT3/6iK6bJEuXLs1//dd/Zfbs2at+ht133/1hc+66664cddRR+dznPpeVazFtv/32mTlzZr785S/niCOOSGst1157bfbee+8R3xtaa1ckuaLb/mmS/YaZc1+SIx45DgAAo+n48y/t6/1/9KMf5aGHHspOO+2Uu+66K4973OMyadKkXH755fnZz3427Dlz587N/Pnzc/PNN+dJT3pS7r333ixZsiRPfvKT13u/97///XnjG9+46kuZM2bMyKc+9amsWLEiP//5z3PVVVclGSrSzZ8/P7fccktmzpyZX//612s8HbahufOmUAwDAKCnli9fnre+9a258847M3HixDzpSU/KmWeemVe+8pXrPfe0007Lq1/96nz0ox/NH//xH2eHHXZYY87rX//63HrrrZk9e3Zaa5k6deqq1orDWblm2Ep/8Rd/kbe97W3Zdtttc/3112efffbJDjvskPPPP3+Nc+fNm5cXv/jF2WWXXdbZJ/3jH/945s+fn2c+85l58MEHc+CBB+aMM85Y6/z//b//d5797Gdn9913z1577TXithBvetObsnz58uy7776ZNGlSJk2alOOPPz6PetSjcuGFF+Ztb3tb7rrrrjz44IN5+9vfvkHFsAceeCDvete7snTp0kyePDlTp05d42f46le/mp/97Gd5wxvesGps8eLF+cIXvpA3velNOemkk/LAAw/kqKOOUgwDAADYTFauGZYMPYF17rnnZsKECfnzP//z/Mmf/EnmzJmzak2x4UydOjXnnHNO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AAAAAAAAOkszDAAAAAAAgM7SDAMAAAAAAKCzNMMAAAAAAADoLM0wAAAAAAAAOmvyoAOsjClTprTp06cPOgYAALCKXH/99fe31qYOOgfdpIYEAIBuGWsNOaGbYdOnT8/cuXMHHQMAAFhFquq/Bp2B7lJDAgBAt4y1hrRNIgAAAAAAAJ2lGQYAAAAAAEBnaYYBAAAAAADQWRP6nmEAAHTT73//+4yMjOTxxx8fdBT6ZO211860adOy5pprDjoKAADQQerKblnZGlIzDACAoTMyMpL11lsv06dPT1UNOg6rWGstDzzwQEZGRjJjxoxBxwEAADpIXdkdq6KGtE0iAABD5/HHH89GG22kYOmoqspGG23kE5oAAEDfqCu7Y1XUkJphAAAMJQVLt/nnCwAA9Ju6oztW9p+lZhgAAAAAAACd5Z5hAAAMvZFZV6/S55t28utX6fMBAAAw3E466aShfj76SzOMvlnVv7TqAr94A4CJY9KkSdlmm23SWsukSZNy5pln5nWve13uvvvu7LXXXpk/f/5Kv8aVV16ZU045Jd/61reedc6ll16aE044Ib/5zW/SWstee+2VU045JQcffHD22muvvO1tb1vpHCti3rx5uffee7PnnnsmSS6++OIsWLAgs2bNGkgemGj88mRZ/kwAgK6pqrzvfe/Lpz71qSTJKaeckkceeWRc/7/n+WrHN77xjXnkkUcyd+7cJMncuXNz3HHH5corr3zBr/WlL30pc+fOzZlnnrlSj/3c5z6XddddNwceeOALfp5nY5tEAABYjnXWWSfz5s3LTTfdlH/6p3/K8ccfP+4Z5s+fn6OPPjpf/epXc+utt2b+/PnZYostxvz4J598sm/Z5s2bl+985ztLzvfee2+NMAAAgKWstdZaufDCC3P//fev0OOfeOKJVZxo+e67775ceuml4/JaY3HkkUeu0kZYYmUYjCur5ZZltRwAE8HDDz+cl770pcuM33333TnggAPym9/8JkmWrB678sorc9JJJ2XKlCmZP39+/vRP/zRf/epXU1X57ne/m2OPPTZTpkzJDjvs8Jyv+8lPfjIf/vCHs9VWWyVJJk+enPe85z1Lrl911VU59dRT84tf/CKf/OQn87a3vS1XXnll/vEf/zGbbLJJ5s2blwULFuTUU0/NF7/4xSTJYYcdlmOPPTZ33313dt999+yyyy659tpr8+pXvzqHHHJITjzxxNx3330555xzsuOOO+a6667Lsccem8ceeyzrrLNOzj777MyYMSP/8A//kMceeyzXXHNNjj/++Dz22GNLPsV38MEHZ/3118/cuXOflg0AAGB1Mnny5BxxxBE57bTT8rGPfexp1/7rv/4r7373u7No0aJMnTo1Z599djbffPMcfPDB2XDDDXPjjTdmhx12yHrrrZe77rorCxcuzG233ZZTTz011157bS699NJsuummueSSS7LmmmvmIx/5SC655JI89thjed3rXpfPf/7zqaox5fzABz6Qj370o9ljjz2eNv7MlV577bVXjjvuuLzxjW/Md7/73XzoQx/Kk08+mSlTpuTyyy9/2mMXLVqUI488Mvfcc0+S5PTTT8/OO++cBx98MO9+97tz5513Zt11183s2bOz7bbbPu2xJ510Ul7ykpfkuOOOe0F/3s/FyjAAAFiOxx57LNttt1222mqrHHbYYTnhhBOWmbPxxhvnsssuyw033JCvf/3ree9737vk2o033pjTTz89CxYsyJ133pn/+I//yOOPP57DDz88l1xySa6++ur84he/eM4Mixtpz2bhwoW55ppr8q1vfetpq7Kuu+66fOxjH8uCBQty/fXX5+yzz84Pf/jDXHvttfnCF76QG2+8MUlyxx135JhjjsnNN9+cn/zkJ/nXf/3XXHPNNTnllFPy8Y9/PEmy1VZb5aqrrsqNN96Yj3zkI/nQhz6UF73oRfnIRz6S/fffP/Pmzcv+++8/5mwAAACrk6OOOirnnHNOHnrooaeNH3300TnwwANz8803553vfOfT6snbbrst3/ve95Zsr/jTn/403/72t3PRRRflXe96V970pjfllltuySPBdu0AACAASURBVDrrrJNvf/vbS57vRz/6UebPn5/HHnvsObfjf6bXvva1WWuttXLFFVeMaf6iRYty+OGH54ILLshNN92Ub3zjG8vMOeaYY/K3f/u3+dGPfpQLLrgghx12WJLkxBNPzPbbb5+bb745H//4x1f5CrBnY2UYAAAsx+JtEpPkBz/4QQ488MBl7hP2+9//PkcffXTmzZuXSZMm5bbbbltybccdd8y0adOSJNttt13uvvvuvOQlL8mMGTOy5ZZbJkne9a53Zfbs2Succd99980aa6yRrbfeOr/85S+f9tozZsxIklxzzTV5y1vekhe/+MVJkre+9a25+uqrs/fee2fGjBnZZpttkiSvfOUrs9tuu6Wqss022+Tuu+9Okjz00EM56KCDcvvtt6eq8vvf/36lsgEAAKxO1l9//Rx44IE544wzss466ywZ/8EPfpALL7wwSXLAAQfkgx/84JJr++23XyZNmrTkfI899siaa66ZbbbZJk8++WR23333JHla7XbFFVfkk5/8ZB599NE8+OCDeeUrX5m//uu/HnPOv//7v89HP/rRfOITn3jeuddee23e8IY3LKk7N9xww2XmfO9738uCBQuWnD/88MP59a9/nWuuuSYXXHBBkmTXXXfNAw88sEyjsB/6tjKsqr5YVfdV1fxnjP+vqvrPqvpxVX1yqfHjq+qO3rW/6lcuAAB4oV772tfm/vvvz6JFi542ftppp+VlL3tZbrrppsydOze/+93vllxba621lhxPmjRpyV7vY92mIhltUF1//fXPen3p12itLTle3Ph65vhzPX6NNdZYcr7GGmssyXvCCSfkTW96U+bPn59LLrkkjz/++JiyP1s2AACA1c2xxx6bs846a8kW+8uzdK24dE2X5Gm12pprrrlk7uLa7fHHH8973vOenH/++bnlllty+OGHj7l2W2zXXXfN448/nmuvvXbJ2OTJk/PUU08tOV/8nK21561tn3rqqfzgBz/IvHnzMm/evPz85z/Peuutt9z68IXUySuqnyvDvpTkzCRfXjxQVW9Ksk+SbVtrv62qjXvjWyd5e5JXJvnDJN+rqj9prfXvjt8AAEwYg77H5E9+8pM8+eST2WijjfLoo48uGX/ooYcybdq0rLHGGpkzZ06efPK5//d1q622yl133ZWf/vSn+eM//uN87Wtfe875H/jAB/LWt741u+yyS/7kT/4kTz31VE4//fS8733vG3P2N7zhDTn44IMza9astNbyzW9+M1/5ylfG/PiHHnoom266aZLR/eIXW2+99fLrX/96zM8DAAAwSCeddNLAXnvDDTfM3/zN3+Sss87Ku9/97iTJ6173upx77rk54IADcs4552SXXXZZ4edf3KSaMmVKHnnkkZx//vkrdN/mD3/4wznyyCOzxRZbJEmmT5+ef/7nf85TTz2Vn//857nuuuuSjH5g9Kijjspdd92VGTNm5MEHH1xmddhf/uVf5swzz8wHPvCBJMm8efOy3Xbb5Q1veEPOOeecnHDCCbnyyiszZcqUrL/++iv8s49V31aGtdauSvLgM4b/Z5KTW2u/7c25rze+T5JzW2u/ba3dleSOJDv2KxsAADyfxfcM22677bL//vtnzpw5T9umIkne8573ZM6cOdlpp51y2223LfPpvWdae+21M3v27Lz5zW/OLrvskj/6oz96zvnbbrttTj/99LzjHe/IK17xirzqVa/KwoULX9DPscMOO+Tggw/OjjvumNe85jU57LDDsv3224/58R/84Adz/PHHZ+edd35as+9Nb3pTFixYkO222y5f//rXX1AmAACA1c373//+3H///UvOzzjjjJx99tnZdttt85WvfCWf/vSnV/i5N9hggxx++OHZZpttsu++++bP/uzPVuh59txzz0ydOnXJ+c4777xke/3jjjsuO+ywQ5Jk6tSpmT17dt761rfm1a9+9XLvI33GGWdk7ty52XbbbbP11lvnc5/7XJLRpuTi8VmzZmXOnDkrlPWFqn5uWVJV05N8q7X2qt75vCQXJdk9yeNJjmut/aiqzkxybWvtq715ZyW5tLV2/nM9/8yZM9vcuXP7lp+VMzLr6kFHYAIY9Cf9ARhOt956a17xilcMOgZ9trx/zlV1fWtt5oAi0XHDVEMO8pPJw8qfCQCwKqkru2dlash+bpP4bK/30iQ7JfmzJOdV1RZJlrch5HK7dFV1RJIjkmTzzTfvU0wAAAAAAAC6YLybYSNJLmyjy9Guq6qnkkzpjW+21LxpSe5d3hO01mYnmZ2Mfqqvv3EBAKD/zj777GW2xNh5553zmc98ZkCJAAAA6JK3vOUtueuuu5429olPfCJ/9Vd/NaBE42u8m2H/lmTXJFdW1Z8keVGS+5NcnORfq+rUJH+YZMsk141zNgAAhkhrLVXL20Cgew455JAccsghg44xrvq5XTsAAECyetWVz+eb3/zmoCOslJWtIddYRTmWUVVfS/KDJC+vqpGqOjTJF5NsUVXzk5yb5KA26sdJzkuyIMl3kxzVWnvy2Z4bAIBuW3vttfPAAw9omHRUay0PPPBA1l577UFHAQAAOkpd2R2roobs28qw1to7nuXSu55l/seSfKxfeQAAmDimTZuWkZGRLFq0aNBR6JO1114706ZNG3QMAACgo9SV3bKyNeR4b5MIAADPa80118yMGTMGHQMAAIAJSl3J0vq2TSIAAAAAAAAMmmYYAAAA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f38eeuihXHjhhVm6dOmI/0aAcTbXVzT3wWyuygYAGLbLL7888+fPz5vf/OaHx/bcc8/cdNNND+/fdNNNOfLII3PPPfckSf72b/82++yzT2677ba8/vWvz1133ZX169fn9NNPzz777JNjjz02q1atSlXlmGOOydvf/vY5rVkYBgAAPXX44YfnT//0T3PQQQfl6quvzjHHHPNwGLbBPvvsk4MPPjgHHXRQDj300CTJC17wgnzoQx/Ky1/+8rzrXe/Ke9/73px66qk5+eST8+1vfzvbbLNN1q5dmyR5//vfn/333z9nnXVW1q5dmxe/+MV5xStekQ9/+MM54YQT8oY3vCH3339/HnzwwaF//wAAAMy9a665Ji960YuecM6OO+6YSy65JAsWLMj111+fI444IqtWrcrf//3f55WvfGX++I//OA8++GDuvfferF69Ot/97ncfXl5xQ785l4RhAADQUy94wQty00035dxzz82BBx44q/esW7cua9euzctf/vIkyVFHHZXDDjvs4c97wxvekEMOOSSHHHJIkuSLX/xiVq5cmQ9+8INJkvvuuy8333xzfu3Xfi3vf//7MzU1lde+9rXuCgMAANiCPPDAA3nLW96S1atXZ+utt85//ud/Jkl+9Vd/Ncccc0weeOCBHHLIIdlzzz2z22675cYbb8xb3/rWvOY1r8lv/MZvzHk9nhkGAAA9dvDBB+f3f//3c8QRRzzpz/r85z+f448/PldccUVe9KIXZf369Wmt5cILL8zq1auzevXq3Hzzzdl9990fXn7xqU99al75ylfmsssum4PvBgAAgFH7xV/8xVxxxRVPOOeUU07JTjvtlK9//etZtWpV7r///iTJy172snz5y1/OokWLcuSRR+bss8/O9ttvn69//evZd99983d/93f5nd/5nTmvWRgGAAA9dswxx+Rd73pXfvmXf/lx5zzjGc/I3XffnSR55jOfme233/7h5RTPOeecvPzlL89DDz2UW265Jfvtt1/+8i//MmvXrs2PfvSjvPKVr8yHPvShtNaSJFdddVWS5MYbb8xuu+2Wt73tbTn44INz9dVXD/g7BQAAYBj233///OQnP8lHPvKRh8e+9rWv5Tvf+c7D++vWrcvOO++crbbaKuecc87DS+d/5zvfyY477pg3velNOfbYY3PllVfm+9//fh566KG87nWvy5/9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\n",
"text/plain": [
"<Figure size 2160x1800 with 10 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# plot histograms of the variables\n",
"\n",
"\n",
"plt.rcParams['figure.figsize']=(30,25)\n",
"\n",
"df.plot(kind='hist', bins=10, subplots=True, layout=(5,2), sharex=False, sharey=False)\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that all the variables in the dataset are positively skewed. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Multivariate plots"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Estimating correlation coefficients\n",
"\n",
"Our dataset is very small. So, we can compute the standard correlation coefficient (also called Pearson's r) between every pair of attributes. We can compute it using the `df.corr()` method as follows:-"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"correlation = df.corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Our target variable is `Class`. So, we should check how each attribute correlates with the `Class` variable. We can do it as follows:-"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Class 1.000000\n",
"Bare_Nuclei 0.822696\n",
"Uniformity_Cell_Shape 0.818934\n",
"Uniformity_Cell_Size 0.817904\n",
"Bland_Chromatin 0.756616\n",
"Clump_thickness 0.716001\n",
"Normal_Nucleoli 0.712244\n",
"Marginal_Adhesion 0.696800\n",
"Single_Epithelial_Cell_Size 0.682785\n",
"Mitoses 0.423170\n",
"Name: Class, dtype: float64"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"correlation['Class'].sort_values(ascending=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Interpretation \n",
"\n",
"- The correlation coefficient ranges from -1 to +1. \n",
"\n",
"- When it is close to +1, this signifies that there is a strong positive correlation. So, we can see that there is a strong positive correlation between `Class` and `Bare_Nuclei`, `Class` and `Uniformity_Cell_Shape`, `Class` and `Uniformity_Cell_Size`.\n",
"\n",
"- When it is clsoe to -1, it means that there is a strong negative correlation. When it is close to 0, it means that there is no correlation. \n",
"\n",
"- We can see that all the variables are positively correlated with `Class` variable. Some variables are strongly positive correlated while some variables are negatively correlated."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Discover patterns and relationships \n",
"\n",
"\n",
"An important step in EDA is to discover patterns and relationships between variables in the dataset. I will use the seaborn heatmap to explore the patterns and relationships in the dataset.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Correlation Heat Map"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x576 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(10,8))\n",
"plt.title('Correlation of Attributes with Class variable')\n",
"a = sns.heatmap(correlation, square=True, annot=True, fmt='.2f', linecolor='white')\n",
"a.set_xticklabels(a.get_xticklabels(), rotation=90)\n",
"a.set_yticklabels(a.get_yticklabels(), rotation=30) \n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Interpretation\n",
"\n",
"\n",
"From the above correlation heat map, we can conclude that :-\n",
"\n",
"1. `Class` is highly positive correlated with `Uniformity_Cell_Size`, `Uniformity_Cell_Shape` and `Bare_Nuclei`. (correlation coefficient = 0.82).\n",
"\n",
"2. `Class` is positively correlated with `Clump_thickness`(correlation coefficient=0.72), `Marginal_Adhesion`(correlation coefficient=0.70), `Single_Epithelial_Cell_Size)`(correlation coefficient = 0.68) and `Normal_Nucleoli`(correlation coefficient=0.71).\n",
"\n",
"3. `Class` is weekly positive correlated with `Mitoses`(correlation coefficient=0.42).\n",
"\n",
"4. The `Mitoses` variable is weekly positive correlated with all the other variables(correlation coefficient < 0.50)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 9. Declare feature vector and target variable"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"X = df.drop(['Class'], axis=1)\n",
"\n",
"y = df['Class']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 10. Split data into separate training and test set"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"# split X and y into training and testing sets\n",
"\n",
"from sklearn.model_selection import train_test_split\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)\n"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((559, 9), (140, 9))"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# check the shape of X_train and X_test\n",
"\n",
"X_train.shape, X_test.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 11. Feature Engineering\n",
"\n",
"\n",
"**Feature Engineering** is the process of transforming raw data into useful features that help us to understand our model better and increase its predictive power. I will carry out feature engineering on different types of variables.\n"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Clump_thickness int64\n",
"Uniformity_Cell_Size int64\n",
"Uniformity_Cell_Shape int64\n",
"Marginal_Adhesion int64\n",
"Single_Epithelial_Cell_Size int64\n",
"Bare_Nuclei float64\n",
"Bland_Chromatin int64\n",
"Normal_Nucleoli int64\n",
"Mitoses int64\n",
"dtype: object"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# check data types in X_train\n",
"\n",
"X_train.dtypes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Engineering missing values in variables\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Clump_thickness 0\n",
"Uniformity_Cell_Size 0\n",
"Uniformity_Cell_Shape 0\n",
"Marginal_Adhesion 0\n",
"Single_Epithelial_Cell_Size 0\n",
"Bare_Nuclei 13\n",
"Bland_Chromatin 0\n",
"Normal_Nucleoli 0\n",
"Mitoses 0\n",
"dtype: int64"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# check missing values in numerical variables in X_train\n",
"\n",
"X_train.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Clump_thickness 0\n",
"Uniformity_Cell_Size 0\n",
"Uniformity_Cell_Shape 0\n",
"Marginal_Adhesion 0\n",
"Single_Epithelial_Cell_Size 0\n",
"Bare_Nuclei 3\n",
"Bland_Chromatin 0\n",
"Normal_Nucleoli 0\n",
"Mitoses 0\n",
"dtype: int64"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# check missing values in numerical variables in X_test\n",
"\n",
"X_test.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Bare_Nuclei 0.0233\n"
]
}
],
"source": [
"# print percentage of missing values in the numerical variables in training set\n",
"\n",
"for col in X_train.columns:\n",
" if X_train[col].isnull().mean()>0:\n",
" print(col, round(X_train[col].isnull().mean(),4))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Assumption\n",
"\n",
"\n",
"I assume that the data are missing completely at random (MCAR). There are two methods which can be used to impute missing values. One is mean or median imputation and other one is random sample imputation. When there are outliers in the dataset, we should use median imputation. So, I will use median imputation because median imputation is robust to outliers.\n",
"\n",
"\n",
"I will impute missing values with the appropriate statistical measures of the data, in this case median. Imputation should be done over the training set, and then propagated to the test set. It means that the statistical measures to be used to fill missing values both in train and test set, should be extracted from the train set only. This is to avoid overfitting."
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"# impute missing values in X_train and X_test with respective column median in X_train\n",
"\n",
"for df1 in [X_train, X_test]:\n",
" for col in X_train.columns:\n",
" col_median=X_train[col].median()\n",
" df1[col].fillna(col_median, inplace=True) \n",
" "
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Clump_thickness 0\n",
"Uniformity_Cell_Size 0\n",
"Uniformity_Cell_Shape 0\n",
"Marginal_Adhesion 0\n",
"Single_Epithelial_Cell_Size 0\n",
"Bare_Nuclei 0\n",
"Bland_Chromatin 0\n",
"Normal_Nucleoli 0\n",
"Mitoses 0\n",
"dtype: int64"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# check again missing values in numerical variables in X_train\n",
"\n",
"X_train.isnull().sum()"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Clump_thickness 0\n",
"Uniformity_Cell_Size 0\n",
"Uniformity_Cell_Shape 0\n",
"Marginal_Adhesion 0\n",
"Single_Epithelial_Cell_Size 0\n",
"Bare_Nuclei 0\n",
"Bland_Chromatin 0\n",
"Normal_Nucleoli 0\n",
"Mitoses 0\n",
"dtype: int64"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# check missing values in numerical variables in X_test\n",
"\n",
"X_test.isnull().sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that there are no missing values in X_train and X_test."
]
},
{
"cell_type": "code",
"execution_count": 35,
"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>Clump_thickness</th>\n",
" <th>Uniformity_Cell_Size</th>\n",
" <th>Uniformity_Cell_Shape</th>\n",
" <th>Marginal_Adhesion</th>\n",
" <th>Single_Epithelial_Cell_Size</th>\n",
" <th>Bare_Nuclei</th>\n",
" <th>Bland_Chromatin</th>\n",
" <th>Normal_Nucleoli</th>\n",
" <th>Mitoses</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>293</th>\n",
" <td>10</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>6</td>\n",
" <td>2</td>\n",
" <td>10.0</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62</th>\n",
" <td>9</td>\n",
" <td>10</td>\n",
" <td>10</td>\n",
" <td>1</td>\n",
" <td>10</td>\n",
" <td>8.0</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>485</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>3.0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>422</th>\n",
" <td>4</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1.0</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>332</th>\n",
" <td>5</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>1.0</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Clump_thickness Uniformity_Cell_Size Uniformity_Cell_Shape \\\n",
"293 10 4 4 \n",
"62 9 10 10 \n",
"485 1 1 1 \n",
"422 4 3 3 \n",
"332 5 2 2 \n",
"\n",
" Marginal_Adhesion Single_Epithelial_Cell_Size Bare_Nuclei \\\n",
"293 6 2 10.0 \n",
"62 1 10 8.0 \n",
"485 3 1 3.0 \n",
"422 1 2 1.0 \n",
"332 2 2 1.0 \n",
"\n",
" Bland_Chromatin Normal_Nucleoli Mitoses \n",
"293 2 3 1 \n",
"62 3 3 1 \n",
"485 1 1 1 \n",
"422 3 3 1 \n",
"332 2 2 1 "
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train.head()"
]
},
{
"cell_type": "code",
"execution_count": 36,
"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>Clump_thickness</th>\n",
" <th>Uniformity_Cell_Size</th>\n",
" <th>Uniformity_Cell_Shape</th>\n",
" <th>Marginal_Adhesion</th>\n",
" <th>Single_Epithelial_Cell_Size</th>\n",
" <th>Bare_Nuclei</th>\n",
" <th>Bland_Chromatin</th>\n",
" <th>Normal_Nucleoli</th>\n",
" <th>Mitoses</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>476</th>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1.0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>531</th>\n",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1.0</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>6</td>\n",
" <td>9</td>\n",
" <td>6</td>\n",
" <td>1.0</td>\n",
" <td>7</td>\n",
" <td>8</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>432</th>\n",
" <td>5</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1.0</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>8</td>\n",
" <td>7</td>\n",
" <td>5</td>\n",
" <td>10</td>\n",
" <td>7</td>\n",
" <td>9.0</td>\n",
" <td>5</td>\n",
" <td>5</td>\n",
" <td>4</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Clump_thickness Uniformity_Cell_Size Uniformity_Cell_Shape \\\n",
"476 4 1 2 \n",
"531 4 2 2 \n",
"40 6 6 6 \n",
"432 5 1 1 \n",
"14 8 7 5 \n",
"\n",
" Marginal_Adhesion Single_Epithelial_Cell_Size Bare_Nuclei \\\n",
"476 1 2 1.0 \n",
"531 1 2 1.0 \n",
"40 9 6 1.0 \n",
"432 1 2 1.0 \n",
"14 10 7 9.0 \n",
"\n",
" Bland_Chromatin Normal_Nucleoli Mitoses \n",
"476 1 1 1 \n",
"531 2 1 1 \n",
"40 7 8 1 \n",
"432 2 2 1 \n",
"14 5 5 4 "
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_test.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We now have training and testing set ready for model building. Before that, we should map all the feature variables onto the same scale. It is called `feature scaling`. I will do it as follows."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 12. Feature Scaling"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [],
"source": [
"cols = X_train.columns"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.preprocessing import StandardScaler\n",
"\n",
"scaler = StandardScaler()\n",
"\n",
"X_train = scaler.fit_transform(X_train)\n",
"\n",
"X_test = scaler.transform(X_test)\n"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"X_train = pd.DataFrame(X_train, columns=[cols])"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [],
"source": [
"X_test = pd.DataFrame(X_test, columns=[cols])"
]
},
{
"cell_type": "code",
"execution_count": 41,
"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 tr th {\n",
" text-align: left;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr>\n",
" <th></th>\n",
" <th>Clump_thickness</th>\n",
" <th>Uniformity_Cell_Size</th>\n",
" <th>Uniformity_Cell_Shape</th>\n",
" <th>Marginal_Adhesion</th>\n",
" <th>Single_Epithelial_Cell_Size</th>\n",
" <th>Bare_Nuclei</th>\n",
" <th>Bland_Chromatin</th>\n",
" <th>Normal_Nucleoli</th>\n",
" <th>Mitoses</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2.028383</td>\n",
" <td>0.299506</td>\n",
" <td>0.289573</td>\n",
" <td>1.119077</td>\n",
" <td>-0.546543</td>\n",
" <td>1.858357</td>\n",
" <td>-0.577774</td>\n",
" <td>0.041241</td>\n",
" <td>-0.324258</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1.669451</td>\n",
" <td>2.257680</td>\n",
" <td>2.304569</td>\n",
" <td>-0.622471</td>\n",
" <td>3.106879</td>\n",
" <td>1.297589</td>\n",
" <td>-0.159953</td>\n",
" <td>0.041241</td>\n",
" <td>-0.324258</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>-1.202005</td>\n",
" <td>-0.679581</td>\n",
" <td>-0.717925</td>\n",
" <td>0.074148</td>\n",
" <td>-1.003220</td>\n",
" <td>-0.104329</td>\n",
" <td>-0.995595</td>\n",
" <td>-0.608165</td>\n",
" <td>-0.324258</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>-0.125209</td>\n",
" <td>-0.026856</td>\n",
" <td>-0.046260</td>\n",
" <td>-0.622471</td>\n",
" <td>-0.546543</td>\n",
" <td>-0.665096</td>\n",
" <td>-0.159953</td>\n",
" <td>0.041241</td>\n",
" <td>-0.324258</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.233723</td>\n",
" <td>-0.353219</td>\n",
" <td>-0.382092</td>\n",
" <td>-0.274161</td>\n",
" <td>-0.546543</td>\n",
" <td>-0.665096</td>\n",
" <td>-0.577774</td>\n",
" <td>-0.283462</td>\n",
" <td>-0.324258</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Clump_thickness Uniformity_Cell_Size Uniformity_Cell_Shape \\\n",
"0 2.028383 0.299506 0.289573 \n",
"1 1.669451 2.257680 2.304569 \n",
"2 -1.202005 -0.679581 -0.717925 \n",
"3 -0.125209 -0.026856 -0.046260 \n",
"4 0.233723 -0.353219 -0.382092 \n",
"\n",
" Marginal_Adhesion Single_Epithelial_Cell_Size Bare_Nuclei Bland_Chromatin \\\n",
"0 1.119077 -0.546543 1.858357 -0.577774 \n",
"1 -0.622471 3.106879 1.297589 -0.159953 \n",
"2 0.074148 -1.003220 -0.104329 -0.995595 \n",
"3 -0.622471 -0.546543 -0.665096 -0.159953 \n",
"4 -0.274161 -0.546543 -0.665096 -0.577774 \n",
"\n",
" Normal_Nucleoli Mitoses \n",
"0 0.041241 -0.324258 \n",
"1 0.041241 -0.324258 \n",
"2 -0.608165 -0.324258 \n",
"3 0.041241 -0.324258 \n",
"4 -0.283462 -0.324258 "
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We now have `X_train` dataset ready to be fed into the Logistic Regression classifier. I will do it as follows."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 13. Fit K Neighbours Classifier to the Training Set"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
" metric_params=None, n_jobs=None, n_neighbors=3, p=2,\n",
" weights='uniform')"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# import KNeighbors ClaSSifier from sklearn\n",
"from sklearn.neighbors import KNeighborsClassifier\n",
"\n",
"\n",
"# instantiate the model\n",
"knn = KNeighborsClassifier(n_neighbors=3)\n",
"\n",
"\n",
"# fit the model to the training set\n",
"knn.fit(X_train, y_train)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 14. Predict the test-set results"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([2, 2, 4, 2, 4, 2, 4, 2, 4, 2, 2, 2, 4, 4, 4, 2, 2, 4, 4, 2, 4, 4,\n",
" 2, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2,\n",
" 4, 4, 2, 4, 2, 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, 2, 4, 2, 2, 4, 4, 4,\n",
" 4, 2, 2, 4, 2, 2, 4, 4, 2, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2,\n",
" 4, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 4, 4, 2, 2, 2, 4, 2, 2, 2, 2, 2,\n",
" 4, 4, 4, 2, 2, 2, 2, 2, 4, 4, 4, 4, 2, 4, 2, 2, 4, 4, 4, 4, 4, 2,\n",
" 2, 4, 4, 2, 2, 4, 2, 2], dtype=int64)"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_pred = knn.predict(X_test)\n",
"\n",
"y_pred"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### predict_proba method\n",
"\n",
"\n",
"**predict_proba** method gives the probabilities for the target variable(2 and 4) in this case, in array form.\n",
"\n",
"`2 is for probability of benign cancer` and `4 is for probability of malignant cancer.`"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1. , 1. , 0.33333333, 1. , 0. ,\n",
" 1. , 0. , 1. , 0. , 0.66666667,\n",
" 1. , 1. , 0. , 0.33333333, 0. ,\n",
" 1. , 1. , 0. , 0. , 1. ,\n",
" 0. , 0. , 1. , 1. , 1. ,\n",
" 0. , 1. , 1. , 0. , 0. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 0.66666667, 1. , 0. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 0. ,\n",
" 0. , 1. , 0. , 1. , 0. ,\n",
" 0. , 1. , 1. , 0. , 1. ,\n",
" 1. , 1. , 1. , 0.66666667, 1. ,\n",
" 0. , 1. , 1. , 0. , 0. ,\n",
" 0.33333333, 0. , 1. , 1. , 0. ,\n",
" 1. , 1. , 0. , 0. , 1. ,\n",
" 1. , 1. , 1. , 0. , 1. ,\n",
" 1. , 1. , 0. , 1. , 1. ,\n",
" 1. , 0. , 1. , 0. , 0. ,\n",
" 1. , 1. , 0.66666667, 0. , 1. ,\n",
" 1. , 1. , 0. , 1. , 0. ,\n",
" 0. , 1. , 1. , 1. , 0. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 0. , 0.33333333, 0. , 1. , 1. ,\n",
" 1. , 1. , 1. , 0. , 0. ,\n",
" 0. , 0.33333333, 1. , 0. , 1. ,\n",
" 1. , 0.33333333, 0.33333333, 0. , 0. ,\n",
" 0. , 1. , 1. , 0.33333333, 0. ,\n",
" 1. , 1. , 0. , 1. , 1. ])"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# probability of getting output as 2 - benign cancer\n",
"\n",
"knn.predict_proba(X_test)[:,0]"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0. , 0. , 0.66666667, 0. , 1. ,\n",
" 0. , 1. , 0. , 1. , 0.33333333,\n",
" 0. , 0. , 1. , 0.66666667, 1. ,\n",
" 0. , 0. , 1. , 1. , 0. ,\n",
" 1. , 1. , 0. , 0. , 0. ,\n",
" 1. , 0. , 0. , 1. , 1. ,\n",
" 0. , 0. , 0. , 0. , 0. ,\n",
" 0.33333333, 0. , 1. , 0. , 0. ,\n",
" 0. , 0. , 0. , 0. , 1. ,\n",
" 1. , 0. , 1. , 0. , 1. ,\n",
" 1. , 0. , 0. , 1. , 0. ,\n",
" 0. , 0. , 0. , 0.33333333, 0. ,\n",
" 1. , 0. , 0. , 1. , 1. ,\n",
" 0.66666667, 1. , 0. , 0. , 1. ,\n",
" 0. , 0. , 1. , 1. , 0. ,\n",
" 0. , 0. , 0. , 1. , 0. ,\n",
" 0. , 0. , 1. , 0. , 0. ,\n",
" 0. , 1. , 0. , 1. , 1. ,\n",
" 0. , 0. , 0.33333333, 1. , 0. ,\n",
" 0. , 0. , 1. , 0. , 1. ,\n",
" 1. , 0. , 0. , 0. , 1. ,\n",
" 0. , 0. , 0. , 0. , 0. ,\n",
" 1. , 0.66666667, 1. , 0. , 0. ,\n",
" 0. , 0. , 0. , 1. , 1. ,\n",
" 1. , 0.66666667, 0. , 1. , 0. ,\n",
" 0. , 0.66666667, 0.66666667, 1. , 1. ,\n",
" 1. , 0. , 0. , 0.66666667, 1. ,\n",
" 0. , 0. , 1. , 0. , 0. ])"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# probability of getting output as 4 - malignant cancer\n",
"\n",
"knn.predict_proba(X_test)[:,1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 15. Check the accuracy score"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model accuracy score: 0.9714\n"
]
}
],
"source": [
"from sklearn.metrics import accuracy_score\n",
"\n",
"print('Model accuracy score: {0:0.4f}'. format(accuracy_score(y_test, y_pred)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here, **y_test** are the true class labels and **y_pred** are the predicted class labels in the test-set."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Compare the train-set and test-set accuracy\n",
"\n",
"\n",
"Now, I will compare the train-set and test-set accuracy to check for overfitting."
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [],
"source": [
"y_pred_train = knn.predict(X_train)"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training-set accuracy score: 0.9821\n"
]
}
],
"source": [
"print('Training-set accuracy score: {0:0.4f}'. format(accuracy_score(y_train, y_pred_train)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Check for overfitting and underfitting"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Training set score: 0.9821\n",
"Test set score: 0.9714\n"
]
}
],
"source": [
"# print the scores on training and test set\n",
"\n",
"print('Training set score: {:.4f}'.format(knn.score(X_train, y_train)))\n",
"\n",
"print('Test set score: {:.4f}'.format(knn.score(X_test, y_test)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The training-set accuracy score is 0.9821 while the test-set accuracy to be 0.9714. These two values are quite comparable. So, there is no question of overfitting. \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Compare model accuracy with null accuracy\n",
"\n",
"\n",
"So, the model accuracy is 0.9714. But, we cannot say that our model is very good based on the above accuracy. We must compare it with the **null accuracy**. Null accuracy is the accuracy that could be achieved by always predicting the most frequent class.\n",
"\n",
"So, we should first check the class distribution in the test set. "
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2 85\n",
"4 55\n",
"Name: Class, dtype: int64"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# check class distribution in test set\n",
"\n",
"y_test.value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that the occurences of most frequent class is 85. So, we can calculate null accuracy by dividing 85 by total number of occurences."
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Null accuracy score: 0.6071\n"
]
}
],
"source": [
"# check null accuracy score\n",
"\n",
"null_accuracy = (85/(85+55))\n",
"\n",
"print('Null accuracy score: {0:0.4f}'. format(null_accuracy))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that our model accuracy score is 0.9714 but null accuracy score is 0.6071. So, we can conclude that our K Nearest Neighbors model is doing a very good job in predicting the class labels."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 16. Rebuild kNN Classification model using different values of k\n",
"\n",
"\n",
"I have build the kNN classification model using k=3. Now, I will increase the value of k and see its effect on accuracy."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Rebuild kNN Classification model using k=5"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model accuracy score with k=5 : 0.9714\n"
]
}
],
"source": [
"# instantiate the model with k=5\n",
"knn_5 = KNeighborsClassifier(n_neighbors=5)\n",
"\n",
"\n",
"# fit the model to the training set\n",
"knn_5.fit(X_train, y_train)\n",
"\n",
"\n",
"# predict on the test-set\n",
"y_pred_5 = knn_5.predict(X_test)\n",
"\n",
"\n",
"print('Model accuracy score with k=5 : {0:0.4f}'. format(accuracy_score(y_test, y_pred_5)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Rebuild kNN Classification model using k=6"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model accuracy score with k=6 : 0.9786\n"
]
}
],
"source": [
"# instantiate the model with k=6\n",
"knn_6 = KNeighborsClassifier(n_neighbors=6)\n",
"\n",
"\n",
"# fit the model to the training set\n",
"knn_6.fit(X_train, y_train)\n",
"\n",
"\n",
"# predict on the test-set\n",
"y_pred_6 = knn_6.predict(X_test)\n",
"\n",
"\n",
"print('Model accuracy score with k=6 : {0:0.4f}'. format(accuracy_score(y_test, y_pred_6)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Rebuild kNN Classification model using k=7"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model accuracy score with k=7 : 0.9786\n"
]
}
],
"source": [
"# instantiate the model with k=7\n",
"knn_7 = KNeighborsClassifier(n_neighbors=7)\n",
"\n",
"\n",
"# fit the model to the training set\n",
"knn_7.fit(X_train, y_train)\n",
"\n",
"\n",
"# predict on the test-set\n",
"y_pred_7 = knn_7.predict(X_test)\n",
"\n",
"\n",
"print('Model accuracy score with k=7 : {0:0.4f}'. format(accuracy_score(y_test, y_pred_7)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Rebuild kNN Classification model using k=8"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model accuracy score with k=8 : 0.9786\n"
]
}
],
"source": [
"# instantiate the model with k=8\n",
"knn_8 = KNeighborsClassifier(n_neighbors=8)\n",
"\n",
"\n",
"# fit the model to the training set\n",
"knn_8.fit(X_train, y_train)\n",
"\n",
"\n",
"# predict on the test-set\n",
"y_pred_8 = knn_8.predict(X_test)\n",
"\n",
"\n",
"print('Model accuracy score with k=8 : {0:0.4f}'. format(accuracy_score(y_test, y_pred_8)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Rebuild kNN Classification model using k=9"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model accuracy score with k=9 : 0.9714\n"
]
}
],
"source": [
"# instantiate the model with k=9\n",
"knn_9 = KNeighborsClassifier(n_neighbors=9)\n",
"\n",
"\n",
"# fit the model to the training set\n",
"knn_9.fit(X_train, y_train)\n",
"\n",
"\n",
"# predict on the test-set\n",
"y_pred_9 = knn_9.predict(X_test)\n",
"\n",
"\n",
"print('Model accuracy score with k=9 : {0:0.4f}'. format(accuracy_score(y_test, y_pred_9)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Interpretation\n",
"\n",
"\n",
"Our original model accuracy score with k=3 is 0.9714. Now, we can see that we get same accuracy score of 0.9714 with k=5. But, if we increase the value of k further, this would result in enhanced accuracy.\n",
"\n",
"\n",
"With k=6,7,8 we get accuracy score of 0.9786. So, it results in performance improvement.\n",
"\n",
"\n",
"If we increase k to 9, then accuracy decreases again to 0.9714."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, based on the above analysis we can conclude that our classification model accuracy is very good. Our model is doing a very good job in terms of predicting the class labels.\n",
"\n",
"\n",
"But, it does not give the underlying distribution of values. Also, it does not tell anything about the type of errors our classifer is making. \n",
"\n",
"\n",
"We have another tool called `Confusion matrix` that comes to our rescue."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 17. Confusion matrix\n",
"\n",
"\n",
"A confusion matrix is a tool for summarizing the performance of a classification algorithm. A confusion matrix will give us a clear picture of classification model performance and the types of errors produced by the model. It gives us a summary of correct and incorrect predictions broken down by each category. The summary is represented in a tabular form.\n",
"\n",
"\n",
"Four types of outcomes are possible while evaluating a classification model performance. These four outcomes are described below:-\n",
"\n",
"\n",
"**True Positives (TP)** – True Positives occur when we predict an observation belongs to a certain class and the observation actually belongs to that class.\n",
"\n",
"\n",
"**True Negatives (TN)** – True Negatives occur when we predict an observation does not belong to a certain class and the observation actually does not belong to that class.\n",
"\n",
"\n",
"**False Positives (FP)** – False Positives occur when we predict an observation belongs to a certain class but the observation actually does not belong to that class. This type of error is called **Type I error.**\n",
"\n",
"\n",
"\n",
"**False Negatives (FN)** – False Negatives occur when we predict an observation does not belong to a certain class but the observation actually belongs to that class. This is a very serious error and it is called **Type II error.**\n",
"\n",
"\n",
"\n",
"These four outcomes are summarized in a confusion matrix given below.\n"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Confusion matrix\n",
"\n",
" [[83 2]\n",
" [ 2 53]]\n",
"\n",
"True Positives(TP) = 83\n",
"\n",
"True Negatives(TN) = 53\n",
"\n",
"False Positives(FP) = 2\n",
"\n",
"False Negatives(FN) = 2\n"
]
}
],
"source": [
"# Print the Confusion Matrix with k =3 and slice it into four pieces\n",
"\n",
"from sklearn.metrics import confusion_matrix\n",
"\n",
"cm = confusion_matrix(y_test, y_pred)\n",
"\n",
"print('Confusion matrix\\n\\n', cm)\n",
"\n",
"print('\\nTrue Positives(TP) = ', cm[0,0])\n",
"\n",
"print('\\nTrue Negatives(TN) = ', cm[1,1])\n",
"\n",
"print('\\nFalse Positives(FP) = ', cm[0,1])\n",
"\n",
"print('\\nFalse Negatives(FN) = ', cm[1,0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The confusion matrix shows `83 + 53 = 136 correct predictions` and `2 + 2 = 4 incorrect predictions`.\n",
"\n",
"\n",
"In this case, we have\n",
"\n",
"\n",
"- `True Positives` (Actual Positive:1 and Predict Positive:1) - 83\n",
"\n",
"\n",
"- `True Negatives` (Actual Negative:0 and Predict Negative:0) - 53\n",
"\n",
"\n",
"- `False Positives` (Actual Negative:0 but Predict Positive:1) - 2 `(Type I error)`\n",
"\n",
"\n",
"- `False Negatives` (Actual Positive:1 but Predict Negative:0) - 2 `(Type II error)`"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Confusion matrix\n",
"\n",
" [[83 2]\n",
" [ 1 54]]\n",
"\n",
"True Positives(TP) = 83\n",
"\n",
"True Negatives(TN) = 54\n",
"\n",
"False Positives(FP) = 2\n",
"\n",
"False Negatives(FN) = 1\n"
]
}
],
"source": [
"# Print the Confusion Matrix with k =7 and slice it into four pieces\n",
"\n",
"cm_7 = confusion_matrix(y_test, y_pred_7)\n",
"\n",
"print('Confusion matrix\\n\\n', cm_7)\n",
"\n",
"print('\\nTrue Positives(TP) = ', cm_7[0,0])\n",
"\n",
"print('\\nTrue Negatives(TN) = ', cm_7[1,1])\n",
"\n",
"print('\\nFalse Positives(FP) = ', cm_7[0,1])\n",
"\n",
"print('\\nFalse Negatives(FN) = ', cm_7[1,0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The above confusion matrix shows `83 + 54 = 137 correct predictions` and `2 + 1 = 4 incorrect predictions`.\n",
"\n",
"\n",
"In this case, we have\n",
"\n",
"\n",
"- `True Positives` (Actual Positive:1 and Predict Positive:1) - 83\n",
"\n",
"\n",
"- `True Negatives` (Actual Negative:0 and Predict Negative:0) - 54\n",
"\n",
"\n",
"- `False Positives` (Actual Negative:0 but Predict Positive:1) - 2 `(Type I error)`\n",
"\n",
"\n",
"- `False Negatives` (Actual Positive:1 but Predict Negative:0) - 1 `(Type II error)`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Comment\n",
"\n",
"\n",
"So, kNN Classification model with k=7 shows more accurate predictions and less number of errors than k=3 model. Hence, we got performance improvement with k=7."
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x800e752f60>"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# visualize confusion matrix with seaborn heatmap\n",
"\n",
"plt.figure(figsize=(6,4))\n",
"\n",
"cm_matrix = pd.DataFrame(data=cm_7, columns=['Actual Positive:1', 'Actual Negative:0'], \n",
" index=['Predict Positive:1', 'Predict Negative:0'])\n",
"\n",
"sns.heatmap(cm_matrix, annot=True, fmt='d', cmap='YlGnBu')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 18. Classification metrices"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Classification Report\n",
"\n",
"\n",
"**Classification report** is another way to evaluate the classification model performance. It displays the **precision**, **recall**, **f1** and **support** scores for the model. I have described these terms in later.\n",
"\n",
"We can print a classification report as follows:-"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1-score support\n",
"\n",
" 2 0.99 0.98 0.98 85\n",
" 4 0.96 0.98 0.97 55\n",
"\n",
" micro avg 0.98 0.98 0.98 140\n",
" macro avg 0.98 0.98 0.98 140\n",
"weighted avg 0.98 0.98 0.98 140\n",
"\n"
]
}
],
"source": [
"from sklearn.metrics import classification_report\n",
"\n",
"print(classification_report(y_test, y_pred_7))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Classification accuracy"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [],
"source": [
"TP = cm_7[0,0]\n",
"TN = cm_7[1,1]\n",
"FP = cm_7[0,1]\n",
"FN = cm_7[1,0]"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Classification accuracy : 0.9786\n"
]
}
],
"source": [
"# print classification accuracy\n",
"\n",
"classification_accuracy = (TP + TN) / float(TP + TN + FP + FN)\n",
"\n",
"print('Classification accuracy : {0:0.4f}'.format(classification_accuracy))\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Classification error"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Classification error : 0.0214\n"
]
}
],
"source": [
"# print classification error\n",
"\n",
"classification_error = (FP + FN) / float(TP + TN + FP + FN)\n",
"\n",
"print('Classification error : {0:0.4f}'.format(classification_error))\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Precision\n",
"\n",
"\n",
"**Precision** can be defined as the percentage of correctly predicted positive outcomes out of all the predicted positive outcomes. It can be given as the ratio of true positives (TP) to the sum of true and false positives (TP + FP). \n",
"\n",
"\n",
"So, **Precision** identifies the proportion of correctly predicted positive outcome. It is more concerned with the positive class than the negative class.\n",
"\n",
"\n",
"\n",
"Mathematically, `precision` can be defined as the ratio of `TP to (TP + FP)`.\n"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Precision : 0.9765\n"
]
}
],
"source": [
"# print precision score\n",
"\n",
"precision = TP / float(TP + FP)\n",
"\n",
"\n",
"print('Precision : {0:0.4f}'.format(precision))\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Recall\n",
"\n",
"\n",
"Recall can be defined as the percentage of correctly predicted positive outcomes out of all the actual positive outcomes.\n",
"It can be given as the ratio of true positives (TP) to the sum of true positives and false negatives (TP + FN). **Recall** is also called **Sensitivity**.\n",
"\n",
"\n",
"**Recall** identifies the proportion of correctly predicted actual positives.\n",
"\n",
"\n",
"Mathematically, `recall` can be given as the ratio of `TP to (TP + FN)`.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Recall or Sensitivity : 0.9881\n"
]
}
],
"source": [
"recall = TP / float(TP + FN)\n",
"\n",
"print('Recall or Sensitivity : {0:0.4f}'.format(recall))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### True Positive Rate\n",
"\n",
"\n",
"**True Positive Rate** is synonymous with **Recall**.\n"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"True Positive Rate : 0.9881\n"
]
}
],
"source": [
"true_positive_rate = TP / float(TP + FN)\n",
"\n",
"\n",
"print('True Positive Rate : {0:0.4f}'.format(true_positive_rate))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### False Positive Rate"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"False Positive Rate : 0.0357\n"
]
}
],
"source": [
"false_positive_rate = FP / float(FP + TN)\n",
"\n",
"\n",
"print('False Positive Rate : {0:0.4f}'.format(false_positive_rate))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Specificity"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Specificity : 0.9643\n"
]
}
],
"source": [
"specificity = TN / (TN + FP)\n",
"\n",
"print('Specificity : {0:0.4f}'.format(specificity))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### f1-score\n",
"\n",
"\n",
"**f1-score** is the weighted harmonic mean of precision and recall. The best possible **f1-score** would be 1.0 and the worst \n",
"would be 0.0. **f1-score** is the harmonic mean of precision and recall. So, **f1-score** is always lower than accuracy measures as they embed precision and recall into their computation. The weighted average of `f1-score` should be used to \n",
"compare classifier models, not global accuracy.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Support\n",
"\n",
"\n",
"**Support** is the actual number of occurrences of the class in our dataset."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Adjusting the classification threshold level"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1. , 0. ],\n",
" [1. , 0. ],\n",
" [0.33333333, 0.66666667],\n",
" [1. , 0. ],\n",
" [0. , 1. ],\n",
" [1. , 0. ],\n",
" [0. , 1. ],\n",
" [1. , 0. ],\n",
" [0. , 1. ],\n",
" [0.66666667, 0.33333333]])"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# print the first 10 predicted probabilities of two classes- 2 and 4\n",
"\n",
"y_pred_prob = knn.predict_proba(X_test)[0:10]\n",
"\n",
"y_pred_prob"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Observations\n",
"\n",
"\n",
"- In each row, the numbers sum to 1.\n",
"\n",
"\n",
"- There are 2 columns which correspond to 2 classes - 2 and 4. \n",
"\n",
"\n",
" - Class 2 - predicted probability that there is benign cancer. \n",
" \n",
" - Class 4 - predicted probability that there is malignant cancer.\n",
" \n",
" \n",
"- Importance of predicted probabilities\n",
"\n",
" - We can rank the observations by probability of benign or malignant cancer.\n",
"\n",
"\n",
"- predict_proba process\n",
"\n",
" - Predicts the probabilities \n",
" \n",
" - Choose the class with the highest probability \n",
" \n",
" \n",
"- Classification threshold level\n",
"\n",
" - There is a classification threshold level of 0.5. \n",
" \n",
" - Class 4 - probability of malignant cancer is predicted if probability > 0.5. \n",
" \n",
" - Class 2 - probability of benign cancer is predicted if probability < 0.5. \n",
" \n"
]
},
{
"cell_type": "code",
"execution_count": 70,
"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>Prob of - benign cancer (2)</th>\n",
" <th>Prob of - malignant cancer (4)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.333333</td>\n",
" <td>0.666667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>1.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>0.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>1.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>0.000000</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>0.666667</td>\n",
" <td>0.333333</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Prob of - benign cancer (2) Prob of - malignant cancer (4)\n",
"0 1.000000 0.000000\n",
"1 1.000000 0.000000\n",
"2 0.333333 0.666667\n",
"3 1.000000 0.000000\n",
"4 0.000000 1.000000\n",
"5 1.000000 0.000000\n",
"6 0.000000 1.000000\n",
"7 1.000000 0.000000\n",
"8 0.000000 1.000000\n",
"9 0.666667 0.333333"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# store the probabilities in dataframe\n",
"\n",
"y_pred_prob_df = pd.DataFrame(data=y_pred_prob, columns=['Prob of - benign cancer (2)', 'Prob of - malignant cancer (4)'])\n",
"\n",
"y_pred_prob_df"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0. , 0. , 0.66666667, 0. , 1. ,\n",
" 0. , 1. , 0. , 1. , 0.33333333])"
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# print the first 10 predicted probabilities for class 4 - Probability of malignant cancer\n",
"\n",
"knn.predict_proba(X_test)[0:10, 1]"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [],
"source": [
"# store the predicted probabilities for class 4 - Probability of malignant cancer\n",
"\n",
"y_pred_1 = knn.predict_proba(X_test)[:, 1]"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0,0.5,'Frequency')"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
},
{
"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": [
"# plot histogram of predicted probabilities\n",
"\n",
"\n",
"# adjust figure size\n",
"plt.figure(figsize=(6,4))\n",
"\n",
"\n",
"# adjust the font size \n",
"plt.rcParams['font.size'] = 12\n",
"\n",
"\n",
"# plot histogram with 10 bins\n",
"plt.hist(y_pred_1, bins = 10)\n",
"\n",
"\n",
"# set the title of predicted probabilities\n",
"plt.title('Histogram of predicted probabilities of malignant cancer')\n",
"\n",
"\n",
"# set the x-axis limit\n",
"plt.xlim(0,1)\n",
"\n",
"\n",
"# set the title\n",
"plt.xlabel('Predicted probabilities of malignant cancer')\n",
"plt.ylabel('Frequency')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Observations\n",
"\n",
"\n",
"- We can see that the above histogram is positively skewed.\n",
"\n",
"\n",
"- The first column tell us that there are approximately 80 observations with 0 probability of malignant cancer.\n",
"\n",
"\n",
"- There are few observations with probability > 0.5.\n",
"\n",
"\n",
"- So, these few observations predict that there will be malignant cancer.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Comments\n",
"\n",
"\n",
"- In binary problems, the threshold of 0.5 is used by default to convert predicted probabilities into class predictions.\n",
"\n",
"\n",
"- Threshold can be adjusted to increase sensitivity or specificity. \n",
"\n",
"\n",
"- Sensitivity and specificity have an inverse relationship. Increasing one would always decrease the other and vice versa.\n",
"\n",
"\n",
"- Adjusting the threshold level should be one of the last step you do in the model-building process."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 19. ROC - AUC\n",
"\n",
"\n",
"\n",
"### ROC Curve\n",
"\n",
"\n",
"Another tool to measure the classification model performance visually is **ROC Curve**. ROC Curve stands for **Receiver Operating Characteristic Curve**. An **ROC Curve** is a plot which shows the performance of a classification model at various \n",
"classification threshold levels. \n",
"\n",
"\n",
"\n",
"The **ROC Curve** plots the **True Positive Rate (TPR)** against the **False Positive Rate (FPR)** at various threshold levels.\n",
"\n",
"\n",
"\n",
"\n",
"**True Positive Rate (TPR)** is also called **Recall**. It is defined as the ratio of **TP to (TP + FN)**.\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"**False Positive Rate (FPR)** is defined as the ratio of **FP to (FP + TN)**.\n",
"\n",
"\n",
"\n",
"\n",
"In the ROC Curve, we will focus on the TPR (True Positive Rate) and FPR (False Positive Rate) of a single point. This will give us the general performance of the ROC curve which consists of the TPR and FPR at various threshold levels. So, an ROC Curve plots TPR vs FPR at different classification threshold levels. If we lower the threshold levels, it may result in more items being classified as positve. It will increase both True Positives (TP) and False Positives (FP).\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 74,
"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": [
"# plot ROC Curve\n",
"\n",
"from sklearn.metrics import roc_curve\n",
"\n",
"fpr, tpr, thresholds = roc_curve(y_test, y_pred_1, pos_label=4)\n",
"\n",
"plt.figure(figsize=(6,4))\n",
"\n",
"plt.plot(fpr, tpr, linewidth=2)\n",
"\n",
"plt.plot([0,1], [0,1], 'k--' )\n",
"\n",
"plt.rcParams['font.size'] = 12\n",
"\n",
"plt.title('ROC curve for Breast Cancer kNN classifier')\n",
"\n",
"plt.xlabel('False Positive Rate (1 - Specificity)')\n",
"\n",
"plt.ylabel('True Positive Rate (Sensitivity)')\n",
"\n",
"plt.show()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ROC curve help us to choose a threshold level that balances sensitivity and specificity for a particular context."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### ROC AUC\n",
"\n",
"\n",
"**ROC AUC** stands for **Receiver Operating Characteristic - Area Under Curve**. It is a technique to compare classifier performance. In this technique, we measure the `area under the curve (AUC)`. A perfect classifier will have a ROC AUC equal to 1, whereas a purely random classifier will have a ROC AUC equal to 0.5. \n",
"\n",
"\n",
"So, **ROC AUC** is the percentage of the ROC plot that is underneath the curve."
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ROC AUC : 0.9825\n"
]
}
],
"source": [
"# compute ROC AUC\n",
"\n",
"from sklearn.metrics import roc_auc_score\n",
"\n",
"ROC_AUC = roc_auc_score(y_test, y_pred_1)\n",
"\n",
"print('ROC AUC : {:.4f}'.format(ROC_AUC))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Interpretation\n",
"\n",
"\n",
"- ROC AUC is a single number summary of classifier performance. The higher the value, the better the classifier.\n",
"\n",
"- ROC AUC of our model approaches towards 1. So, we can conclude that our classifier does a good job in predicting whether it is benign or malignant cancer."
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cross validated ROC AUC : 0.9910\n"
]
}
],
"source": [
"# calculate cross-validated ROC AUC \n",
"\n",
"from sklearn.model_selection import cross_val_score\n",
"\n",
"Cross_validated_ROC_AUC = cross_val_score(knn_7, X_train, y_train, cv=5, scoring='roc_auc').mean()\n",
"\n",
"print('Cross validated ROC AUC : {:.4f}'.format(Cross_validated_ROC_AUC))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Interpretation\n",
"\n",
"Our Cross Validated ROC AUC is very close to 1. So, we can conclude that, the KNN classifier is indeed a very good model."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 20. k-fold Cross Validation\n",
"\n",
"\n",
"In this section, I will apply k-fold Cross Validation technique to improve the model performance. Cross-validation is a statistical method of evaluating generalization performance It is more stable and thorough than using a train-test split to evaluate model performance. "
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cross-validation scores:[0.87719298 0.96491228 0.94736842 0.98214286 0.96428571 0.96428571\n",
" 0.98181818 0.98181818 1. 0.98181818]\n"
]
}
],
"source": [
"# Applying 10-Fold Cross Validation\n",
"\n",
"from sklearn.model_selection import cross_val_score\n",
"\n",
"scores = cross_val_score(knn_7, X_train, y_train, cv = 10, scoring='accuracy')\n",
"\n",
"print('Cross-validation scores:{}'.format(scores))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can summarize the cross-validation accuracy by calculating its mean."
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Average cross-validation score: 0.9646\n"
]
}
],
"source": [
"# compute Average cross-validation score\n",
"\n",
"print('Average cross-validation score: {:.4f}'.format(scores.mean()))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Interpretation\n",
"\n",
"\n",
"- Using the mean cross-validation, we can conclude that we expect the model to be around 96.46 % accurate on average.\n",
"\n",
"- If we look at all the 10 scores produced by the 10-fold cross-validation, we can also conclude that there is a relatively high variance in the accuracy between folds, ranging from 100% accuracy to 87.72% accuracy. So, we can conclude that the model is very dependent on the particular folds used for training, but it also be the consequence of the small size of the dataset.\n",
"\n",
"- We can see that 10-fold cross-validation accuracy does not result in performance improvement for this model."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 21. Results and conclusion\n",
"\n",
"\n",
"\n",
"1. In this project, I build a kNN classifier model to classify the patients suffering from breast cancer. The model yields very good performance as indicated by the model accuracy which was found to be 0.9786 with k=7.\n",
"\n",
"2. With k=3, the training-set accuracy score is 0.9821 while the test-set accuracy to be 0.9714. These two values are quite comparable. So, there is no question of overfitting. \n",
"\n",
"3. I have compared the model accuracy score which is 0.9714 with null accuracy score which is 0.6071. So, we can conclude that our K Nearest Neighbors model is doing a very good job in predicting the class labels.\n",
"\n",
"4. Our original model accuracy score with k=3 is 0.9714. Now, we can see that we get same accuracy score of 0.9714 with k=5. But, if we increase the value of k further, this would result in enhanced accuracy. With k=6,7,8 we get accuracy score of 0.9786. So, it results in performance improvement. If we increase k to 9, then accuracy decreases again to 0.9714. So, we can conclude that our optimal value of k is 7.\n",
"\n",
"5. kNN Classification model with k=7 shows more accurate predictions and less number of errors than k=3 model. Hence, we got performance improvement with k=7.\n",
"\n",
"6. ROC AUC of our model approaches towards 1. So, we can conclude that our classifier does a good job in predicting whether it is benign or malignant cancer.\n",
"\n",
"7. Using the mean cross-validation, we can conclude that we expect the model to be around 96.46 % accurate on average.\n",
"\n",
"8. If we look at all the 10 scores produced by the 10-fold cross-validation, we can also conclude that there is a relatively high variance in the accuracy between folds, ranging from 100% accuracy to 87.72% accuracy. So, we can conclude that the model is very dependent on the particular folds used for training, but it also be the consequence of the small size of the dataset.\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"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.7.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment