Unverified Commit 653f1ad3 authored by Simon Bowly's avatar Simon Bowly
Browse files

Week 5 ADS1002 notebook.

parent 411a5979
%% Cell type:markdown id: tags:
## Multivariate Linear Regression
* Topic: Supervised machine learning
* Unit: ADS1002
* Level: Beginner
* Authors: Simon Bowly
* Version: 3
Required files (download these from [the Gitlab site](https://gitlab.erc.monash.edu.au/bads/data-challenges-resources/-/tree/main/Machine-Learning/Supervised-Methods/Regression) into the same directory as the notebook on your computer):
* [Diabetes_Data.csv](https://gitlab.erc.monash.edu.au/bads/data-challenges-resources/-/tree/main/Machine-Learning/Supervised-Methods/Regression/Diabetes_Data.csv)
The objective of this notebook is to demonstrate how to build linear regression models with many features, extending the simple one- and two-variable regression models we have looked at so far. We'll use the model fitting methods in `sklearn` to determine the model parameters, and perform train-test splitting in order to assess the generalisabilty of the fitted models. We'll also look at the impact of feature normalisation on model parameters.
%% Cell type:code id: tags:
``` python
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
from sklearn.model_selection import train_test_split # for splitting the data into training and testing sets
from sklearn.linear_model import LinearRegression # models we are going to use
from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error # for comparing the predicted and test values
import seaborn as sns
df = pd.read_csv('Diabetes_Data.csv') # read the Diabetes dataset in to a pandas dataframe
```
%% Cell type:markdown id: tags:
### Data Analysis
`BP` is blood pressure, `BMI` is body mass index (healthy range for adults is 18.5 to 25) and `S1`-`S6` are various blood serum measurements. `Y` is the target variable, and is a measure of disease progression one year after the original measurements. Aim is to predict `Y` from the other variables.
We can look at the first few values of the variables, and at the descriptive statistics.
%% Cell type:code id: tags:
``` python
df.head()
```
%%%% Output: execute_result
AGE SEX BMI BP S1 S2 S3 S4 S5 S6 Y
0 59 2 32.1 101.0 157 93.2 38.0 4.0 4.8598 87 151
1 48 1 21.6 87.0 183 103.2 70.0 3.0 3.8918 69 75
2 72 2 30.5 93.0 156 93.6 41.0 4.0 4.6728 85 141
3 24 1 25.3 84.0 198 131.4 40.0 5.0 4.8903 89 206
4 50 1 23.0 101.0 192 125.4 52.0 4.0 4.2905 80 135
%% Cell type:code id: tags:
``` python
df.describe()
```
%%%% Output: execute_result
AGE SEX BMI BP S1 S2 \
count 442.000000 442.000000 442.000000 442.000000 442.000000 442.000000
mean 48.518100 1.468326 26.375792 94.647014 189.140271 115.439140
std 13.109028 0.499561 4.418122 13.831283 34.608052 30.413081
min 19.000000 1.000000 18.000000 62.000000 97.000000 41.600000
25% 38.250000 1.000000 23.200000 84.000000 164.250000 96.050000
50% 50.000000 1.000000 25.700000 93.000000 186.000000 113.000000
75% 59.000000 2.000000 29.275000 105.000000 209.750000 134.500000
max 79.000000 2.000000 42.200000 133.000000 301.000000 242.400000
S3 S4 S5 S6 Y
count 442.000000 442.000000 442.000000 442.000000 442.000000
mean 49.788462 4.070249 4.641411 91.260181 152.133484
std 12.934202 1.290450 0.522391 11.496335 77.093005
min 22.000000 2.000000 3.258100 58.000000 25.000000
25% 40.250000 3.000000 4.276700 83.250000 87.000000
50% 48.000000 4.000000 4.620050 91.000000 140.500000
75% 57.750000 5.000000 4.997200 98.000000 211.500000
max 99.000000 9.090000 6.107000 124.000000 346.000000
%% Cell type:markdown id: tags:
Here the field `SEX` only has two values.
%% Cell type:code id: tags:
``` python
df['SEX'].unique()
```
%%%% Output: execute_result
array([2, 1])
%% Cell type:markdown id: tags:
Categorical data such as this can be converted to binary columuns using the `sklearn` method `OneHotEncoder`.However, since `SEX` is already binary, there is no need to do this. If we had a field which had three categories, for example, the data came from three different states, then we could create a binary field for each state, with the value 1 if the person is resident in the state and 0 otherwise. For more details see `sklearn.feature_extraction.DictVectorizer` and `sklearn.preprocessing.OneHotEncoder`.
We can look at the variable correlations to search for patterns. `SEX` doesn't seem to be important in predicting `Y`, and `AGE`, `S1` and `S2` are only marginally important. The most important variables seem to be `BMI`, `BP`, `S4` and `S5`. There is a strong correlation between `S1` and `S2`, and `S3` and `S4`.
%% Cell type:code id: tags:
``` python
corrs = df.corr() # calculate the correlation table
# as this is a symmetric table, set up a mask so that we only plot values below the main diagonal
mask = np.triu(np.ones_like(corrs, dtype=bool))
f, ax = plt.subplots(figsize=(10, 8)) # initialise the plots and axes
# plot the correlations as a seaborn heatmap, with a colourbar
sns.heatmap(corrs, mask=mask, center=0, annot=True, square=True, linewidths=.5)
# do some fiddling so that the top and bottom are not obscured
bottom, top = ax.get_ylim()
ax.set_ylim(bottom + 0.5, top - 0.5);
```
%%%% Output: display_data
![](data:image/png;base64,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)
%% Cell type:markdown id: tags:
### Linear Regression
To carry out regression modelling we now create a matrix of independent variables (features) given by `X`, and the dependent or target variable `Y`. Specifically, we are building models of the form:
$$
Y_{pred} = \text{intercept} + c_{\text{age}} \times \text{AGE} + ... + c_{\text{S6}} \times \text{S6}
$$
and fitting the model parameters in order to minimise the cost function:
$$
\sum ( Y - Y_{pred} ) ^ 2
$$
%% Cell type:code id: tags:
``` python
X = df.drop(['Y'],axis=1) # Create a Dataframe without the target variable Y.
Y = df['Y'] # Extract a Series of the target Y values.
```
%% Cell type:markdown id: tags:
Now we split the data into training and testing sets, and model the data using the `sklearn` Linear Regression model. All supervised modelling methods (those with input features and output targets) follow the same key steps process in `sklearn`:
1. Split data into training and testing subsets
2. Instantiate a model type (with parameters)
3. Fit model parameters to the training data
4. Evaluate model performance on the testing data
%% Cell type:code id: tags:
``` python
# Split into a training set with 80% of the data, and a testing set as the remainder.
X_train, X_test, Y_train, Y_test = train_test_split(
X, Y, test_size=0.8,
random_state=np.random.RandomState(31287) # Keeps the 'random' split consistent.
)
# Construct and fit the model
linear = LinearRegression() # Instantatiate the linear regression model
linear.fit(X_train,Y_train) # Fit the model parameters to the training data.
# Evaluate model performance.
training_predictions = linear.predict(X_train) # Get model predictions for both.
testing_predictions = linear.predict(X_test) # training and testing data.
# Create a table of the various scores.
pd.DataFrame({
"R^2": {
"train": r2_score(Y_train, training_predictions),
"test": r2_score(Y_test, testing_predictions)
},
"RMSE": {
"train": mean_squared_error(Y_train, training_predictions, squared=False),
"test": mean_squared_error(Y_test, testing_predictions, squared=False),
},
"MAE": {
"train": mean_absolute_error(Y_train, training_predictions),
"test": mean_absolute_error(Y_test, testing_predictions),
},
})
```
%%%% Output: execute_result
R^2 RMSE MAE
train 0.643135 49.183238 40.645635
test 0.401523 58.304965 46.367576
%% Cell type:markdown id: tags:
We have three error scores here:
* $R^2$ is a 'goodness-of-fit' measure between 0 and 1,
* RMSE, the measure which linear regression aims to minimise, and
* MAE, similarly an error metric we want to minimise
Based on the $R^2$ scores we can see that the overall fit is not very good. Prediction error is quite high, being equivalent to about half a standard deviation in the target `Y` variable.
We can also see that the error measures vary quite significantly between the training and testing sets. Some variation is expected (we will always see lower $R^2$ and higher error on testing compared to training sets), but significant variation may indicate that the model is **overfitted** to the training data, and does not **generalise** well to the testing data.
%% Cell type:markdown id: tags:
### Analysis of Coefficients
We can investigate the model coefficients to get an idea of the importance of each independent variable in predicting `Y`. However, we cannot directly compare coefficients as their dimensions are different. For example, the `AGE` coefficient will be inversely proportional to years, while the `BP` coefficient will be inversely proportional to mm of Hg. Hence to compare the coefficients we need to make them dimensionless and we also need to know the variability of each of the dependent variables.
%% Cell type:code id: tags:
``` python
feature_names = X.columns.tolist() # write the column names to a list
# create a dataframe for which the columns are the feature names and regression coefficient
coefficients = pd.Series(data=linear.coef_.transpose(), index=feature_names)
coefficients.plot(kind='bar', figsize=(10, 7)) # plot these as a bar plot
plt.title('Linear Regression: Coefficient Importance') # add a title
plt.axhline(y=0, color='.5') # add the reference line y = 0
plt.subplots_adjust(left=.3) # move to the left a little bit
```
%%%% Output: display_data
![](data:image/png;base64,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)
%% Cell type:markdown id: tags:
The variability of the features can be obtained from the standard deviation, which also has the same dimensions as the original variables. We can see a roughly inverse relationship between the coefficients and the standard deviation, i.e., as one goes up the other goes down.
%% Cell type:code id: tags:
``` python
X_train.std(axis=0).plot(kind='bar', figsize=(10, 7)) # plot the standard deviation of the training set features
plt.title('Features std. dev.') # add a title
plt.subplots_adjust(left=.3) # move a bit to the left
```
%%%% Output: display_data
![](data:image/png;base64,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)
%% Cell type:markdown id: tags:
Hence the importance of each coefficient can be found by multiplying the coefficient by the standard deviation for each variable. This suggests that `S1` and `S2` have significant effects on `Y`, which contradicts the conclusions drawn from the corrrelation table earlier. What we haven't yet taken into account is the variability of the coefficients.
%% Cell type:code id: tags:
``` python
# create a dataframe with the columns being the feature names and regression coefficients multiplied by the
# standard deviation
coefs = pd.DataFrame(
linear.coef_ * X_train.std(axis=0),
columns=['Coefficient importance'], index=feature_names
)
# do a similar plot of this variable, as above
coefs.plot(kind='bar', figsize=(10, 7))
plt.title('Linear Regression')
plt.axhline(y=0, color='.5')
plt.subplots_adjust(left=.3)
```
%%%% Output: display_data
![](data:image/png;base64,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gGsBMvOvmfkScDTwneph3wE+WG9fjfLss89ywgknsN1227Hnnnty+OGH8+ijj67Rvq644gp23nlnTjrpJF5//XUOPvhghgwZwvjx4zn11FN56KGHlvvcm2++mTFjxqxRvy+99BJXXXXVctvf+973rtF+19TcuXP5wQ9+sFb7lKRG6IxztNsC84H/jojBwD3AOUCfzHymesyzQJ+OnhwRo4BRAFtvvfVKOxsw+hedUPLfzB1zxArbM5MPfehDnHzyyVx//fUA3HfffTz33HPssMMOq93fVVddxYQJE+jfvz9TpkwBYPr06QAcf/zxK3zuUUcdxVFHHbXafcLfgvaMM87osP03v/nNGu13TSxatGhp0H7kIx9Za/1KUiN0xtBxN2Ao8K3M3AP4E8sME2ftFkEd3iYoM8dm5rDMHNa7d4dXr2qoiRMn0r17d0477bSl2wYPHsy+++5LZnLuueey2267MWjQIMaPH7/0MZdccgnDhw9n99135ytf+QoAp512Go899hiHHXYYF110ER/96EeZOnUqQ4YMYc6cORxwwAFLr4x1yy23MHToUAYPHsxBBx0EwLhx4zjrrLMAmD9/PscccwzDhw9n+PDh3HXXXQBccMEFfPKTn+SAAw5g4MCBXHHFFQCMHj2aOXPmMGTIEM4999y3vM6NNtoIgEmTJrH//vtz9NFHM3DgQEaPHs11113HiBEjGDRoEHPmzAHglFNO4bTTTmPYsGHssMMO/PznPwdq59Q/8YlPMGjQIPbYYw8mTpy4tPajjjqKAw88kIMOOojRo0dzxx13MGTIEC699FLmzp3Lvvvuy9ChQxk6dOjS4J80aRIHHHAAxx57LDvttBMnnXQSbXecmjp1Ku9973sZPHgwI0aMYOHChSxevJhzzz136Xt/zTXX1P07IEn16Iwj2nnAvMz8XbV+I7WgfS4i+mbmMxHRF3i+E/pa6x544AH23HPPDtt+8pOfMH36dO677z5eeOEFhg8fzn777cf999/PrFmzuPvuu8lMjjrqKCZPnszVV1/NLbfcwsSJE+nVqxd77bUXX/va15aGVJv58+fz6U9/msmTJ7Ptttvy4osvvqXvc845h8997nO8733v44knnmDkyJHMnDkTgIcffpiJEyeycOFCdtxxR04//XTGjBnDAw88sPToeUXuu+8+Zs6cyeabb87AgQM59dRTufvuu7n88su58sorueyyy4Da8O/dd9/NnDlzeP/738/s2bP55je/SURw//338/DDD3PIIYcsHWa/9957mTFjBptvvjmTJk1602t/7bXXuO222+jZsyezZs3ixBNPXPqh4/e//z0PPvgg73znO9lnn3246667GDFiBMcffzzjx49n+PDhvPLKK2y44YZce+21bLrppkydOpXXX3+dffbZh0MOOcQZxpIapu6gzcxnI+LJiNgxMx8BDgIeqn5OBsZU//1ZvX01mzvvvJMTTzyRrl270qdPH/bff3+mTp3K5MmTufXWW9ljjz0AePXVV5k1axb77bffKu13ypQp7LfffkvDYfPNN3/LYyZMmPCm87mvvPIKr776KgBHHHEEPXr0oEePHmy55ZY899xzq/W6hg8fTt++fQHYbrvtOOSQQwAYNGjQ0iNUgOOOO44uXbqw/fbbM3DgQB5++GHuvPNOzj77bAB22mknttlmm6VB+4EPfKDD1wK170ufddZZTJ8+na5du77pHPiIESPo378/AEOGDGHu3Llsuumm9O3bl+HDhwOwySabAHDrrbcyY8YMbrzxRgBefvllZs2aZdBKapjO+h7t2cB1EbEB8BjwCWrD0jdExKeAPwDHdVJfa9Wuu+669I/2qspMzjvvPD7zmc8UqgqWLFnClClT6Nmz51vaevTosXS5a9euLFq0aLX23f75Xbp0WbrepUuXN+1r2dm7K5vN+/a3v325bZdeeil9+vThvvvuY8mSJW96XavzejKTK6+8kpEjR66wFklaWzrl6z2ZOb06z7p7Zn4wM/+YmQsy86DM3D4zD87Mt45/toADDzyQ119/nbFjxy7dNmPGDO644w723Xdfxo8fz+LFi5k/fz6TJ09mxIgRjBw5km9/+9tLjzCfeuopnn9+1UfO9957byZPnszjjz8O0OHQ8SGHHMKVV165dH1lQ8Ibb7wxCxcuXOUaVsWPfvQjlixZwpw5c3jsscfYcccd2XfffbnuuusAePTRR3niiSfYcccdV1rPyy+/TN++fenSpQvf+973WLx48Qr73nHHHXnmmWeYOnUqAAsXLmTRokWMHDmSb33rW7zxxhtLa/jTn/7UWS9ZklZb018ZqtEigptuuonPfvazXHTRRfTs2ZMBAwZw2WWX8b73vY/f/va3DB48mIjg4osvZquttmKrrbZi5syZ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)
%% Cell type:markdown id: tags:
To compare the importance of the coefficients it is easiest to normalise the independent variables from the start. The dependent variable does not need to be normalised. We normalise all the variables such that their mean is zero and their standard deviation is one, which can be done by subtracting the mean and then dividing by the standard deviation. This is equivalent to multiplying the coefficients by the standard deviation.
%% Cell type:code id: tags:
``` python
nX =(X-X.mean())/X.std() # create nX, a normalised version of X
nX.describe() # show the descriptive statistics of nX
```
%%%% Output: execute_result
AGE SEX BMI BP S1 \
count 442.000000 4.420000e+02 4.420000e+02 4.420000e+02 4.420000e+02
mean 0.000000 2.893613e-16 1.125294e-16 1.044916e-15 -2.893613e-16
std 1.000000 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00
min -2.251738 -9.374744e-01 -1.895781e+00 -2.360375e+00 -2.662394e+00
25% -0.783285 -9.374744e-01 -7.188104e-01 -7.697777e-01 -7.192046e-01
50% 0.113044 -9.374744e-01 -1.529591e-01 -1.190789e-01 -9.073818e-02
75% 0.799594 1.064282e+00 6.562083e-01 7.485196e-01 5.955183e-01
max 2.325260 1.064282e+00 3.581660e+00 2.772916e+00 3.232188e+00
S2 S3 S4 S5 S6
count 4.420000e+02 4.420000e+02 4.420000e+02 4.420000e+02 4.420000e+02
mean -1.125294e-16 -1.245861e-16 -1.527185e-16 2.451533e-16 2.531911e-16
std 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00
min -2.427874e+00 -2.148448e+00 -1.604285e+00 -2.648040e+00 -2.893112e+00
25% -6.375263e-01 -7.374604e-01 -8.293610e-01 -6.981574e-01 -6.967595e-01
50% -8.020037e-02 -1.382738e-01 -5.443750e-02 -4.089059e-02 -2.263165e-02
75% 6.267323e-01 6.155415e-01 7.204860e-01 6.810788e-01 5.862581e-01
max 4.174548e+00 3.804760e+00 3.889923e+00 2.805543e+00 2.847848e+00
%% Cell type:markdown id: tags:
We repeat the linear regression, but now using the normalized variables. While the model parameters will change, there is no change in any of our error measures. This is because the model itself has not really changed: scaling the input features is offset by scaling in the model parameters.
%% Cell type:code id: tags:
``` python
# The below code is identical to our first attempt, the only change is
# substituting nX for X in train_test_split, to use our normalised data.
# Split into a training set with 80% of the data, and a testing set as the remainder.
X_train, X_test, Y_train, Y_test = train_test_split(
nX, Y, test_size=0.8,
random_state=np.random.RandomState(31287) # Keeps the 'random' split consistent.
)
# Construct and fit the model
linear = LinearRegression() # Instantatiate the linear regression model
linear.fit(X_train,Y_train) # Fit the model parameters to the training data.
# Evaluate model performance.
training_predictions = linear.predict(X_train) # Get model predictions for both.
testing_predictions = linear.predict(X_test) # training and testing data.
# Create a table of the various scores.
pd.DataFrame({
"R^2": {
"train": r2_score(Y_train, training_predictions),
"test": r2_score(Y_test, testing_predictions)
},
"RMSE": {
"train": mean_squared_error(Y_train, training_predictions, squared=False),
"test": mean_squared_error(Y_test, testing_predictions, squared=False),
},
"MAE": {
"train": mean_absolute_error(Y_train, training_predictions),
"test": mean_absolute_error(Y_test, testing_predictions),
},
})
```
%%%% Output: execute_result
R^2 RMSE MAE
train 0.643135 49.183238 40.645635
test 0.401523 58.304965 46.367576
%% Cell type:markdown id: tags:
Again we can plot the linear regression coefficients, but this time we compare them against our original linear regression coefficients to investigate the variability. It can now be seen that the effect of the blood serum measurements can have considerable variability.
What we can see here is that the importance of feature S5 was over-inflated when we looked at the coefficients without normalisation, due to it's very low variance
%% Cell type:code id: tags:
``` python
# create a new dataframe with the regression coefficients from the normalised data
normed_coefficients = pd.Series(data=linear.coef_.transpose(), index=feature_names)
# add our original coefficient importance to this dataframe
all_coefficients = pd.DataFrame({
'Normalised': normed_coefficients,
'Original': coefficients,
})
# do a similar horizontal plot as before
ax = all_coefficients.plot(kind='bar',figsize=(10,7))
plt.title('Linear Regression')
plt.axhline(y=0, color='.5')
plt.subplots_adjust(left=.3)
```
%%%% Output: display_data
![](data:image/png;base64,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3nnMmzePV7ziFSxbtmxN0K5atYqFCxey/fbbs/3226854545c+ZG1ylJ6r1GnNHeApwKXFL9+a269rMi4mvAJODpui7mtnXuuedy5ZVXrpm/4oormDp1KpdeeikjRozgS1/60kZve/z48Rx44IHss88+7L777hxyyCHrXf/ee+/lvPPOY4sttmDIkCFcffXVbLnllsyaNYuzzz6bp59+ms7OTs455xzGjRvHl770JU477TQigiOPPHKj65Qk9V5k9r6nNyK+CrwWGA48DlwIfBO4EdgDeIja13uerL7ecyW1UcorgamZud6HzXZ0dGT359Hed999jB07ttc1qv885pL6bPqwXq739IbXaUMRMTczO3pa1qcz2sx82zoWTe5h3QTO7Mv2JUkaaLwzlCRJBRm0kiQVZNBKklSQQStJUkEGrSRJBRm0vbRkyRKOP/54xowZw1577cX73/9+/vSnP71gvccee4w3v/nNG9xefx51N336dC677LKNeq8kadNq6C0YN4nefler19vb8He6MpMTTzyRM844g29961usXr2aadOmcf7553PppZeuWa+zs5Ndd92VWbNmbXCbPupOkjYPntH2wg9/+EOGDh265h7HgwYNYsaMGVx33XVcddVVHHfccRx22GFMnjx5rQeqr1y5kpNOOol9992XE044gUmTJq15eHvXo+4WL17M2LFjec973sO4ceM48sgjee655wC49tpreeUrX8n48eN505vexMqVK5tzACRJG82g7YWFCxcyceLEtdq222479thjDzo7O5k3bx6zZs1i9uzZa61z1VVXscMOO7Bo0SIuuugi5s6d2+P2f/nLX3LmmWeuuSfxTTfdBMCJJ57IXXfdxT333MPYsWPXuseyJKk9GLQNcMQRR7Djjju+oP0nP/kJJ598MgD77bcfBxxwQI/vHz16NBMmTABg4sSJax6Zt2DBAg499FD2339/Zs6cycKFC4vUL0kqx6DthX333fcFZ6PPPPMMDz/8MIMHD37B4/D6qv6ReYMGDaKzsxOAKVOmcOWVV3Lvvfdy4YUXrveReZKk1mTQ9sLkyZNZuXIlX/nKVwBYvXo15557LlOmTGHrrbde5/sOOeQQbrzxRgAWLVrEvffe26f9Pvvss+yyyy6sWrXKx9pJUpsyaHshIrj55pv5+te/zpgxY9h7770ZOnQon/rUp9b7vr/9279l2bJl7LvvvlxwwQWMGzeOYcN6P2r6oosuYtKkSRxyyCHss88+/f0YkqQm6NNj8kobaI/JW716NatWrWLo0KE88MADHH744dx///1sueWWzS5tvdr5mEtqEh+T15jH5KlvVq5cyete9zpWrVpFZnLVVVe1fMhKkhrLoC1o2223pfsZuiRp8+I1WkmSCmqLoG2l68gDncdakhqr5YN26NChLF++3ADYBDKT5cuXM3To0GaXIkkDRstfox05ciRLlixh2bJlzS5lszB06FBGjhzZ7DIkacBo+aAdMmQIo0ePbnYZkiRtlJbvOpYkqZ0ZtJIkFWTQSpJUkEErSVJBBq0kSQUZtJIkFWTQSpJUkEErSVJBBq0kSQUZtJIkFWTQSpJUkEErSVJBBq0kSQUZtJIkFWTQSpJUkEErSVJBBq0kSQUZtJIkFWTQSpJUkEErSVJBBq0kSQUZtJIkFWTQSpJU0OD+biAiXgHcUNe0J/D3wPbAe4BlVfvHMvPW/u5PkqR20u+gzcz7gQkAETEIeBS4GZgKzMjMy/q7D0mS2lWju44nAw9k5kMN3q4kSW2p0UF7MvDVuvmzImJ+RFwXETv09IaImBYRcyJizrJly3paRZKkttWwoI2ILYHjgK9XTVcDe1HrVl4KXN7T+zLzmszsyMyOESNGNKocSZJaQiPPaF8PzMvMxwEy8/HMXJ2ZzwPXAq9q4L4kSWoLjQzat1HXbRwRu9QtOwFY0MB9SZLUFvo96hggIrYBjgDeW9f86YiYACSwuNsySZI2Cw0J2sz8PbBTt7ZTGrFtSZLamXeGkiSpIINWkqSCDFpJkgoyaCVJKsiglSSpIINWkqSCDFpJkgoyaCVJKsiglSSpIINWkqSCDFpJkgoyaCVJKsiglSSpIINWkqSCDFpJkgoyaCVJKsiglSSpIINWkqSCDFpJkgoyaCVJKsiglSSpIINWkqSCDFpJkgoyaCVJKsiglSSpIINWkqSCDFpJkgoyaCVJKsiglSSpIINWkqSCDFpJkgoyaCVJKsiglSSpIINWkqSCDFpJkgoyaCVJKsiglSSpIINWkqSCDFpJkgoyaCVJKsiglSSpIINWkqSCDFpJkgoa3KgNRcRi4FlgNdCZmR0RsSNwAzAKWAyclJlPNWqfkqRyRn3k271ed/HQgoW0uUaf0b4uMydkZkc1/xHgB5k5BvhBNS9J0majdNfx8cCXq+kvA28svD9JklpKI4M2ge9FxNyImFa17ZyZS6vp3wA7d39TREyLiDkRMWfZsmUNLEeSpOZr2DVa4K8y89GIeAlwW0T8on5hZmZEZPc3ZeY1wDUAHR0dL1guSVI7a9gZbWY+Wv35W+Bm4FXA4xGxC0D1528btT9JktpBQ4I2IraJiG27poEjgQXALcCp1WqnAt9qxP4kSWoXjeo63hm4OSK6tvnvmfndiLgLuDEi/gZ4CDipQfuTJKktNCRoM/PXwPge2pcDkxuxD0mS2pF3hpIkqSCDVpKkggxaSZIKMmglSSrIoJUkqSCDVpKkggxaSZIKMmglSSqokQ8VkDRA9OmB35ccW7ASqf15RitJUkEGrSRJBRm0kiQVZNBKklSQQStJUkEGrSRJBRm0kiQVZNBKklSQQStJUkEGrSRJBRm0kiQVZNBKklSQQStJUkEGrSRJBRm0kiQV5PNo9QK9fRapzyGVpA3zjFaSpIIMWkmSCjJoJUkqyKCVJKkgg1aSpIIMWkmSCjJoJUkqyKCVJKkgg1aSpIIMWkmSCjJoJUkqyKCVJKkgg1aSpIIMWkmSCjJoJUkqyKCVJKkgg1aSpIIMWkmSCup30EbE7hHxo4hYFBELI+L9Vfv0iHg0Iu6uXsf0v1xJktrL4AZsoxM4NzPnRcS2wNyIuK1aNiMzL2vAPiRJakv9DtrMXAosraafjYj7gN36u11JkgaChl6jjYhRwIHAz6qmsyJifkRcFxE7rOM90yJiTkTMWbZsWSPLkSSp6RoWtBHxYuAm4JzMfAa4GtgLmEDtjPfynt6XmddkZkdmdowYMaJR5UiS1BIaErQRMYRayM7MzG8AZObjmbk6M58HrgVe1Yh9SZLUThox6jiALwL3ZeZn6tp3qVvtBGBBf/clSVK7acSo40OAU4B7I+Luqu1jwNsiYgKQwGLgvQ3YlyRJbaURo45/AkQPi27t77YlSWp33hlKkqSCDFpJkgoyaCVJKsiglSSpIINWkqSCDFpJkgoyaCVJKsiglSSpIINWkqSCDFpJkgoyaCVJKsiglSSpIINWkqSCDFpJkgoyaCVJKsiglSSpoH4/+F2SmmnUR77d63UXX3JswUqknnlGK0lSQQatJEkFGbSSJBVk0EqSVJBBK0lSQQatJEkFGbSSJBVk0EqSVJBBK0lSQd4ZSm3NuwJJanWe0UqSVJBBK0lSQXYda+NNH9aHdZ8uV4cktTDPaCVJKsiglSSpIINWkqSCDFpJkgoyaCVJKsiglSSpIL/eI0mbUG/vZuadzAYOg1aS1PZa+XasBq0ktSJvCDNgeI1WkqSCDFpJkgoyaCVJKsiglSSpoOKDoSLiaOCzwCDgXzLzktL7lLQJOWhHWq+iQRsRg4DPA0cAS4C7IuKWzFxUcr+S1CN/KVATRGaW23jEXwDTM/Ooav6jAJn5Dz2tP3r06LzwwguL1aPeufPXy3u13sFb3Nf7jY76q42sZv16Wyv0od5CtbaTIscVihzbdqoV/P/VVrVCr+udOnXq3Mzs6GlZ6a7j3YBH6uaXAJPqV4iIacA0gN12263XG272Qe2LdqoV4OA9d+rlms0PpN7XCs2ut53+HbTTcW2nWsH/X6W0cq2lz2jfDBydme+u5k8BJmXmWT2t39HRkXPmzOnVtlv5LiDd9anWoW/v/Ybt2mor/juQBq6IWOcZbelRx48Cu9fNj6zaJEnaLJQO2ruAMRExOiK2BE4Gbim8T0mSWkbRa7SZ2RkRZwH/Re3rPddl5sKS+5QGBLuDpQGj+PdoM/NW4NbS+5EkqRV5ZyhJkgoyaCVJKsiglSSpIINWkqSCDFpJkgoyaCVJKsiglSSpoOLfoy2l2fcvliSpNzyjlSSpIINWkqSCDFpJkgoyaCVJKsiglSSpIINWkqSCDFpJkgoyaCVJKsiglSSpIINWkqSCDFpJkgoyaCVJKsiglSSpIINWkqSCDFpJkgoyaCVJKsiglSSpIINWkqSCDFpJkgoyaCVJKsiglSSpIINWkqSCDFpJkgoa3OwCNgeLLzm29ytPL1aGJKkJPKOVJKkgg1aSpIIMWkmSCjJoJUkqyKCVJKkgg1aSpIIMWkmSCjJoJUkqyKCVJKkgg1aSpIIMWkmSCupX0EbEpRHxi4iYHxE3R8T2VfuoiHguIu6uXv/ckGolSWoz/T2jvQ3YLzMPAP4P+Gjdsgcyc0L1Or2f+5EkqS31K2gz83uZ2VnN3gmM7H9JkiQNHI28Rnsa8J26+dER8fOImB0Rh67rTRExLSLmRMScZcuWNbAcSZKab4PPo42I7wMv7WHR+Zn5rWqd84FOYGa1bCmwR2Yuj4iJwDcjYlxmPtN9I5l5DXANQEdHR27cx5AkqTVtMGgz8/D1LY+IKcAbgMmZmdV7/gj8sZqeGxEPAHsDc/pbsCRJ7aS/o46PBj4EHJeZK+vaR0TEoGp6T2AM8Ov+7EuSpHa0wTPaDbgS2Aq4LSIA7qxGGL8a+ERErAKeB07PzCf7uS9JktpOv4I2M1++jvabgJv6s21JkgYC7wwlSVJBBq0kSQUZtJIkFWTQSpJUkEErSVJBBq0kSQUZtJIkFWTQSpJUkEErSVJBBq0kSQUZtJIkFWTQSpJUkEErSVJBBq0kSQUZtJIkFWTQSpJUUL8e/K4Cpj/d7AokSQ3kGa0kSQUZtJIkFWTQSpJUkEErSVJBBq0kSQUZtJIkFWTQSpJUkEErSVJBBq0kSQUZtJIkFWTQSpJUkEErSVJBBq0kSQUZtJIkFWTQSpJUkEErSVJBBq0kSQUZtJIkFWTQSpJUkEErSVJBBq0kSQUZtJIkFWTQSpJUkEErSVJBBq0kSQUZtJIkFdSvoI2I6RHxaETcXb2OqVv20Yj4VUTcHxFH9b9USZLaz+AGbGNGZl5W3xAR+wInA+OAXYHvR8Tembm6AfuTJKltlOo6Ph74Wmb+MTMfBH4FvKrQviRJalmNCNqzImJ+RFwXETtUbbsBj9Sts6RqkyRps7LBoI2I70fEgh5exwNXA3sBE4ClwOV9LSAipkXEnIiYs2zZsr6+XZKklrbBa7SZeXhvNhQR1wL/Wc0+Cuxet3hk1dbT9q8BrgHo6OjI3uxLkqR20d9Rx7vUzZ4ALKimbwFOjoitImI0MAb43/7sS5KkdtTfUcefjogJQAKLgfcCZObCiLgRWAR0Amc64liStDnqV9Bm5inrWXYxcHF/ti9JUrvzzlCSJBVk0EqSVJBBK0lSQQatJEkFGbSSJBVk0EqSVJBBK0lSQQatJEkFGbSSJBVk0EqSVJBBK0lSQQatJEkFGbSSJBVk0EqSVJBBK0lSQQatJEkFGbSSJBVk0EqSVJBBK0lSQQatJEkFGbSSJBVk0EqSVJBBK0lSQQatJEkFGbSSJBVk0EqSVJBBK0lSQQatJEkFGbSSJBVk0EqSVJBBK0lSQYObXYC0uVh8ybHNLkFSE3hGK0lSQQatJEkFGbSSJBVk0EqSVJBBK0lSQQatJEkFGbSSJBVk0EqSVJBBK0lSQQatJEkFGbSSJBXUr3sdR8QNwCuq2e2BFZk5ISJGAfcB91fL7szM0/uzL0mS2lG/gjYz39o1HRGXA0/XLX4gMyf0Z/uSJLW7hjy9JyICOAk4rBHbkyRpoGjUNdpDgccz85d1baMj4ucRMTsiDm3QfiRJaisbPKONiO8DL+1h0fmZ+a1q+m3AV+uWLQX2yMzlETER+GZEjMvMZ3rY/jRgGsAee+zR1/olSWppkZn920DEYOBRYGJmLlnHOrcDH8zMORvY1jLgoX4V1LPhwBMFtluCtZbTTvVaaxnWWk471Vui1pdl5oieFjTiGu3hwC/qQzYiRgBPZubqiNgTGAP8ekMbWleR/RURczKzo8S2G81ay2mneq21DGstp53q3dS1NiJoT2btbmOAVwOfiIhVwPPA6Zn5ZAP2JUlSW+l30GbmlB7abgJu6u+2JUlqd5vLnaGuaXYBfWCt5bRTvdZahrWW0071btJa+z0YSpIkrdvmckYrSVJTGLSSJBVk0EqSVNCACtqI2G49y7ztlCRpkxtQQQvc3jURET/otuybm7SSXoiIKyJi2x7a96lufdkyIuLv1vdqdn09iYg3RsQHI+KoZteyMSKi5UZxRsSgiHhvRFwUEYd0W3ZBs+rqSURsHREfiojzImJoREyJiFsi4tMR8eJm17chEfF/za6hJxFxQN30kIi4oDqun4qIrZtZW3cRcVZEDK+mXx4R/x0RKyLiZxGx/6aqY6AFbdRN77ieZa3iN8DdEfF2WPOD4dPAfwCfb2plL7TtBl4tJSKuAj4A7ARcFBH/r8kl9SgidlzHayfgmGbX14MvAK8BlgOfi4jP1C07sTklrdP1wM7AaODbQAdwKbWfBVc3r6wXiohnI+KZ6vVsRDwL7NXV3uz6urm+bvoS4OXA5cCLgH9uRkHrcUZmdt1q8bPAjMzcHvgwm7DWAfX1noiYl5kHdZ/uab5VVLeovIJaWO0K3Ah8MjNXNrWwNhcRC4Dx1W1AtwZ+nJkTm11XdxGxmtr9vet/EcxqfrfM3LIpha1DRMzPzAOq6cHAVdTuG/s24M7MPLCZ9dWLiLszc0L1GM+lwC6ZmdX8PV2foxVExOeA7YHzMvPxqu3BzBzd1MJ6EBE/7/p7joi7gVdm5qoWPa73Z+Yrqum7MvOVdcvmb6paG/I82hbykqobM+qmqeaL3Ee5AZ6v/hwMDALua8WQrX4QrFNmnr2paumlP2XmaoDMXFn9EGhFvwYmZ+bD3RdExCNNqGdD1gR/ZnYC0yLiQuCHQEt2x1bhemtWZxXVfEudYWTm2dWTzr4aEd8ErqT2C1crGhYRJ1DrEd0qM1dBax5XYFZEXA98Arg5Is4Bbqb27PQX/J8rZaAF7bX8uRuzfhrgXzZ9OetXdWeeSu2RgzdExG7AZyPi3dS6PBY1t8K1nA4soHbG/Rit2RVfb5+ImF9NB7VuuPnVdLbQb93/BOxAz//pP71pS+mVORFxdGZ+t6shMz8eEY/SYt2x1Gp9cWb+LjNP62qMiL2AZ5tYV48yc25EHA6cBcwGhja5pHWZDRxXTd8ZETtn5uMR8VJa7Ok9mXl+REyhdj/+vYCtqD2W9ZvAOzZVHQMqaDPz482uoY+GAwdm5rMAmfko8OaIeD21e0WPbWZx3ewCvAV4K9AJ3ADMyswVzSxqPVrp2K3P/wKPd81ExLuAN1HrTp7epJrW57NA/ZO66uvduVlFrcMXqJ1l/w7WqvVh4I3NK+uFIuKVwCOZ+Rtq1763AT4eEZ8FPt5iD2W5CliSmUuhdlwjouvfwFuaWlk31XH9bmZeX82fSu3fwIup9SBumjoG2DXaccBemXlLNT8DGFYtvjIz5zWtuD6KiK0y84/NrqMnETGS2lOb/g74cGb+a5NL6pVq9OHybKF/9BExDzg8M5+MiFcDXwPeB0wAxmbmm5tZX3ftVK+1lmGtfTfQRh1fwtpdF0dRG234I+Dvm1LRekTEjXXT/9ht8X9s4nJ6JSIOAt4PvBP4DjC3uRX1LCIOjojbI+IbEXFgNThqAfB4RBzd7PrqDKo7W3krcE1m3pSZ/4/aaM5W0071WmsZ1tpHAy1od8nMn9bNP1Md1H+l1k3basbUTR/RbVlLDd6KiE9ExFxqZ7GzgY7M/JsWu45c70rgU9SuzfwQeHdmvpTas5L/oZmFdTOoGr0LMJlarV1a8dJOO9VrrWVYax+12kHpr7W+z5mZB9fNvmQT19Ib6+vCbJnuzcoFwIPA+Or1qWogb6sNLuoyODO/B7VfEjLzToDM/EWLDUD+KjA7Ip4AngN+DLUv1wNPN7OwdWineq21DGvto4EWtI9FxKTM/Fl9Y0QcTG2kbKvZOiIOpNaz8KKqWxZq4fWi5pXVo5b7Pt8GPF83/Vy3ZS3zS0xmXhy1u5jtAnyv7vrxFtSuJbWUdqrXWsuw1r4baIOhXkVtNOz1QNfAp4nUvkLz1sz83yaV1qOI+BF/vjkBrB0AkZmv2/RV9V4rDi7qUt0I4vf8+ZeWru8mBzA0M4c0qzZJm5cBFbQAEbEzcCYwjlpwLQS+D5ycmWc2s7buql8MHqkbJt819HwxML2VhvRXvQKXAE8CFwFd1723AN5V/71KSdKfDbig7VJ1w76N2ve6HgRuyswrm1vV2lpl6HlvRMQc4GPUvi51DfD6zLwzIvYBvpotdOs9SWolA+oabUTsTS1c30btaz430NpdsD0OPQduqu4h2kraZXCRJLWUgfb1nl9Qu4flGzLzrzLzCmB1k2tan5YYet5LbTG4SJJaTav9MO+vE6ndsehHEfFdal2xrXy61RJDz3tpfNQe1xXURkh3PboraN17skpS0w3Ia7TVfUKPp9aFfBjwFeDmrq7PVlINMuoaev77qm1v4MXtdMtISVLPBmTQ1ouIHahuhp+Zk5tdjyRp8zLgg1aSpGYaaIOhJElqKQatJEkFGbSSJBVk0EqSVJBBK0lSQf8fO+m0Au/lR9QAAAAASUVORK5CYII=)
%% Cell type:markdown id: tags:
To investigate the variability we can use the `sklearn` methods `cross_validate` and `RepeatedKFold`. The first of these performs a number of runs of a model. The second splits the data in n sections and repeats the calculations m times. This gives n.m runs to investigate the variability of the coefficients. The variability of these can then be plotted using a boxplot.
We can see `AGE`, `SEX`, `BP`, `BMI` and `S6` have very low variance, whereas `S1`-`S5` have high variance. In particular we can see that `AGE` and `S3` do not have a clear effect in the model: in some model fits, they produce a negative coefficient, while in others they produce a positive coefficient. It is therefore not clear whether there is any statistical significance of these parameters in the model.
%% Cell type:code id: tags:
``` python
from sklearn.model_selection import cross_validate, RepeatedKFold # import sklearn methods
# cross_validate takes the particular model, in this case linear regression which we instantatiated earlier,
# and undertakes a number of runs according the method specified by cv=
# RepeatedKFold splits the data into n sections and repeat the regression modelling 5 times, giving 25 runs
# return_estimator=True returns the fitting data for each run
scores = cross_validate(
linear, nX, Y,
cv=RepeatedKFold(n_splits=5, n_repeats=5, random_state=np.random.RandomState(2351786)),
return_estimator=True,
)
# take the results for each simulation (estimator), extract the coefficients for each run
# and add them to a dataframe with columns being the feature names
coefs = pd.DataFrame([est.coef_ for est in scores['estimator']],columns=nX.columns)
# plot the descriptive statics of the coefficients in a box and whisker plot to show variability
ax = coefs.plot(kind='box',figsize=(10,7))
plt.title('Linear Regression')
plt.axhline(y=0, color='.5')
plt.subplots_adjust(left=.3)
```
%%%% Output: display_data
![](data:image/png;base64,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)
%% Cell type:markdown id: tags:
## Exercises
### Exercise 1
Q: Compare the model coefficients computed in the linear regression with the correlation scores found in the initial data analysis (choose any plot or table which you think is suitable for this comparison). Comment on whether the model fitting results are consistent with the correlation scores.
A:
%% Cell type:code id: tags:
``` python
```
%% Cell type:markdown id: tags:
### Exercise 2
Q: Try fitting a linear regression model to a subset of the features. To do this, select 3-4 columns from the `nX` dataframe to use when constructing the train-test split, then fit the model parameters to this new training data as before. Describe how you selected your subset of features. Did the model coefficients for your chosen features turn out to be similar or different to those in the full model? (If there is a difference, explain why).
A:
%% Cell type:code id: tags:
``` python
```
%% Cell type:markdown id: tags:
### Exercise 3
Q: Repeat the k-fold cross-validation test for coefficient variability, but first remove the feature 'S2' from the dataset. Observe the impact on the coefficients for the other features. In particular, look at the coefficient for 'S1'. You should see that the range of values produced for the S1 coefficient is much narrower. Can you think of a reason why this is the case (consider the mathematical form of the model)?
A:
%% Cell type:code id: tags:
``` python
```
......@@ -40,6 +40,7 @@
* Week 2 [Measuring Errors and Fitting Models](Machine-Learning/Supervised-Methods/Errors-and-Models.ipynb)
* Week 3 [Linear Regression Algorithms](Machine-Learning/Supervised-Methods/Regression-Fitting.ipynb)
* Week 4 [Time Series Data](Pandas-DataFrames/Time-Series/Time-Series-Data-Intro.ipynb)
* Week 5 [Multivariate Linear Regression](Machine-Learning/Supervised-Methods/Regression/Multivariate-Linear-Regression.ipynb)
### ADS2001
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment