Commit 14e90bb1 authored by Simon Clarke's avatar Simon Clarke
Browse files

Added solution notebooks

parent 80fe1017
%% Cell type:markdown id: tags:
# Imputing Missing Data
%% Cell type:markdown id: tags:
In this notebook we investigate ways for dealing with missing data using Scikit-Learn's imputation routines. There are three main routines we will discuss: `SimpleImputer`, `KNNImputer` and `IterativeImputer`. We will also only discuss imputing continuous, numerical values, for imputing categorical values possible approaches are using the mode or the `KNNImputer`.
We will use the [Pima Indians Diabetes Dataset](https://www.kaggle.com/uciml/pima-indians-diabetes-database), which can be downloaded from [Monash Gitlab](https://gitlab.erc.monash.edu.au/bads/data-challenges-resources/-/tree/main/Machine-Learning/Imputation/pima_indians_diabetes.csv). This aims to predict whether the patient has diabetes from a number of diagnostic measurements. All patients are females of Pima Indian heritage, who are at least 21 years old.
Previously, we have dealt with missing data by deleting that entry. However, that means losing valuable data which contributes to the training of your model. A better approach is to impute the data, i.e., infer the missing data from the existing observations.
We will concentrate here on Scikit-Learn's imputation routines, although some of the techniques, such as replacement of values with the mean or mode, can be easily implemented in Pandas.
%% Cell type:markdown id: tags:
## Contents
%% Cell type:markdown id: tags:
* Introduction
* Cross-validation analysis
* Exercises
%% Cell type:markdown id: tags:
## Introduction
%% Cell type:code id: tags:
``` python
We first import the standard libraries and the csv file.
```
%% Cell type:code id: tags:
``` python
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings("ignore")
pima = pd.read_csv("pima_indians_diabetes.csv")
```
%% Cell type:markdown id: tags:
We can now view a random sample of the data. In the columns `BloodPressure`, `SkinThickness` and `Insulin` there are values of 0, which are clearly not physical. This is indicative of missing values.
%% Cell type:code id: tags:
``` python
pima.sample(20)
```
%%%% Output: execute_result
Pregnancies Glucose BloodPressure SkinThickness Insulin BMI \
652 5 123 74 40 77 34.1
219 5 112 66 0 0 37.8
205 5 111 72 28 0 23.9
359 1 196 76 36 249 36.5
672 10 68 106 23 49 35.5
402 5 136 84 41 88 35.0
626 0 125 68 0 0 24.7
564 0 91 80 0 0 32.4
34 10 122 78 31 0 27.6
68 1 95 66 13 38 19.6
639 1 100 74 12 46 19.5
400 4 95 64 0 0 32.0
314 7 109 80 31 0 35.9
508 2 84 50 23 76 30.4
105 1 126 56 29 152 28.7
35 4 103 60 33 192 24.0
164 0 131 88 0 0 31.6
244 2 146 76 35 194 38.2
220 0 177 60 29 478 34.6
11 10 168 74 0 0 38.0
DiabetesPedigreeFunction Age Outcome
652 0.269 28 0
219 0.261 41 1
205 0.407 27 0
359 0.875 29 1
672 0.285 47 0
402 0.286 35 1
626 0.206 21 0
564 0.601 27 0
34 0.512 45 0
68 0.334 25 0
639 0.149 28 0
400 0.161 31 1
314 1.127 43 1
508 0.968 21 0
105 0.801 21 0
35 0.966 33 0
164 0.743 32 1
244 0.329 29 0
220 1.072 21 1
11 0.537 34 1
%% Cell type:markdown id: tags:
This can be investigated further by displaying the descriptive statistics, for which it is apparent that `Glucose` and `BMI` also have unrealistic values of 0. A value of 0 for `Pregnancies` is a physically realistic value.
%% Cell type:code id: tags:
``` python
pima.describe()
```
%%%% Output: execute_result
Pregnancies Glucose BloodPressure SkinThickness Insulin \
count 768.000000 768.000000 768.000000 768.000000 768.000000
mean 3.845052 120.894531 69.105469 20.536458 79.799479
std 3.369578 31.972618 19.355807 15.952218 115.244002
min 0.000000 0.000000 0.000000 0.000000 0.000000
25% 1.000000 99.000000 62.000000 0.000000 0.000000
50% 3.000000 117.000000 72.000000 23.000000 30.500000
75% 6.000000 140.250000 80.000000 32.000000 127.250000
max 17.000000 199.000000 122.000000 99.000000 846.000000
BMI DiabetesPedigreeFunction Age Outcome
count 768.000000 768.000000 768.000000 768.000000
mean 31.992578 0.471876 33.240885 0.348958
std 7.884160 0.331329 11.760232 0.476951
min 0.000000 0.078000 21.000000 0.000000
25% 27.300000 0.243750 24.000000 0.000000
50% 32.000000 0.372500 29.000000 0.000000
75% 36.600000 0.626250 41.000000 1.000000
max 67.100000 2.420000 81.000000 1.000000
%% Cell type:markdown id: tags:
To see how many 0 values there are in these fields, we can sum the number of rows which match this criteria. The two fields with the most missing values are `SkinThickness` and `Insulin`.
%% Cell type:code id: tags:
``` python
print((pima[['Glucose', 'BloodPressure', 'SkinThickness', 'Insulin', 'BMI']] == 0).sum())
```
%% Cell type:markdown id: tags:
Since 0 is a valid entry in `Pregnancies` and `Outcome`, it is easiest to mark the missing values as NaN (not a number). This is the default for missing values for the sklearn imputation routines. Marking the values as NaN gives the same number of missing entries as previously.
%% Cell type:code id: tags:
``` python
pima[['Glucose', 'BloodPressure', 'SkinThickness', 'Insulin', 'BMI']] = \
pima[['Glucose', 'BloodPressure', 'SkinThickness', 'Insulin', 'BMI']].replace(0, np.NaN)
print(pima.isnull().sum())
```
%% Cell type:markdown id: tags:
We now set up a simple random forest model to investigate the effect of a selection of different imputation methods on the accuracy and feature importance. The function below creates a random forest model for the diabetes data, prints the accuracy and feature importance in descending order.
%% Cell type:code id: tags:
``` python
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
def rf_model(pimadf):
Xf = pimadf.drop(columns=['Outcome'])
Yf = np.ravel(pimadf[['Outcome']])
X_train, X_test, Y_train, Y_test = train_test_split(Xf, Yf, test_size=0.2, random_state=0)
rfc = RandomForestClassifier()
rfc.fit(X_train, Y_train) # fit the data to the model
Y_pred = rfc.predict(X_test)
acc = accuracy_score(Y_test,Y_pred)
print("Testing score is %5.3f" % acc)
feature_importances = pd.DataFrame(rfc.feature_importances_,
index = X_train.columns,
columns=['Importance']).sort_values('Importance', ascending=False)
print(feature_importances)
```
%% Cell type:markdown id: tags:
The first example is to drop all rows which have a missing value. This results in approximately half of the dataset being dropped. For this data one of the most important features is `Insulin`, which is the feature with the most missing values.
%% Cell type:code id: tags:
``` python
pima_drop = pima.copy()
pima_drop.dropna(inplace=True)
print('Dropping rows')
print('Shape of array',pima_drop.shape)
print('Shape of original array',pima.shape)
rf_model(pima_drop)
```
%% Cell type:markdown id: tags:
For reference we can plot the distribution of `Insulin` and `SkinThickness` to investigate how different imputation methods affect this. For the other features with missing values the distributions will not be significantly affected, and the exact imputation method probably is not critical to the model.
%% Cell type:code id: tags:
``` python
fig, axes = plt.subplots(1, 2, figsize=(10,4))
sns.histplot(pima_drop, x="Insulin", stat="density", ax = axes[0])
sns.histplot(pima_drop, x="SkinThickness", stat="density", ax = axes[1])
axes[1].set_xlim(0,100)
axes[1].set_ylim(0,0.06)
```
%%%% Output: execute_result
(0.0, 0.06)
%%%% Output: display_data
![](data:image/png;base64,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)
%% Cell type:markdown id: tags:
Replacing the missing values with the mean or the median now results in a decrease in the accuracy of the model, and the feature importance of `SkinThickness` and `Insulin` being ranked very low. This is understandable, as replacing the missing values with a constant results in the reduction of the variance of the feature.
%% Cell type:code id: tags:
``` python
pima_mean = pima.copy()
pima_mean.fillna(pima_mean.mean(), inplace=True)
print('Imputation using mean')
rf_model(pima_mean)
```
%% Cell type:code id: tags:
``` python
pima_median = pima.copy()
pima_median.fillna(pima_mean.median(), inplace=True)
print('Imputation using median')
rf_model(pima_median)
```
%% Cell type:markdown id: tags:
This reduction in variance can be clearly seen by plotting the distributions of the mean and median datasets. For both, the plots are now dominated by a single peak.
%% Cell type:code id: tags:
``` python
fig, axes = plt.subplots(2, 2, figsize=(10,7))
sns.histplot(pima_mean, x="Insulin", stat="density", ax = axes[0,0])
axes[0,0].set_xlabel('Insulin - Mean')
sns.histplot(pima_median, x="Insulin", stat="density", ax = axes[1,0])
axes[1,0].set_xlabel('Insulin - Median')
sns.histplot(pima_mean, x="SkinThickness", stat="density", ax = axes[0,1])
axes[0,1].set_xlabel('SkinThickness - Mean')
sns.histplot(pima_median, x="SkinThickness", stat="density", ax = axes[1,1])
axes[1,1].set_xlabel('SkinThickness - Median');
```
%%%% Output: display_data
![](data:image/png;base64,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)
%% Cell type:markdown id: tags:
The first machine learning imputer we consider is the k-Nearest Neighbours imputer. This iterates through all the missing values, treating each one as a label, and then finds the corresponding label of its k-Nearest Neighbours. This will be affected by the distance metric that is used, the number of neighbours and the order that the features are imputed. In this case we use the default values and 5 neighbours.
Now the accuracy is approximately the same as for the dataset where we dropped the rows, and higher than using the mean and median. Also, since the ranking of features is more consistent with the original dataset.
%% Cell type:code id: tags:
``` python
from sklearn.impute import KNNImputer
pima_knnn = pima.copy()
X = pima_knnn.iloc[:,0:8]
Xm = X.mean()
Xs = X.std()
X = (X-X.mean())/X.std()
Xt = KNNImputer(n_neighbors=5).fit_transform(X)
pima_knnn.iloc[:,0:8] = Xt
print('Imputation using k-Nearest Neighbours')
pima_knnn.iloc[:,0:8] = Xs*pima_knnn.iloc[:,0:8]+Xm
rf_model(pima_knnn)
```
%% Cell type:markdown id: tags:
The second method we consider is the sklearn `IterativeImputer`. This is an experimental addition to sklearn, so needs to be enabled as well as imported. As it is experimental, it may change in future versions.
`IterativeImputer` works be marking the missing values, and then repeating the imputation process N times or until the data converges. Initially the missing values are set using a simple scheme, such as being replaced by the mean or median. Then on each iteration a machine learning algorithm is used as a regressor to update each column which is marked as having missing values. The non-missing values are used to train the model, and then the model is used to predict the missing values. Any regression technique could be used to predict the missing values. Common ones that are used are BayesianRidge, k-Nearest Neighbours and Random Forest Regression. Using this algorithm with Random Forest Regression is equivalent to the R routine `missForest`. The routine `KNNImputer` can be seen as `IterativeImputer` with one iteration.
In this example, we use the default algorithm, BayesianRidge. This gives that the testing score slightly, however the feature importance is consistent with the original dataset and the results of `KNNImputer`.
%% Cell type:code id: tags:
``` python
from sklearn.experimental import enable_iterative_imputer
from sklearn.impute import IterativeImputer
pima_ii = pima.copy()
X = pima_ii.iloc[:,0:8]
Xm = X.mean()
Xs = X.std()
X = (X-X.mean())/X.std()
Xt = IterativeImputer(max_iter=20).fit_transform(X)
pima_ii.iloc[:,0:8] = Xt
print('Iterative imputation using Bayesian Ridge')
pima_ii.iloc[:,0:8] = Xs*pima_ii.iloc[:,0:8]+Xm
rf_model(pima_ii)
```
%% Cell type:markdown id: tags:
Plotting the distributions shows that the `KNNImputer` and `IterativeImputer` gives similar results for `Insulin`, but that `IterativeImputer` seems to give a distribution which is more consistent with the original dataset for `SkinThickness`.
%% Cell type:code id: tags:
``` python
fig, axes = plt.subplots(3, 2, figsize=(10,10))
sns.histplot(pima_drop, x="Insulin", stat="density", ax = axes[0,0])
axes[0,0].set_xlabel('Insulin - Drop Rows')
sns.histplot(pima_knnn, x="Insulin", stat="density", ax = axes[1,0])
axes[1,0].set_xlabel('Insulin - kNN')
sns.histplot(pima_ii, x="Insulin", stat="density", ax = axes[2,0])
axes[2,0].set_xlabel('Insulin - Iterative Imputer')
sns.histplot(pima_drop, x="SkinThickness", stat="density", ax = axes[0,1])
axes[0,1].set_xlabel('SkinThickness - Drop Rows')
axes[0,1].set_xlim(0,100)
axes[0,1].set_ylim(0,0.06)
sns.histplot(pima_knnn, x="SkinThickness", stat="density", ax = axes[1,1])
axes[1,1].set_xlabel('SkinThickness - kNN')
axes[1,1].set_xlim(0,100)
axes[1,1].set_ylim(0,0.06)
sns.histplot(pima_ii, x="SkinThickness", stat="density", ax = axes[2,1])
axes[2,1].set_xlabel('SkinThickness - Iterative Imputer')
axes[2,1].set_xlim(0,100)
axes[2,1].set_ylim(0,0.06)
```
%%%% Output: execute_result
(0.0, 0.06)
%%%% Output: display_data
![](data:image/png;base64,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)
%% Cell type:markdown id: tags:
## Cross-validation analysis
%% Cell type:markdown id: tags:
For all the examples so far we have only consider one realisation of the Random Forest Regressor. To understand the effectiveness of the various imputation algorithms we need to combine this with cross validation. The following code consider the variation of the f1-score using Logistic Regression for the imputation strategies:
* Drop rows with missing values.
* Simple imputation using the mean.
* Simple imputation using the median.
* k-Nearest Neighbours imputation.
* Iterative imputation using:
* BayesianRidge,
* DecisionTreeRegressor,
* RandomForestRegressor,
* k-Nearest Neighbours Regression.
The individual scores for each run are stored in a dataframe, for which we can finally investigate the descriptive statistics.
%% Cell type:code id: tags:
``` python
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import RepeatedKFold
N_SPLITS = RepeatedKFold(n_splits=5, n_repeats=3, random_state=1)
classifier = LogisticRegression(solver='newton-cg', C=1.e3)
score = 'f1'
X_full = pima_drop.drop(columns=['Outcome'])
Y_full = np.ravel(pima_drop[['Outcome']])
score_drop = pd.DataFrame(
cross_val_score(
classifier, X_full, Y_full, scoring=score, cv=N_SPLITS
),
columns=['Drop Data']
)
```
%% Cell type:code id: tags:
``` python
from sklearn.impute import SimpleImputer
from sklearn.pipeline import make_pipeline
# Estimate the score after imputation (mean and median strategies)
X_missing = pima.drop(columns=['Outcome'])
Y_missing = np.ravel(pima[['Outcome']])
score_simple_imputer = pd.DataFrame()
for strategy in ('mean', 'median'):
estimator = make_pipeline(
SimpleImputer(missing_values=np.nan, strategy=strategy),
classifier
)
score_simple_imputer[strategy] = cross_val_score(
estimator, X_missing, Y_missing, scoring=score, cv=N_SPLITS
)
```
%% Cell type:code id: tags:
``` python
from sklearn.impute import KNNImputer
score_knn_imputer = pd.DataFrame()
estimator = make_pipeline(
KNNImputer(n_neighbors=15),
classifier
)
score_knn_imputer['KNeighborsRegressor'] = cross_val_score(
estimator, X_missing, Y_missing, scoring=score, cv=N_SPLITS
)
```
%% Cell type:code id: tags:
``` python
from sklearn.linear_model import BayesianRidge
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.neighbors import KNeighborsRegressor
estimators = [
BayesianRidge(),
DecisionTreeRegressor(random_state=0),
RandomForestRegressor(random_state=0),
KNeighborsRegressor(n_neighbors=15)
]
score_iterative_imputer = pd.DataFrame()
for impute_estimator in estimators:
estimator = make_pipeline(
IterativeImputer(random_state=0, estimator=impute_estimator, max_iter=10),
classifier
)
score_iterative_imputer[impute_estimator.__class__.__name__] = \
cross_val_score(
estimator, X_missing, Y_missing, scoring=score, cv=N_SPLITS
)
```
%% Cell type:markdown id: tags:
We can now investigate the descriptive statistics for each imputation method in tabular and graphical format. The green dots in the figure represent the mean values for each method.
The first thing to note is that by using imputation with the full dataset, the variance of the model has been reduced significantly, which suggests that the `Drop Data` model suffers from overfitting. This is consistent with the fact that one way to reduce overfitting is to increase the amount of data. In general, as the complexity of the imputer is increased the accuracy also increases, though the result is dependent on the underlying strategy.
For this example, the best methods for imputation seem to:
* Simple imputation using the median.
* Iterative imputation using:
* BayesianRidge,
* RandomForestRegressor.
As with most modelling the final strategy for imputation depends on the model that you use, and should be decided on after extensive initial testing.
%% Cell type:code id: tags:
``` python
scores = pd.concat(
[score_drop, score_simple_imputer, score_knn_imputer, score_iterative_imputer],
keys=['Original', 'SimpleImputer', 'KNN', 'IterativeImputer'], axis=1
)
scores.describe()
```
%%%% Output: execute_result
Original SimpleImputer KNN \
Drop Data mean median KNeighborsRegressor
count 15.000000 15.000000 15.000000 15.000000
mean 0.625292 0.632006 0.630530 0.634507
std 0.093487 0.028496 0.028269 0.029221
min 0.387097 0.589474 0.589474 0.589474
25% 0.588040 0.606338 0.604167 0.605114
50% 0.641509 0.639175 0.633663 0.640777
75% 0.673333 0.653870 0.648134 0.659567
max 0.740741 0.675000 0.675000 0.674157
IterativeImputer \
BayesianRidge DecisionTreeRegressor RandomForestRegressor
count 15.000000 15.000000 15.000000
mean 0.637322 0.626273 0.633008
std 0.032623 0.033283 0.028420
min 0.589474 0.571429 0.589474
25% 0.608206 0.600885 0.610594
50% 0.633663 0.631579 0.628571
75% 0.663522 0.654536 0.659471
max 0.688889 0.673913 0.674157
KNeighborsRegressor
count 15.000000
mean 0.627713
std 0.024185
min 0.589474
25% 0.605454
50% 0.629213
75% 0.649111
max 0.659091
%% Cell type:code id: tags:
``` python
# plot results
fig, ax = plt.subplots(figsize=(13, 6))
scores.plot.box(showmeans=True, vert=False, ax=ax)
ax.set_title('Pima Indian Diabetes Classification with Different Imputation Methods')
ax.set_xlabel('Accuracy (larger is better)')
plt.show()
```
%%%% Output: display_data
![](data:image/png;base64,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