Preface iii
I Introduction 1
1 Welcome 2
1.1 Learn Python Machine Learning The Wrong Way . . . . . . . . . . . . . . . . . 2
1.2 Machine Learning in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 What This Book is Not . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
II Lessons 8
2 Python Ecosystem for Machine Learning 9
2.1 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 SciPy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 scikit-learn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4 Python Ecosystem Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3 Crash Course in Python and SciPy 14
3.1 Python Crash Course . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2 NumPy Crash Course . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3 Matplotlib Crash Course . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.4 Pandas Crash Course . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4 How To Load Machine Learning Data 26
4.1 Considerations When Loading CSV Data . . . . . . . . . . . . . . . . . . . . . . 26
4.2 Pima Indians Dataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.3 Load CSV Files with the Python Standard Library . . . . . . . . . . . . . . . . 27
4.4 Load CSV Files with NumPy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.5 Load CSV Files with Pandas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
ii
iii
5 Understand Your Data With Descriptive Statistics 31
5.1 Peek at Your Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.2 Dimensions of Your Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.3 Data Type For Each Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.4 Descriptive Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.5 Class Distribution (Classication Only) . . . . . . . . . . . . . . . . . . . . . . . 34
5.6 Correlations Between Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.7 Skew of Univariate Distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.8 Tips To Remember . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.9 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6 Understand Your Data With Visualization 38
6.1 Univariate Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.2 Multivariate Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.3 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
7 Prepare Your Data For Machine Learning 47
7.1 Need For Data Pre-processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
7.2 Data Transforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
7.3 Rescale Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
7.4 Standardize Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.5 Normalize Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.6 Binarize Data (Make Binary) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.7 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
8 Feature Selection For Machine Learning 52
8.1 Feature Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
8.2 Univariate Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
8.3 Recursive Feature Elimination . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
8.4 Principal Component Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
8.5 Feature Importance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
8.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
9 Evaluate the Performance of Machine Learning Algorithms with Resampling 57
9.1 Evaluate Machine Learning Algorithms . . . . . . . . . . . . . . . . . . . . . . . 57
9.2 Split into Train and Test Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
9.3 K-fold Cross Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
9.4 Leave One Out Cross Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
9.5 Repeated Random Test-Train Splits . . . . . . . . . . . . . . . . . . . . . . . . . 60
9.6 What Techniques to Use When . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
9.7 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
10 Machine Learning Algorithm Performance Metrics 62
10.1 Algorithm Evaluation Metrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
10.2 Classication Metrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
10.3 Regression Metrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
10.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
iv
11 Spot-Check Classication Algorithms 70
11.1 Algorithm Spot-Checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
11.2 Algorithms Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
11.3 Linear Machine Learning Algorithms . . . . . . . . . . . . . . . . . . . . . . . . 71
11.4 Nonlinear Machine Learning Algorithms . . . . . . . . . . . . . . . . . . . . . . 72
11.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
12 Spot-Check Regression Algorithms 76
12.1 Algorithms Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
12.2 Linear Machine Learning Algorithms . . . . . . . . . . . . . . . . . . . . . . . . 77
12.3 Nonlinear Machine Learning Algorithms . . . . . . . . . . . . . . . . . . . . . . 80
12.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
13 Compare Machine Learning Algorithms 83
13.1 Choose The Best Machine Learning Model . . . . . . . . . . . . . . . . . . . . . 83
13.2 Compare Machine Learning Algorithms Consistently . . . . . . . . . . . . . . . 83
13.3 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
14 Automate Machine Learning Work
ows with Pipelines 87
14.1 Automating Machine Learning Work
ows . . . . . . . . . . . . . . . . . . . . . . 87
14.2 Data Preparation and Modeling Pipeline . . . . . . . . . . . . . . . . . . . . . . 87
14.3 Feature Extraction and Modeling Pipeline . . . . . . . . . . . . . . . . . . . . . 89
14.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
15 Improve Performance with Ensembles 91
15.1 Combine Models Into Ensemble Predictions . . . . . . . . . . . . . . . . . . . . 91
15.2 Bagging Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
15.3 Boosting Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
15.4 Voting Ensemble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
15.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
16 Improve Performance with Algorithm Tuning 98
16.1 Machine Learning Algorithm Parameters . . . . . . . . . . . . . . . . . . . . . . 98
16.2 Grid Search Parameter Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
16.3 Random Search Parameter Tuning . . . . . . . . . . . . . . . . . . . . . . . . . 99
16.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
17 Save and Load Machine Learning Models 101
17.1 Finalize Your Model with pickle . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
17.2 Finalize Your Model with joblib . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
17.3 Tips for Finalizing Your Model . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
17.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
III Projects 105
18 Predictive Modeling Project Template 106
18.1 Practice Machine Learning With Projects . . . . . . . . . . . . . . . . . . . . . . 106
v
18.2 Machine Learning Project Template in Python . . . . . . . . . . . . . . . . . . . 107
18.3 Machine Learning Project Template Steps . . . . . . . . . . . . . . . . . . . . . 108
18.4 Tips For Using The Template Well . . . . . . . . . . . . . . . . . . . . . . . . . 110
18.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
19 Your First Machine Learning Project in Python Step-By-Step 111
19.1 The Hello World of Machine Learning . . . . . . . . . . . . . . . . . . . . . . . . 111
19.2 Load The Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
19.3 Summarize the Dataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
19.4 Data Visualization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
19.5 Evaluate Some Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
19.6 Make Predictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
19.7 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
20 Regression Machine Learning Case Study Project 123
20.1 Problem Denition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
20.2 Load the Dataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
20.3 Analyze Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
20.4 Data Visualizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
20.5 Validation Dataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
20.6 Evaluate Algorithms: Baseline . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
20.7 Evaluate Algorithms: Standardization . . . . . . . . . . . . . . . . . . . . . . . . 136
20.8 Improve Results With Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
20.9 Ensemble Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
20.10Tune Ensemble Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
20.11Finalize Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
20.12Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
21 Binary Classication Machine Learning Case Study Project 144
21.1 Problem Denition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
21.2 Load the Dataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
21.3 Analyze Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
21.4 Validation Dataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
21.5 Evaluate Algorithms: Baseline . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
21.6 Evaluate Algorithms: Standardize Data . . . . . . . . . . . . . . . . . . . . . . . 155
21.7 Algorithm Tuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
21.8 Ensemble Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
21.9 Finalize Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
21.10Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
22 More Predictive Modeling Projects 163
22.1 Build And Maintain Recipes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
22.2 Small Projects on Small Datasets . . . . . . . . . . . . . . . . . . . . . . . . . . 163
22.3 Competitive Machine Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
22.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
vi
IV Conclusions 166
23 How Far You Have Come 167
24 Getting More Help 168
24.1 General Advice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
24.2 Help With Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
24.3 Help With SciPy and NumPy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
24.4 Help With Matplotlib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
24.5 Help With Pandas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
24.6 Help With scikit-learn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17