{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "OfficeDM-Keras.ipynb",
"provenance": [],
"collapsed_sections": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "YZyxQOXVmyIv",
"colab_type": "text"
},
"source": [
"The information contained in this csv file was taken from actual office records. The exact date of birth within the month was randomly changed for all entries due to HIPAA regulations. \n",
"BMI is Body Mass Index. The next two columns are Date of Birth and Sex. The columns which follow represent whether there was the presence of non-insulin \n",
"dependent diabetes mellitus, insulin dependent diabetes melitus, peripheral vascular disease (as evidenced by one or two non-palpable pedal pulses, \n",
"skin atrophy, decreased hair, and nail changes), neuropathy (as evidenced by decreased sensation of the 5.07 Semmes-Weinstein monofilament fiber), \n",
"the presence of hyperkeratosis (callus), the presence of an ulcer, the presence of cellulitis, and the first dates that these occurred. 'M' is male, \n",
"'F' is female, 'Y' is yes, 'N' is no. Within the 'Smoking' column 'N' is never smoked, 'F' is former smoker, 'C' is current smoker, \n",
"and 'E' means no data was available.\n",
"\n",
"The purpose of this study is to demonstrate how keras can be utilized as part of an supervised learning model for an office setting.\n",
"There was no retrievable data on previous history of ulceration or cellulitis.\n",
"Instead of NIDDM and IDDM columns there could have been a column for one or the other with a 1 representing the presence of that type and a 0 representing the absence. This would be possible since only diabetics were included in this study. Fitting the model on data that contains that information regarding\n",
"first ulceration date or first cellulitis date would have produced more accurate results. In addition, only approximately 750 records of diabetic patients were available.\n",
"\n",
"This file demonstrates how Keras can be utilized in an a clinical setting. A larger data set would increase the accuracy of the model. In that case, a larger number of hidden layers could be utilized. Please refer to the file where various classifiers were utilized and demonstrated better results due to the small size of the data set. The results could be different with a much larger data set. This larger data set could be obtained from a larger office or from an amalgamation of offices. In addition, the EHR could be specifically designed to capture the information which will be utilized in creating the data set. The target is the 'Ulcer' column with the goal of the model being the identification of those diabetic patients likely to develop ulcerations.These patients would then receive supplemental instructions and observation."
]
},
{
"cell_type": "code",
"metadata": {
"id": "PKmf9pxCZ6D0",
"colab_type": "code",
"outputId": "db1379f2-545e-47ce-b29e-1084e291faf8",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 497
}
},
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import datetime as dt\n",
"from datetime import timedelta\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"# The is the file opened as a DataFrame, the first 5 rows are observed, and the data type of each column is determined.\n",
"df = pd.read_csv(r'https://raw.githubusercontent.com/DavidNNussbaum/office-diabetics/master/OfficeDiabetics.csv')\n",
"print(df.head()) \n",
"print(df.dtypes)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"/usr/local/lib/python3.6/dist-packages/statsmodels/tools/_testing.py:19: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.\n",
" import pandas.util.testing as tm\n"
],
"name": "stderr"
},
{
"output_type": "stream",
"text": [
" BMI DOB Sex ... Unnamed: 13 Unnamed: 14 Unnamed: 15\n",
"0 28.2 10/11/1938 F ... NaN NaN NaN\n",
"1 6/14/1957 F ... NaN NaN NaN\n",
"2 40.7 4/23/1966 M ... NaN NaN NaN\n",
"3 38.4 3/11/1967 F ... NaN NaN NaN\n",
"4 29.8 10/14/1939 M ... NaN NaN NaN\n",
"\n",
"[5 rows x 16 columns]\n",
"BMI object\n",
"DOB object\n",
"Sex object\n",
"NIDDM object\n",
"IDDM object\n",
"PVD object\n",
"Neuro object\n",
"Hyper object\n",
"Ulcer object\n",
"Cellulitis object\n",
"Ulcer Date object\n",
"Smoking object\n",
"Cellulitis Date object\n",
"Unnamed: 13 float64\n",
"Unnamed: 14 float64\n",
"Unnamed: 15 object\n",
"dtype: object\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"outputId": "2b6afa18-bf20-40e6-ab8e-2f82d886a102",
"id": "PMFEUYoOMaMV",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 106
}
},
"source": [
"# Any entries in the 'Ulcer' column that are not blank or 'Y' are identified and the row(s) found. \n",
"print(df['Ulcer'].unique())\n",
"print(df[df['Ulcer'] == 'I'])"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"[nan 'Y' ' ' ' Y' 'I']\n",
" BMI DOB Sex ... Unnamed: 13 Unnamed: 14 Unnamed: 15\n",
"555 26.9 11/10/1941 M ... NaN NaN NaN\n",
"\n",
"[1 rows x 16 columns]\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "OY3vxnMnfhyx",
"colab_type": "code",
"outputId": "6400e54a-dd26-4177-98a6-e882ea690494",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 159
}
},
"source": [
"# Eliminate 'Unnamed' columns.\n",
"df = df.loc[:, ~df.columns.str.contains('^Unnamed')]\n",
"# Eliminate any white spaces in column names\n",
"for column_name in df.columns:\n",
" try:\n",
" df[column_name] = df[column_name].str.strip()\n",
" except AttributeError: #This means that this error won't stop it\n",
" pass\n",
"print(df.head())"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
" BMI DOB Sex NIDDM ... Cellulitis Ulcer Date Smoking Cellulitis Date\n",
"0 28.2 10/11/1938 F Y ... NaN NaN F NaN\n",
"1 6/14/1957 F NaN ... NaN NaN N NaN\n",
"2 40.7 4/23/1966 M Y ... NaN NaN C NaN\n",
"3 38.4 3/11/1967 F NaN ... Y NaN N 5/20/2019\n",
"4 29.8 10/14/1939 M Y ... NaN NaN C NaN\n",
"\n",
"[5 rows x 13 columns]\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "YP13IUp0iQ0g",
"colab_type": "code",
"outputId": "ddef9b67-044e-4ea4-b7fe-76eceb94f869",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 230
}
},
"source": [
"# Fill in blanks in the 'Ulcer Date' and the 'Cellulitis Date' columns with one of the last data retrieval dates.\n",
"df['Ulcer Date'] = df['Ulcer Date'].replace(np.NaN, '03/31/2020')\n",
"df['Cellulitis Date'] = df['Cellulitis Date'].replace(np.NaN, '03/31/2020')\n",
"print(df['Ulcer Date'].head())\n",
"print(df['Cellulitis Date'].head())"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"0 03/31/2020\n",
"1 03/31/2020\n",
"2 03/31/2020\n",
"3 03/31/2020\n",
"4 03/31/2020\n",
"Name: Ulcer Date, dtype: object\n",
"0 03/31/2020\n",
"1 03/31/2020\n",
"2 03/31/2020\n",
"3 5/20/2019\n",
"4 03/31/2020\n",
"Name: Cellulitis Date, dtype: object\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ZS1C734utvpz",
"colab_type": "code",
"outputId": "4da06c15-33b0-4e36-f9ae-8f295ff6483d",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
}
},
"source": [
"# Determine current Data Frame shape.\n",
"print(df.shape)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"(761, 13)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "wN5JL8iJkz_5",
"colab_type": "code",
"outputId": "4f06b012-1e39-49eb-b2fa-d48cfd9c32bc",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 212
}
},
"source": [
"# Convert 'DOB', \"Ulcer Date', and 'Cellulitis Date' columns to datetime64 after ensuring that they all have hyphens instead of lines.\n",
"df[['DOB', 'Ulcer Date', 'Cellulitis Date']] = \\\n",
" df[['DOB', 'Ulcer Date', 'Cellulitis Date']].replace('/', '-', regex=True) \n",
"df[['DOB', 'Ulcer Date', 'Cellulitis Date']] = \\\n",
" pd.to_datetime(df[['DOB', 'Ulcer Date', 'Cellulitis Date']].stack(), format=\"%m-%d-%Y\", errors='coerce').unstack()\n",
"# Ensure that the three columns are of type datetime64.\n",
"print(df[['DOB', 'Ulcer Date', 'Cellulitis Date']].dtypes)\n",
"# Determine which of the 'DOB' column entries are not datetime64.\n",
"print(df[df['DOB'].isnull()])"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"DOB datetime64[ns]\n",
"Ulcer Date datetime64[ns]\n",
"Cellulitis Date datetime64[ns]\n",
"dtype: object\n",
" BMI DOB Sex NIDDM ... Cellulitis Ulcer Date Smoking Cellulitis Date\n",
"397 NaN NaT F Y ... NaN 2020-03-31 C 2020-03-31\n",
"400 27.5 NaT F NaN ... NaN 2020-03-31 F 2020-03-31\n",
"529 27.3 NaT F Y ... NaN 2020-03-31 N 2020-03-31\n",
"541 NaN NaT F Y ... NaN 2020-03-31 C 2020-03-31\n",
"\n",
"[4 rows x 13 columns]\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "5wIohe_xqvNb",
"colab_type": "code",
"outputId": "beff8780-bae5-4902-dbfb-76e4ae6689b7",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
}
},
"source": [
"# Eliminate rows of DOB with NaT.\n",
"df = df.dropna(subset=['DOB'])\n",
"print(df.shape)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"(757, 13)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "a8ZfUHr0lyLJ",
"colab_type": "code",
"outputId": "7e1fb811-ade5-4106-e15e-0c6face8dfd2",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 408
}
},
"source": [
"# Create new columns for age in years age achieved without an ulcer or cellulitis recorded. \n",
"df['CellulitisAge'] = ((df['Cellulitis Date'] - (df['DOB'])) / timedelta(days=365))\n",
"df['UlcerAge'] = ((df['Ulcer Date'] - (df['DOB'])) / timedelta(days=365))\n",
"# Determine if there are any rows with Nan and eliminate them.\n",
"print(df[df['CellulitisAge'].isnull()])\n",
"print(df[df['UlcerAge'].isnull()])\n",
"# Eliminate rows in 'UlcerAge' which do not have values.\n",
"df = df.dropna(subset=['UlcerAge'])\n",
"# Confirm shape of df.\n",
"print(df.shape)\n",
"# Change the data type of the new columns to int64. \n",
"df['CellulitisAge'] = df['CellulitisAge'].astype('object').astype(np.int64)\n",
"df['UlcerAge'] = df['UlcerAge'].astype('object').astype('int64')\n",
"# The DOB, Cellulitis Date, and Ulcer Date columns are then dropped.\n",
"df = df.drop(['DOB', 'Cellulitis Date', 'Ulcer Date'], axis=1)\n",
"print(df.head(10))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Empty DataFrame\n",
"Columns: [BMI, DOB, Sex, NIDDM, IDDM, PVD, Neuro, Hyper, Ulcer, Cellulitis, Ulcer Date, Smoking, Cellulitis Date, CellulitisAge, UlcerAge]\n",
"Index: []\n",
" BMI DOB Sex NIDDM ... Smoking Cellulitis Date CellulitisAge UlcerAge\n",
"246 29.2 1938-01-11 F Y ... N 2020-03-31 82.273973 NaN\n",
"476 37.6 1949-07-06 M NaN ... F 2020-03-31 70.783562 NaN\n",
"\n",
"[2 rows x 15 columns]\n",
"(755, 15)\n",
" BMI Sex NIDDM IDDM PVD ... Ulcer Cellulitis Smoking CellulitisAge UlcerAge\n",
"0 28.2 F Y NaN Y ... NaN NaN F 81 81\n",
"1 F NaN Y NaN ... NaN NaN N 62 62\n",
"2 40.7 M Y NaN NaN ... NaN NaN C 53 53\n",
"3 38.4 F NaN Y NaN ... NaN Y N 52 53\n",
"4 29.8 M Y NaN Y ... NaN NaN C 80 80\n",
"5 32.9 M NaN Y Y ... Y C 74 74\n",
"6 NaN M Y NaN NaN ... NaN Y F 41 41\n",
"7 39.9 F Y NaN Y ... NaN NaN N 71 71\n",
"8 NaN M NaN Y NaN ... NaN Y F 38 40\n",
"9 28.2 M Y NaN NaN ... NaN NaN N 71 71\n",
"\n",
"[10 rows x 12 columns]\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "onuC_hj9gnnw",
"colab_type": "code",
"outputId": "9206a916-292f-4baa-fa78-913e419cbaa1",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
}
},
"source": [
"# Change the 'BMI' column from object to float64.\n",
"df['BMI'] = pd.to_numeric(df['BMI'], errors='coerce')\n",
"print(df['BMI'].dtypes)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"float64\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "0KFzb3YfjJIO",
"colab_type": "code",
"outputId": "2fa22835-1682-4ed8-b4bd-7fa195afc254",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 159
}
},
"source": [
"# Replace the areas where there are no entries with 0 and a \"Y\" with a 1 in 6 of the columns. \n",
"# Note that there was one entry in the 'Ulcer' column which was 'I' but should have been 'Y'. This is being corrected. \n",
"# Those with no entry (either NaN or nothing) in the 'Smoking' column were replaced with 'E'. \n",
"# df['Column Name'].unique() was used later on when it was indicated that there were non-integers. These are being corrected here.\n",
"# In the 'Sex' column replace 'F' with 0 and 'M' with 1.\n",
"df['NIDDM'] = df['NIDDM'].replace(np.NaN, 0, regex=True) \n",
"df['NIDDM'] = df['NIDDM'].replace('Y', 1, regex=True) \n",
"df['IDDM'] = df['IDDM'].replace(np.NaN, 0, regex=True) \n",
"df['IDDM'] = df['IDDM'].replace('nan', 0, regex=True) \n",
"df['IDDM'] = df['IDDM'].replace('Y', 1, regex=True) \n",
"df['PVD'] = df['PVD'].replace(np.NaN, 0, regex=True) \n",
"df['PVD'] = df['PVD'].replace('Y', 1, regex=True) \n",
"df['PVD'] = df['PVD'].replace('nan', 0, regex=True) \n",
"df['Neuro'] = df['Neuro'].replace(np.NaN, 0, regex=True)\n",
"df['Neuro'] = df['Neuro'].replace('Y', 1, regex=True) \n",
"df['Neuro'] = df['Neuro'].replace('nan', 0, regex=True) \n",
"df['Hyper'] = df['Hyper'].replace(np.NaN, 0, regex=True)\n",
"df['Hyper'] = df['Hyper'].replace('Y', 1, regex=True) \n",
"df['Hyper'] = df['Hyper'].replace('nan', 0, regex=True) \n",
"df['Ulcer'] = df['Ulcer'].replace(np.NaN, 0, regex=True)\n",
"df['Ulcer'] = df['Ulcer'].replace('I', 1, regex=True)\n",
"df['Ulcer'] = df['Ulcer'].replace('', 0, regex=True)\n",
"df['Ulcer'] = df['Ulcer'].replace('Y', 1, regex=True)\n",
"df['Sex'] = df['Sex'].replace('F', 0, regex=True)\n",
"df['Sex'] = df['Sex'].replace('M', 1, regex=True)\n",
"df['Cellulitis'] = df['Cellulitis'].replace(np.NaN, 0, regex=True) \n",
"df['Cellulitis'] = df['Cellulitis'].replace('Y', 1, regex=True) \n",
"df['Cellulitis'] = df['Cellulitis'].replace('nan', 0, regex=True) \n",
"df['Smoking'] = df['Smoking'].replace(np.NaN, 'E', regex=True) \n",
"df['Smoking'] = df['Smoking'].replace('', 'E', regex=True)\n",
"print(df.head())"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
" BMI Sex NIDDM IDDM PVD ... Ulcer Cellulitis Smoking CellulitisAge UlcerAge\n",
"0 28.2 0 1 0 1 ... 0 0 F 81 81\n",
"1 NaN 0 0 1 0 ... 0 0 N 62 62\n",
"2 40.7 1 1 0 0 ... 0 0 C 53 53\n",
"3 38.4 0 0 1 0 ... 0 1 N 52 53\n",
"4 29.8 1 1 0 1 ... 0 0 C 80 80\n",
"\n",
"[5 rows x 12 columns]\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "O9y0Kusu-Zwi",
"colab_type": "code",
"outputId": "53254422-524e-439a-df78-96998623a5ce",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 248
}
},
"source": [
"print(df.dtypes)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"BMI float64\n",
"Sex int64\n",
"NIDDM int64\n",
"IDDM object\n",
"PVD object\n",
"Neuro object\n",
"Hyper object\n",
"Ulcer int64\n",
"Cellulitis object\n",
"Smoking object\n",
"CellulitisAge int64\n",
"UlcerAge int64\n",
"dtype: object\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ZpWqV2k-BF5W",
"colab_type": "code",
"outputId": "693186ad-0e57-4e93-8cb1-fa98b67502ce",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
}
},
"source": [
"# Find any NaN if there are any in the 'Cellulitis' column.\n",
"print(df[df['Cellulitis'].isna()]['Cellulitis']) # The output indicates that there are none."
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Series([], Name: Cellulitis, dtype: object)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Tg2mcO42VGAp",
"colab_type": "code",
"outputId": "42349e36-24e3-424b-d3a3-6879c978d899",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 47
}
},
"source": [
"# Find any empty spaces if there are any in the 'Smoking' column.\n",
"df['Smoking'].unique()\n",
"df[df['Smoking'] == ''] # The output demonstrates that there are none."
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
BMI
\n",
"
Sex
\n",
"
NIDDM
\n",
"
IDDM
\n",
"
PVD
\n",
"
Neuro
\n",
"
Hyper
\n",
"
Ulcer
\n",
"
Cellulitis
\n",
"
Smoking
\n",
"
CellulitisAge
\n",
"
UlcerAge
\n",
"
\n",
" \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [BMI, Sex, NIDDM, IDDM, PVD, Neuro, Hyper, Ulcer, Cellulitis, Smoking, CellulitisAge, UlcerAge]\n",
"Index: []"
]
},
"metadata": {
"tags": []
},
"execution_count": 13
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "FZ75lG-Fn_je",
"colab_type": "code",
"outputId": "0c7eac01-c7ad-4028-9965-9e8dacb43140",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 159
}
},
"source": [
"from sklearn.preprocessing import LabelEncoder\n",
"from sklearn.preprocessing import OneHotEncoder\n",
"\n",
"# The 'Smoking' column is being changed from string to numerical.\n",
"le = LabelEncoder() \n",
"df['Smoking']= le.fit_transform(df['Smoking'])\n",
"print(df.head())"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
" BMI Sex NIDDM IDDM ... Cellulitis Smoking CellulitisAge UlcerAge\n",
"0 28.2 0 1 0 ... 0 2 81 81\n",
"1 NaN 0 0 1 ... 0 3 62 62\n",
"2 40.7 1 1 0 ... 0 0 53 53\n",
"3 38.4 0 0 1 ... 1 3 52 53\n",
"4 29.8 1 1 0 ... 0 0 80 80\n",
"\n",
"[5 rows x 12 columns]\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "1k0oZDZmmIGf",
"colab_type": "code",
"outputId": "f13db220-4bf9-4e4e-a21f-bdb2714a86bd",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 159
}
},
"source": [
"# The 'Smoking' column is more than binary so one hot encoding must be done.\n",
"du = pd.get_dummies(df['Smoking'], columns=['Smoking'], prefix='Smoke')\n",
"df = pd.concat([df, du], axis=1)\n",
"df = df.drop(['Smoking'], axis=1)\n",
"print(df.head())\n",
" "
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
" BMI Sex NIDDM IDDM PVD ... UlcerAge Smoke_0 Smoke_1 Smoke_2 Smoke_3\n",
"0 28.2 0 1 0 1 ... 81 0 0 1 0\n",
"1 NaN 0 0 1 0 ... 62 0 0 0 1\n",
"2 40.7 1 1 0 0 ... 53 1 0 0 0\n",
"3 38.4 0 0 1 0 ... 53 0 0 0 1\n",
"4 29.8 1 1 0 1 ... 80 1 0 0 0\n",
"\n",
"[5 rows x 15 columns]\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "4A-VdcSkbiDR",
"colab_type": "code",
"outputId": "134701cc-8d31-47c6-a2da-56853f273382",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 70
}
},
"source": [
"# The 'Ulcer' column contains integers and strings that must be changed to all integers.\n",
"print(df['Ulcer'].dtypes)\n",
"df['Ulcer'] = df['Ulcer'].astype(int)\n",
"print(df['Ulcer'].dtypes)\n",
"print(df['Ulcer'].unique())"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"int64\n",
"int64\n",
"[0 1]\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "O1izO4kvm7GP",
"colab_type": "code",
"outputId": "91bf7cf9-58a0-4dd4-ecd9-9e92c518029a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 124
}
},
"source": [
"# The missing BMI values for those with ulcers will be filled in with the mean of those having ulcers.\n",
"# The missing BMI values for those without ulcers will be filled in with the mean of those not having ulcers.\n",
"mean0, mean1 = df.groupby('Ulcer').mean()['BMI'].values\n",
"for i, row in df.iterrows():\n",
" if row['Ulcer'] == 0 and np.isnan(row['BMI']):\n",
" df.loc[i, 'BMI'] = mean0\n",
" elif row['Ulcer'] == 1 and np.isnan(row['BMI']):\n",
" df.loc[i, 'BMI'] = mean1\n",
"df['BMI'].head()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0 28.200000\n",
"1 33.973364\n",
"2 40.700000\n",
"3 38.400000\n",
"4 29.800000\n",
"Name: BMI, dtype: float64"
]
},
"metadata": {
"tags": []
},
"execution_count": 17
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "takFV4M5N7h3",
"colab_type": "code",
"outputId": "3cc7d797-62de-4f43-ed1c-4b8fb62951a8",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 83
}
},
"source": [
"# Look for empty spaces if any exist in the 'Ulcer' column.\n",
"df['Ulcer'].unique()\n",
"df[df['Ulcer'] == ''] # The output demonstrates that there are none."
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"/usr/local/lib/python3.6/dist-packages/pandas/core/ops/array_ops.py:253: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n",
" res_values = method(rvalues)\n"
],
"name": "stderr"
},
{
"output_type": "execute_result",
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
BMI
\n",
"
Sex
\n",
"
NIDDM
\n",
"
IDDM
\n",
"
PVD
\n",
"
Neuro
\n",
"
Hyper
\n",
"
Ulcer
\n",
"
Cellulitis
\n",
"
CellulitisAge
\n",
"
UlcerAge
\n",
"
Smoke_0
\n",
"
Smoke_1
\n",
"
Smoke_2
\n",
"
Smoke_3
\n",
"
\n",
" \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [BMI, Sex, NIDDM, IDDM, PVD, Neuro, Hyper, Ulcer, Cellulitis, CellulitisAge, UlcerAge, Smoke_0, Smoke_1, Smoke_2, Smoke_3]\n",
"Index: []"
]
},
"metadata": {
"tags": []
},
"execution_count": 18
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "4srBipKC9Kcr",
"colab_type": "code",
"outputId": "f29c67f5-c0f6-4312-cdd8-f6662d92b5b6",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 294
}
},
"source": [
"# Create a histogram of the 'BMI', 'UlcerAge', and CellulitisAge columns.\n",
"df[['BMI', 'UlcerAge', 'CellulitisAge']].hist()\n",
"plt.suptitle('Histogram of three columns.')\n",
"plt.show()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "YvnKCJXCyblr",
"colab_type": "text"
},
"source": [
"It is interesting to note that the CellulitisAge and UlcerAge features both peak at approximately age 60.\n",
"The BMI peaks at approximately 30. "
]
},
{
"cell_type": "code",
"metadata": {
"id": "5qv9nH1fs6Vm",
"colab_type": "code",
"outputId": "8fa5265d-76c1-4010-fb55-ea8e48d587fb",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 585
}
},
"source": [
"# Create a pairplot of the 'BMI', 'UlcerAge', and 'CellulitisAge' columns.\n",
"plt.figure(figsize=(12, 6))\n",
"sns.pairplot(df[['BMI', 'UlcerAge', 'CellulitisAge']])\n",
"plt.suptitle('Pairplot of Three Columns')\n",
"plt.show()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
""
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAImCAYAAACB54oCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOydeXxU5b3/38+ZLZMFEkLClshWDKYYhCBrq6gVa6XlKovKpqAsorVqVWyVqy1aF7TeWsUgKrhAAUGvXr2uWPS64IIotVHkB4IJAgkhCclkMtt5fn9MzmGWMyEJgRB43q8XLzIzZ3lm5jPP+Z7v812ElBKFQqFQKBSKtkJr6wEoFAqFQqE4uVHGiEKhUCgUijZFGSMKhUKhUCjaFGWMKBQKhUKhaFOUMaJQKBQKhaJNUcaIQqFQKBSKNqVdGyO//OUvJaD+qX+t+e+ooLSq/h2lf0cFpVf17yj8a5R2bYzs37+/rYegUDQJpVVFe0LpVXGsadfGiEKhUCgUivaPMkYUCoVCoVC0Kfa2HoBCoTh66LqkwuPHHwzhtNvITHGiaaKth6VQxKG0enKjjBGF4gRF1yVb99Uw69nPKa30kpPhZun0IeR1SVOTvOK4QmlVoZZpFIoTlAqP35zcAUorvcx69nMqPP42HplCEY3SqkJ5RlqBXre91qL9dt53USuPRHE8IoR4vVevXi3ef/To0UydOpWrr766Wfv5gyFzcjcorfTiD4YS7vP4449z11134fF42LVrF5mZmUd9nG3Nzp076d27N4FAALtdTYltQUu0qjixUJ4RhaKJCCF2CiG8QohaIcQ+IcRyIUTq4faTUl7YnIt6S9m5cydCCILBIABOu42cDHfUNjkZbpx2m+X+gUCAm266ibfeeova2tooQ+T//u//SE1NJTU1lZSUFIQQ5uPU1FR++OGHo/fGmsibb77JWWedRVpaGllZWZx99tm88sorbT0sRRNorlYVJx7KGFEomsevpZSpwGBgCHDHkRzMMByOBpkpTpZOH2JO8sY6fGaK03L7ffv2UV9fz09/+tO4137+859TW1tLbW0t//73vwGoqqoynzvllFOaNbbWft9r165l4sSJTJ8+ndLSUvbt28ef//xn/ud//qdVz6M4OjRXq4oTD2WMKBQtQEq5G3gdGCCEyBBCvCqEKBdCVDb8nWNsK4TYYBSRWr58OaNGjeLGG28kMzOTu+66y3zuuuuuo2PHjvTv35/169dbnlfXde6++2569uxJdnY206dPp7q6GoCzzjoLgPT0dFJTU/nkk43kdUnjpXmj+HD+Obw0bxS90p3cdNONdO/ene7du3PDDTfg8/n47rvvyMvLM/c/99xzW/S57Nq1i1GjRpGWlsaYMWPM4lmG1+app57ilFNOMY//9NNPc9ppp5GRkcEFF1zArl27zGN9++23nH/++XTq1Im8vDzWrFmT6LvgpptuYsGCBVx99dV07NgRTdM4++yzWbp06WE/t1h69erFO++8Yz6+6667mDp1atT7WLZsGbm5uWRkZFBUVMRnn31GQUEB6enpXHfddea+y5cv52c/+xk333wzGRkZ9O7dm9dffz3q9T59+pCWlkbv3r1ZsWJFSz72do+miTitquDVkwtljCgULUAIkQv8CthM+He0DOgJnAJ4gUcT7fvJJ5/Qp08f9u3bx+23324+17dvX/bv38+f/vQnLrnkEg4cOBC37/Lly1m+fDn//Oc/2bFjB7W1tebF7/333wcOeSxGjBiBpgmy0lz0yEgmK83Fvff+hY0bN/Lll1/y1Vdf8emnn3L33Xdz6qmnRnk83n333RZ9LitXrmTZsmWUlZXh9/t58MEHo15/7733+Oabb3jzzTd5+eWX+ctf/sKLL75IeXk5P//5z7n88ssB8Hg8nH/++UyePJmysjJWrVrFvHnzKC4ujjvn1q1bKSkpYcKECQnH1djn1hI++eQTtm3bxurVq7nhhhu45557eOedd/j3v//NmjVreO+996K2zcvLY//+/dx6661cddVVSCnxeDxcf/31vP7669TU1PDRRx9xxhlntHhM7Z1YrSpD5ORCGSMKRfP4byFEFfAB8B7wFyllhZRynZSyTkpZA9wDnJ3oAN27d+e3v/0tdrsdtzvsls7OzuaGG27A4XBw6aWXkpeXx2uvxQdGr1ixgptuuok+ffqQmprKvffey6pVq5q87LFixQr+8z//k+zsbLKysrjzzjt57rnnmv8pJGDGjBmceuqpuN1uJk2axJdffhn1+l133UVKSgput5uioiL+8Ic/cNppp2G32/njH//Il19+ya5du3j11Vfp1asXM2bMwG63M2jQIMaPH88LL7wQd86KigoAunXr1uj7PpLPLZYFCxaQlJTEmDFjSElJ4fLLLyc7O5sePXrw85//nM2bN5vb9uzZk1mzZmGz2bjiiivYs2cP+/btA0DTNL7++mu8Xi/dunWzXCJTKE4GlDGiUDSP/5BSpkspe0op50kpvUKIZCHEEiHELiHEQeB9IF0IYRl9l5ubG/dcjx49EOLQnWDPnj358ccf47b78ccf6dmzZ9R2wWDQvLgdDqv9rc7TUrp27Wr+nZycTG1tbdTrke99165d/O53vyM9PZ309HQ6deqElJLdu3eza9cuPvnkE/O19PR0VqxYwd69e+POaQTa7tmzJ+G4jvRzi6VLly7m3263O+5x5PuO/UwAamtrSUlJYfXq1RQVFdGtWzcuuugivv322xaNR6Fo7xxzY0QIkSeE+DLi30EhxA1CiE5CiLeFENsa/s841mNTKFrI74E8YJiUsgNwVsPzln7mSKPDYPfu3Uh5qLHlDz/8QPfu3eO26969e1RcxQ8//IDdbqdLly6Wx23K/lbnOVpEjjE3N5clS5ZQVVVl/vN6vYwcOZLc3FzOPvvsqNdqa2t5/PHH446Zl5dHbm4u69atS3jexj63WFJSUqirqzMfWxlArcUFF1zA22+/zZ49e+jfvz+zZs06audSKI5njrkxIqXcKqU8Q0p5BlAI1AEvAbcB66WU/YD1DY8VivZAGuE4kSohRCfgzuYeoKysjEceeYRAIMALL7zAN998w69+9au47S6//HIefvhhvv/+e2pra/njH//IpZdeit1uJysrC03T2LFjR8LzXH755dx9992Ul5ezf/9+/vznP5vBmceauXPncu+995qxKtXV1eYyzNixY/nuu+947rnnCAQCBAIBPvvsM7755pu44wgh+Otf/8rChQtZtmwZBw8eRNd1PvjgA2bPng00/rnFcsYZZ7Bq1SoCgQCff/45a9euPSrvf9++fbz88st4PB5cLhepqalomnJWK05O2lr55wHbpZS7gHHAMw3PPwP8R5uNSqFoHv8FuIH9wEbgjeYeYNiwYWzbto3OnTtz++23s3btWsuCYzNnzmTatGmcddZZ9O7dm6SkJP7+978D4SWA22+/nVGjRpGens7GjRvj9r/jjjsYMmQIBQUFnH766QwePJg77jii7OQWc/HFFzN//nwuu+wyOnTowIABA8xMk7S0NN566y1WrVpF9+7d6dq1K/Pnz8fn81ke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\n",
"text/plain": [
""
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4jsYHng0ym5v",
"colab_type": "text"
},
"source": [
"The pairplot confirms the linear relationship between UlcerAge and CellulitisAge and the non-liear relationship\n",
"between those two and the BMI."
]
},
{
"cell_type": "code",
"metadata": {
"id": "zEjmdapv742T",
"colab_type": "code",
"outputId": "586f9eda-b61f-412a-bcd8-f0bf65477774",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 442
}
},
"source": [
"# Create a boxplot of the columns. In the next cell, the boxplot of 'UlcerAge' will be examined.\n",
"plt.figure(figsize=(12, 6))\n",
"df.boxplot()\n",
"plt.title('Comparison of Column Boxplots')\n",
"plt.xticks(rotation=90)\n",
"plt.show()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ml-wvKk39wiq",
"colab_type": "code",
"outputId": "7f865ed9-467d-4da6-8ec2-4d0a70872596",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 531
}
},
"source": [
"# Create two boxplots, the first of the 'UlcerAge' column and the second of the same column with the extremes trimmed. \n",
"df[['UlcerAge']].boxplot()\n",
"plt.show()\n",
"std = df['UlcerAge'].std()\n",
"mean = df['UlcerAge'].mean()\n",
"cut_off = df['UlcerAge'].quantile(0.75) - df['UlcerAge'].quantile(0.25) # Can also do std * 3\n",
"lower, upper = mean - cut_off, mean + cut_off\n",
"trimmed_df = df[(df['UlcerAge'] < upper)\n",
" & (df['UlcerAge'] > lower)]\n",
"trimmed_df[['UlcerAge']].boxplot()\n",
"plt.show()\n",
"print(trimmed_df.shape)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
},
{
"output_type": "stream",
"text": [
"(602, 15)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "EUrgmETVzReV",
"colab_type": "text"
},
"source": [
"The same could be done with 'BMI' and 'CellulitisAge', however if all entries with extreme values in any of these three columns were removed \n",
"there would be several hundred fewer entries. Removing the outliers would be more feasible with a much larger data set."
]
},
{
"cell_type": "code",
"metadata": {
"id": "wh16zDhPBOE6",
"colab_type": "code",
"outputId": "f00bb4e9-d777-435b-a1e0-47b0ab9fda95",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 444
}
},
"source": [
"# The StandardScalar cell (below) showed an error message regarding a string being present so it is being located and changed to numeric. The change is then confirmed.\n",
"print (df[df['IDDM'].apply(lambda x: isinstance(x, str))])\n",
"df['IDDM'] = pd.to_numeric(df['IDDM'], errors='coerce')\n",
"print (df[df['IDDM'].apply(lambda x: isinstance(x, str))])\n",
"print (df[df['IDDM'].apply(lambda x: isinstance(x, object))])"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
" BMI Sex NIDDM IDDM ... Smoke_0 Smoke_1 Smoke_2 Smoke_3\n",
"292 33.973364 1 1 ... 0 0 0 1\n",
"427 57.600000 1 1 ... 0 0 0 1\n",
"526 41.600000 1 1 ... 0 0 1 0\n",
"543 33.000000 1 1 ... 0 0 0 1\n",
"\n",
"[4 rows x 15 columns]\n",
"Empty DataFrame\n",
"Columns: [BMI, Sex, NIDDM, IDDM, PVD, Neuro, Hyper, Ulcer, Cellulitis, CellulitisAge, UlcerAge, Smoke_0, Smoke_1, Smoke_2, Smoke_3]\n",
"Index: []\n",
" BMI Sex NIDDM IDDM ... Smoke_0 Smoke_1 Smoke_2 Smoke_3\n",
"0 28.200000 0 1 0.0 ... 0 0 1 0\n",
"1 33.973364 0 0 1.0 ... 0 0 0 1\n",
"2 40.700000 1 1 0.0 ... 1 0 0 0\n",
"3 38.400000 0 0 1.0 ... 0 0 0 1\n",
"4 29.800000 1 1 0.0 ... 1 0 0 0\n",
".. ... ... ... ... ... ... ... ... ...\n",
"756 25.900000 1 0 1.0 ... 0 0 0 1\n",
"757 32.300000 0 1 0.0 ... 0 0 0 1\n",
"758 33.973364 1 0 1.0 ... 0 0 0 1\n",
"759 33.973364 1 0 1.0 ... 0 1 0 0\n",
"760 42.100000 0 1 0.0 ... 0 0 0 1\n",
"\n",
"[755 rows x 15 columns]\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "19jJ8YyNECWo",
"colab_type": "code",
"outputId": "cf6f5bfe-585e-42df-a2d7-95291edb1599",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 195
}
},
"source": [
"# An error message in the StandardScacler cell (below) stated that there was a string. The error message in this box stated that there was an 'F' which could not be converted to numeric \n",
"# so it is being replaced by the correct value (after checking the office records) which is 1. The change is then confirmed.\n",
"print (df[df['PVD'].apply(lambda x: isinstance(x, str))])\n",
"df['PVD'] = df['PVD'].replace('F', 1, regex=True) \n",
"df['PVD'] = pd.to_numeric(df['PVD'], errors='coerce')\n",
"print (df[df['PVD'].apply(lambda x: isinstance(x, str))])"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
" BMI Sex NIDDM IDDM ... Smoke_0 Smoke_1 Smoke_2 Smoke_3\n",
"18 31.000000 1 0 1.0 ... 1 0 0 0\n",
"122 39.600000 0 1 0.0 ... 0 0 0 1\n",
"147 31.100000 0 0 1.0 ... 0 0 0 1\n",
"215 33.973364 0 0 1.0 ... 0 0 1 0\n",
"\n",
"[4 rows x 15 columns]\n",
"Empty DataFrame\n",
"Columns: [BMI, Sex, NIDDM, IDDM, PVD, Neuro, Hyper, Ulcer, Cellulitis, CellulitisAge, UlcerAge, Smoke_0, Smoke_1, Smoke_2, Smoke_3]\n",
"Index: []\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "fh4n2igsGcmY",
"colab_type": "code",
"outputId": "e095b4c3-fca1-4d2f-ccab-10e19d70ac9d",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 177
}
},
"source": [
"# The StandardScacler cell (below) showed an error message regarding a string being present so it is being located and changed to numeric. The change is then confirmed.\n",
"print (df[df['Neuro'].apply(lambda x: isinstance(x, str))])\n",
"df['Neuro'] = pd.to_numeric(df['Neuro'], errors='coerce')\n",
"print (df[df['Neuro'].apply(lambda x: isinstance(x, str))])"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
" BMI Sex NIDDM IDDM PVD ... UlcerAge Smoke_0 Smoke_1 Smoke_2 Smoke_3\n",
"526 41.6 1 1 NaN 1.0 ... 70 0 0 1 0\n",
"533 24.9 1 0 1.0 0.0 ... 54 0 0 0 1\n",
"543 33.0 1 1 NaN 0.0 ... 50 0 0 0 1\n",
"\n",
"[3 rows x 15 columns]\n",
"Empty DataFrame\n",
"Columns: [BMI, Sex, NIDDM, IDDM, PVD, Neuro, Hyper, Ulcer, Cellulitis, CellulitisAge, UlcerAge, Smoke_0, Smoke_1, Smoke_2, Smoke_3]\n",
"Index: []\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Asro6Y2lHnnR",
"colab_type": "code",
"outputId": "1e8b41b4-ac1e-4b8a-af7c-cd32e5cdf010",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 284
}
},
"source": [
"\n",
"# An error message in the StandardScacler cell (below) stated that there was a string. The error message in this box stated that there was an 'H' which could not be converted to numeric \n",
"# in three rows so they are being replaced by the correct values (after checking the office records) which are 1, 0, and 1. The changes are then confirmed. \n",
"print (df[df['Hyper'].apply(lambda x: isinstance(x, str))])\n",
"df['Hyper'].loc[147, 274] = 1\n",
"df['Hyper'].loc[217] = 0\n",
"df['Hyper'] = pd.to_numeric(df['Hyper'], errors='coerce')\n",
"print (df[df['Hyper'].apply(lambda x: isinstance(x, str))]) "
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
" BMI Sex NIDDM IDDM ... Smoke_0 Smoke_1 Smoke_2 Smoke_3\n",
"147 31.100000 0 0 1.0 ... 0 0 0 1\n",
"215 33.973364 0 0 1.0 ... 0 0 1 0\n",
"217 35.000000 1 1 0.0 ... 0 0 0 1\n",
"274 32.900000 1 1 0.0 ... 1 0 0 0\n",
"\n",
"[4 rows x 15 columns]\n",
"Empty DataFrame\n",
"Columns: [BMI, Sex, NIDDM, IDDM, PVD, Neuro, Hyper, Ulcer, Cellulitis, CellulitisAge, UlcerAge, Smoke_0, Smoke_1, Smoke_2, Smoke_3]\n",
"Index: []\n"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
"/usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py:671: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" self._setitem_with_indexer(indexer, value)\n"
],
"name": "stderr"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "WwtuVRcfMNFQ",
"colab_type": "code",
"outputId": "258cb255-fc74-41a8-fe95-9a0b85b93286",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 266
}
},
"source": [
"# The StandardScalar cell (below) showed an error message regarding a string being present so it is being located and changed to numeric. The change is then confirmed.\n",
"print (df[df['Cellulitis'].apply(lambda x: isinstance(x, str))])\n",
"df['Cellulitis'] = pd.to_numeric(df['Cellulitis'], errors='coerce')\n",
"print (df[df['Cellulitis'].apply(lambda x: isinstance(x, str))])"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
" BMI Sex NIDDM IDDM ... Smoke_0 Smoke_1 Smoke_2 Smoke_3\n",
"5 32.900000 1 0 1.0 ... 1 0 0 0\n",
"93 49.600000 0 1 0.0 ... 0 0 1 0\n",
"110 45.200000 0 0 1.0 ... 0 0 1 0\n",
"140 33.500000 1 0 1.0 ... 1 0 0 0\n",
"292 33.973364 1 1 NaN ... 0 0 0 1\n",
"307 40.700000 0 1 0.0 ... 0 0 0 1\n",
"481 36.400000 0 1 0.0 ... 0 0 1 0\n",
"732 28.700000 0 1 0.0 ... 0 0 0 1\n",
"\n",
"[8 rows x 15 columns]\n",
"Empty DataFrame\n",
"Columns: [BMI, Sex, NIDDM, IDDM, PVD, Neuro, Hyper, Ulcer, Cellulitis, CellulitisAge, UlcerAge, Smoke_0, Smoke_1, Smoke_2, Smoke_3]\n",
"Index: []\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "6hI8o75t5YeK",
"colab_type": "code",
"outputId": "e704bcbf-0ef3-426d-9b91-0e3726c0b048",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 106
}
},
"source": [
"# There was an error message regarding the presence of non-integers further on. If the data set had been larger those rows would just have been dropped. \n",
"# Since there are only 760 rows, and the correct information was obtainable, the non-integers were corrected. The first two codes (which are now commented out) \n",
"# were used to determine the number of rows and the order of the columns. The third and fourth codes (which are commented out) were used \n",
"# to consecutively print 50 rows at a time (so that all would be visible) bringing up rows to examine them.The columns were divided so that all would be visible. The corrections were then made.\n",
"# print(df.shape)\n",
"# print(df.columns)\n",
"# print(df.loc[730:735, 'BMI':'Hyper'])\n",
"# print(df.loc[0:50, 'Cellulitis':'Smoke_3'])\n",
"df['PVD'].loc[[18, 122, 215]] = 0\n",
"df['Hyper'].loc[215] = 0\n",
"df['IDDM'].loc[[292, 427, 526, 543]] = 0\n",
"df['Neuro'].loc[[526, 533, 543]] = 0\n",
"df['Cellulitis'].loc[[5, 93, 110, 140, 481]] = 1\n",
"df['Cellulitis'].loc[[292, 307, 732]] = 0"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"/usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py:671: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" self._setitem_with_indexer(indexer, value)\n"
],
"name": "stderr"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "rQcjPW5o3PaI",
"colab_type": "code",
"outputId": "2d9d412d-901b-4343-b434-931922a50349",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 979
}
},
"source": [
"# !pip install git+git://github.com/fchollet/keras.git --upgrade --no-deps\n",
"!pip install tensorflow==1.14.0\n",
"!pip install keras\n",
"import tensorflow\n",
"from keras.models import Sequential\n",
"from keras.layers import Dense\n",
"from keras.utils import to_categorical\n",
"from keras.layers import BatchNormalization\n",
"from sklearn.model_selection import RandomizedSearchCV\n",
"from keras.wrappers.scikit_learn import KerasClassifier\n",
"from sklearn.model_selection import cross_val_score\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.preprocessing import StandardScaler"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Requirement already satisfied: tensorflow==1.14.0 in /usr/local/lib/python3.6/dist-packages (1.14.0)\n",
"Requirement already satisfied: absl-py>=0.7.0 in /usr/local/lib/python3.6/dist-packages (from tensorflow==1.14.0) (0.9.0)\n",
"Requirement already satisfied: google-pasta>=0.1.6 in /usr/local/lib/python3.6/dist-packages (from tensorflow==1.14.0) (0.2.0)\n",
"Requirement already satisfied: six>=1.10.0 in /usr/local/lib/python3.6/dist-packages (from tensorflow==1.14.0) (1.12.0)\n",
"Requirement already satisfied: tensorflow-estimator<1.15.0rc0,>=1.14.0rc0 in /usr/local/lib/python3.6/dist-packages (from tensorflow==1.14.0) (1.14.0)\n",
"Requirement already satisfied: gast>=0.2.0 in /usr/local/lib/python3.6/dist-packages (from tensorflow==1.14.0) (0.3.3)\n",
"Requirement already satisfied: astor>=0.6.0 in /usr/local/lib/python3.6/dist-packages (from tensorflow==1.14.0) (0.8.1)\n",
"Requirement already satisfied: wrapt>=1.11.1 in /usr/local/lib/python3.6/dist-packages (from tensorflow==1.14.0) (1.12.1)\n",
"Requirement already satisfied: keras-preprocessing>=1.0.5 in /usr/local/lib/python3.6/dist-packages (from tensorflow==1.14.0) (1.1.0)\n",
"Requirement already satisfied: wheel>=0.26 in /usr/local/lib/python3.6/dist-packages (from tensorflow==1.14.0) (0.34.2)\n",
"Requirement already satisfied: termcolor>=1.1.0 in /usr/local/lib/python3.6/dist-packages (from tensorflow==1.14.0) (1.1.0)\n",
"Requirement already satisfied: tensorboard<1.15.0,>=1.14.0 in /usr/local/lib/python3.6/dist-packages (from tensorflow==1.14.0) (1.14.0)\n",
"Requirement already satisfied: numpy<2.0,>=1.14.5 in /usr/local/lib/python3.6/dist-packages (from tensorflow==1.14.0) (1.18.3)\n",
"Requirement already satisfied: keras-applications>=1.0.6 in /usr/local/lib/python3.6/dist-packages (from tensorflow==1.14.0) (1.0.8)\n",
"Requirement already satisfied: protobuf>=3.6.1 in /usr/local/lib/python3.6/dist-packages (from tensorflow==1.14.0) (3.10.0)\n",
"Requirement already satisfied: grpcio>=1.8.6 in /usr/local/lib/python3.6/dist-packages (from tensorflow==1.14.0) (1.28.1)\n",
"Requirement already satisfied: markdown>=2.6.8 in /usr/local/lib/python3.6/dist-packages (from tensorboard<1.15.0,>=1.14.0->tensorflow==1.14.0) (3.2.1)\n",
"Requirement already satisfied: werkzeug>=0.11.15 in /usr/local/lib/python3.6/dist-packages (from tensorboard<1.15.0,>=1.14.0->tensorflow==1.14.0) (1.0.1)\n",
"Requirement already satisfied: setuptools>=41.0.0 in /usr/local/lib/python3.6/dist-packages (from tensorboard<1.15.0,>=1.14.0->tensorflow==1.14.0) (46.1.3)\n",
"Requirement already satisfied: h5py in /usr/local/lib/python3.6/dist-packages (from keras-applications>=1.0.6->tensorflow==1.14.0) (2.10.0)\n",
"Requirement already satisfied: keras in /usr/local/lib/python3.6/dist-packages (2.3.1)\n",
"Requirement already satisfied: numpy>=1.9.1 in /usr/local/lib/python3.6/dist-packages (from keras) (1.18.3)\n",
"Requirement already satisfied: pyyaml in /usr/local/lib/python3.6/dist-packages (from keras) (3.13)\n",
"Requirement already satisfied: h5py in /usr/local/lib/python3.6/dist-packages (from keras) (2.10.0)\n",
"Requirement already satisfied: keras-applications>=1.0.6 in /usr/local/lib/python3.6/dist-packages (from keras) (1.0.8)\n",
"Requirement already satisfied: keras-preprocessing>=1.0.5 in /usr/local/lib/python3.6/dist-packages (from keras) (1.1.0)\n",
"Requirement already satisfied: scipy>=0.14 in /usr/local/lib/python3.6/dist-packages (from keras) (1.4.1)\n",
"Requirement already satisfied: six>=1.9.0 in /usr/local/lib/python3.6/dist-packages (from keras) (1.12.0)\n"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
"/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:516: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
" _np_qint8 = np.dtype([(\"qint8\", np.int8, 1)])\n",
"/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:517: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
" _np_quint8 = np.dtype([(\"quint8\", np.uint8, 1)])\n",
"/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:518: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
" _np_qint16 = np.dtype([(\"qint16\", np.int16, 1)])\n",
"/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:519: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
" _np_quint16 = np.dtype([(\"quint16\", np.uint16, 1)])\n",
"/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:520: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
" _np_qint32 = np.dtype([(\"qint32\", np.int32, 1)])\n",
"/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/dtypes.py:525: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
" np_resource = np.dtype([(\"resource\", np.ubyte, 1)])\n",
"/usr/local/lib/python3.6/dist-packages/tensorboard/compat/tensorflow_stub/dtypes.py:541: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
" _np_qint8 = np.dtype([(\"qint8\", np.int8, 1)])\n",
"/usr/local/lib/python3.6/dist-packages/tensorboard/compat/tensorflow_stub/dtypes.py:542: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
" _np_quint8 = np.dtype([(\"quint8\", np.uint8, 1)])\n",
"/usr/local/lib/python3.6/dist-packages/tensorboard/compat/tensorflow_stub/dtypes.py:543: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
" _np_qint16 = np.dtype([(\"qint16\", np.int16, 1)])\n",
"/usr/local/lib/python3.6/dist-packages/tensorboard/compat/tensorflow_stub/dtypes.py:544: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
" _np_quint16 = np.dtype([(\"quint16\", np.uint16, 1)])\n",
"/usr/local/lib/python3.6/dist-packages/tensorboard/compat/tensorflow_stub/dtypes.py:545: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
" _np_qint32 = np.dtype([(\"qint32\", np.int32, 1)])\n",
"/usr/local/lib/python3.6/dist-packages/tensorboard/compat/tensorflow_stub/dtypes.py:550: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
" np_resource = np.dtype([(\"resource\", np.ubyte, 1)])\n",
"Using TensorFlow backend.\n"
],
"name": "stderr"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "DXYy2qKqBv6n",
"colab_type": "code",
"colab": {}
},
"source": [
"# The features and target are separated into 'X' and 'y'.'X' is then standardized.\n",
"y = df['Ulcer'].copy().values #values makes dataframe into array to correct if order changes lose column names and index\n",
"X = df.drop(['Ulcer'], axis=1).copy().values\n",
"SS_scaler = StandardScaler()\n",
"X = SS_scaler.fit_transform(X)\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=123)\n",
"# X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)\n",
"# X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.25, random_state=1) # 0.25 x 0.8 = 0.2"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "9dgyzF0spQtZ",
"colab_type": "text"
},
"source": [
"In the creation of the model, dropout layers as well as l1 and l2 regularization were attempted, but they did not improve the accuracy. \n",
"The number of layers had to be kept low since too many neurons are not indicated for a small data set. \n",
"A larger data set would allow for a more complex model which could yield more accurate results. This could be achieved by a larger medical organization or the combining of records from many offices. "
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "f_aymyqqBoYe",
"outputId": "bb83725d-0670-4fd1-9cf2-ba09da8910e9",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 266
}
},
"source": [
"# The model is created. A wrapper is needed so that cross validation can be performed within the keras framework. \n",
"def buildModel():\n",
" model = Sequential() # can put parameters like input_dim and change when run\n",
" model.add(Dense(5, input_dim=X_train.shape[1], activation='relu')) \n",
" model.add(Dense(4, activation='sigmoid')) \n",
" model.add(Dense(1, activation=None)) \n",
" model.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics=['accuracy']) \n",
" return model\n",
"model = buildModel()\n",
"model.summary()\n"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Model: \"sequential_12\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"dense_34 (Dense) (None, 5) 75 \n",
"_________________________________________________________________\n",
"dense_35 (Dense) (None, 4) 24 \n",
"_________________________________________________________________\n",
"dense_36 (Dense) (None, 1) 5 \n",
"=================================================================\n",
"Total params: 104\n",
"Trainable params: 104\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "t8-XJAIiEvNh",
"colab_type": "code",
"outputId": "ed97c44b-e1b0-4ddf-ff73-c7ea1cbd7a25",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 284
}
},
"source": [
"# Early stopping is instituted in case the val_loss stops improving.\n",
"from keras.callbacks import EarlyStopping\n",
"es = EarlyStopping(monitor='val_loss', mode='min', verbose=1, patience=int(5)) \n",
"model.fit(X_train, y_train, epochs = 30, validation_split=0.2, batch_size=32, callbacks=[es]) #batch_size default is 32.Increase by 2.validation_data=(X_val, y_val)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Train on 483 samples, validate on 121 samples\n",
"Epoch 1/30\n",
"483/483 [==============================] - 0s 76us/step - loss: 3.1936 - accuracy: 0.3934 - val_loss: 3.6969 - val_accuracy: 0.4050\n",
"Epoch 2/30\n",
"483/483 [==============================] - 0s 65us/step - loss: 3.1936 - accuracy: 0.3934 - val_loss: 3.6969 - val_accuracy: 0.4050\n",
"Epoch 3/30\n",
"483/483 [==============================] - 0s 62us/step - loss: 3.1936 - accuracy: 0.3934 - val_loss: 3.6969 - val_accuracy: 0.4050\n",
"Epoch 4/30\n",
"483/483 [==============================] - 0s 61us/step - loss: 3.1936 - accuracy: 0.3934 - val_loss: 3.6969 - val_accuracy: 0.4050\n",
"Epoch 5/30\n",
"483/483 [==============================] - 0s 58us/step - loss: 3.1936 - accuracy: 0.3934 - val_loss: 3.6969 - val_accuracy: 0.4050\n",
"Epoch 6/30\n",
"483/483 [==============================] - 0s 58us/step - loss: 3.1936 - accuracy: 0.3934 - val_loss: 3.6969 - val_accuracy: 0.4050\n",
"Epoch 00006: early stopping\n"
],
"name": "stdout"
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
""
]
},
"metadata": {
"tags": []
},
"execution_count": 35
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "k5fbn2FyfULb",
"colab_type": "code",
"outputId": "a0098942-d37d-408f-9aad-6077d06962da",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 408
}
},
"source": [
"# The model is evaluated with various metrics The training and testing accuracy scores are close. This indicated that the model is not overfitted. \n",
"# The result for model.evaluate returns first the loss and then the accuracy.\n",
"\n",
"from sklearn.metrics import accuracy_score, classification_report, roc_auc_score, log_loss, confusion_matrix\n",
"\n",
"print(\"Final loss value:\",model.evaluate(X_train, y_train))\n",
"predTrain = model.predict(X_train) \n",
"predTest = model.predict(X_test) > 0.5 # This is positive for ulcer, has True and False instead of 0 and 1 and is binary\n",
"accuracyTrain = model.evaluate(X_train, y_train)\n",
"accuracyTest = model.evaluate(X_test, y_test)\n",
"accuracyScore = accuracy_score(y_test, predTest)\n",
"ll = log_loss(y_test, predTest)\n",
"auc = roc_auc_score(y_test, predTest)\n",
"classReport = classification_report(y_test, predTest)\n",
"conf_mat = confusion_matrix(y_test, predTest)\n",
"print('Accuracy of Training Data:', accuracyTrain)\n",
"print('Accuracy of Testing Data:', accuracyTest)\n",
"print('Accuracy Score:', accuracyScore)\n",
"print('Log loss:', ll)\n",
"print('AUC:', auc)\n",
"print('Classification Report:') \n",
"print(classReport)\n",
"print('Confusion Matrix:') \n",
"print(conf_mat)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"604/604 [==============================] - 0s 191us/step\n",
"Final loss value: [1.5998280403629834, 0.2665562927722931]\n",
"604/604 [==============================] - 0s 30us/step\n",
"151/151 [==============================] - 0s 87us/step\n",
"Accuracy of Training Data: [1.5998280403629834, 0.2665562927722931]\n",
"Accuracy of Testing Data: [1.5381499742040572, 0.21854305267333984]\n",
"Accuracy Score: 0.2185430463576159\n",
"Log loss: 26.991186539727106\n",
"AUC: 0.5127692307692308\n",
"Classification Report:\n",
" precision recall f1-score support\n",
"\n",
" 0 0.89 0.06 0.12 125\n",
" 1 0.18 0.96 0.30 26\n",
"\n",
" accuracy 0.22 151\n",
" macro avg 0.53 0.51 0.21 151\n",
"weighted avg 0.77 0.22 0.15 151\n",
"\n",
"Confusion Matrix:\n",
"[[ 8 117]\n",
" [ 1 25]]\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ieinzB6cGcRB",
"colab_type": "code",
"outputId": "1c4f15ce-a953-4458-8041-b2864b6f8212",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 230
}
},
"source": [
"# Determine the cross validation score. The mean accuracy is lower, a larger data set would give a better indication.\n",
"from sklearn.model_selection import cross_val_score\n",
"def scorer(model, X, y):\n",
" return accuracy_score(y, model.predict(X))\n",
"model2 = KerasClassifier(buildModel)\n",
"# Check how your keras model performs with 5 fold cross-validation\n",
"kfold = cross_val_score(model2, X, y, cv=5, scoring=scorer)\n",
"# Print the mean accuracy per fold\n",
"print('Mean Accuracy Per Fold:', kfold.mean())\n",
"# Print the standard deviation per fold\n",
"print('Standard Deviation Per Fold:', kfold.std())"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"Epoch 1/1\n",
"604/604 [==============================] - 0s 281us/step - loss: 2.0555 - accuracy: 0.7980\n",
"Epoch 1/1\n",
"604/604 [==============================] - 0s 283us/step - loss: 2.9910 - accuracy: 0.7036\n",
"Epoch 1/1\n",
"604/604 [==============================] - 0s 302us/step - loss: 3.2178 - accuracy: 0.0000e+00\n",
"Epoch 1/1\n",
"604/604 [==============================] - 0s 314us/step - loss: 0.5574 - accuracy: 0.7914\n",
"Epoch 1/1\n",
"604/604 [==============================] - 0s 332us/step - loss: 3.0901 - accuracy: 0.0033\n",
"Mean Accuracy Per Fold: 0.7960264900662253\n",
"Standard Deviation Per Fold: 0.019375813030897752\n"
],
"name": "stdout"
}
]
}
]
}