ebook img

Hackers guide to machine learning with python PDF

269 Pages·2020·16.545 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Hackers guide to machine learning with python

CONTENTS Contents TensorFlow2andKeras-QuickStartGuide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Tensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 SimpleLinearRegressionModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 SimpleNeuralNetworkModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Save/RestoreModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 BuildYourFirstNeuralNetwork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Fashiondata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 DataPreprocessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 CreateyourfirstNeuralNetwork . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Trainyourmodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Makingpredictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 EndtoEndMachineLearningProject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Defineobjective/goal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Loaddata. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Dataexploration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Preparethedata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Buildyourmodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Savethemodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 BuildRESTAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Deploytoproduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 FundamentalMachineLearningAlgorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 WhatMakesaLearningAlgorithm? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 OurData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 LinearRegression. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Youaretotallyawesome! Findmeathttps://www.curiousily.com/ifyouhavequestions. CONTENTS LogisticRegression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 k-NearestNeighbors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 NaiveBayes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 DecisionTrees. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 SupportVectorMachines(SVM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 DataPreprocessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 FeatureScaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 HandlingCategoricalData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 AddingNewFeatures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 PredictingMelbourneHousingPrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 HandlingImbalancedDatasets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 Baselinemodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Usingthecorrectmetrics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Weightedmodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Resamplingtechniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 FixingUnderfittingandOverfittingModels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Underfitting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Overfitting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 HyperparameterTuning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 WhatisaHyperparameter? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 WhentodoHyperparameterTuning? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Commonstrategies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 FindingHyperparameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 HeartDiseasePrediction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 PatientData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 DataPreprocessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 TheModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Youaretotallyawesome! Findmeathttps://www.curiousily.com/ifyouhavequestions. CONTENTS Training . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 PredictingHeartDisease . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 TimeSeriesForecasting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 TimeSeries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 RecurrentNeuralNetworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 TimeSeriesPredictionwithLSTMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 CryptocurrencypricepredictionusingLSTMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 DataOverview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 TimeSeries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Modeling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 PredictingBitcoinprice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 DemandPredictionforMultivariateTimeSerieswithLSTMs . . . . . . . . . . . . . . . . . . 174 Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 FeatureEngineering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Exploration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Preprocessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 PredictingDemand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 TimeSeriesClassificationforHumanActivityRecognitionwithLSTMsinKeras . . . . . 185 HumanActivityData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 ClassifyingHumanActivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 TimeSeriesAnomalyDetectionwithLSTMAutoencodersusingKerasinPython . . . . . 195 AnomalyDetection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 LSTMAutoencoders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 S&P500IndexData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 LSTMAutoencoderinKeras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 FindingAnomalies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Youaretotallyawesome! Findmeathttps://www.curiousily.com/ifyouhavequestions. CONTENTS ObjectDetection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 ObjectDetection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 RetinaNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 PreparingtheDataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 DetectingVehiclePlates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 ImageDataAugmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 ToolsforImageAugmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 AugmentingScannedDocuments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 CreatingAugmentedDataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 SentimentAnalysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 UniversalSentenceEncoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 HotelReviewsData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 SentimentAnalysis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 IntentRecognitionwithBERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 BERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 IntentRecognitionwithBERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 Youaretotallyawesome! Findmeathttps://www.curiousily.com/ifyouhavequestions. TensorFlow 2 and Keras - Quick Start Guide TL;DR Learn how to use Tensors, build a Linear Regression model and a simple Neural Network TensorFlow 2.0 (final) was released at the end of September. Oh boy, it looks much cooler than the 1.xseries.Whyisitsomuchbetterforyou,thedeveloper? • Onehigh-levelAPIforbuildingmodels(thatyouknowandlove)-Keras.Thegoodnewsisthat mostofyouroldKerascodeshouldworkautomagicallyafterchangingacoupleofimports. • Eager execution - all your code looks much more like normal Python programs. Old-timers might remember the horrible Session experiences. You shouldn’t need any of that, in day-to- dayuse. Therearetonsofotherimprovements,butthenewdeveloperexperienceissomethingthatwillmake usingTensorFlow2sweeter.WhataboutPyTorch?PyTorchisstillgreatandeasytouse.Butitseems likeTensorFlowiscatchingup,orisit? You’lllearn: • HowtoinstallTensorFlow2 • WhatisaTensor • DoingTensormath • Usingprobabilitydistributionsandsampling • BuildaSimpleLinearRegressionmodel • BuildaSimpleNeuralNetworkmodel • Save/restoreamodel Runthecompletecodeinyourbrowser¹ Setup Let’sinstalltheGPU-supportedversionandsetuptheenvironment: ¹https://colab.research.google.com/drive/1HkG7HYS1-IFAYbECZ0zleBWA3Xi4DKIm TensorFlow2andKeras-QuickStartGuide 2 1 !pip install tensorflow-gpu Checktheinstalledversion: 1 import tensorflow as tf 2 3 tf.__version__ 1 2.0.0 Andspecifyarandomseed,soourresultsarereproducible: 1 RANDOM_SEED = 42 2 3 tf.random.set_seed(RANDOM_SEED) Tensors TensorFlow allows you to define and run operations on Tensors. Tensors are data-containers that canbeofarbitrarydimension-scalars,vectors,matrices,etc.Youcanputnumbers(floatsandints) andstringsintoTensors. Let’screateasimpleTensor: 1 x = tf.constant(1) 2 print(x) 1 tf.Tensor(1, shape=(), dtype=int32) It seems like our first Tensor contains the number 1, it is of type int32 and is shapeless. To obtain thevaluewecando: 1 x.numpy() 1 1 Let’screateasimplematrix: Youaretotallyawesome! Findmeathttps://www.curiousily.com/ifyouhavequestions. TensorFlow2andKeras-QuickStartGuide 3 1 m = tf.constant([[1, 2, 1], [3, 4, 2]]) 2 print(m) 1 tf.Tensor( 2 [[1 2 1] 3 [3 4 2]], shape=(2, 3), dtype=int32) This shape thingy seems to specify rows x columns. In general, the shape array shows how many elementsareineverydimensionoftheTensor. Helpers TensorFlow offers a variety of helper functions for creating Tensors. Let’s create a matrix full of ones: 1 ones = tf.ones([3, 3]) 2 print(ones) 1 tf.Tensor( 2 [[1. 1. 1.] 3 [1. 1. 1.] 4 [1. 1. 1.]], shape=(3, 3), dtype=float32) andzeros: 1 zeros = tf.zeros([2, 3]) 2 print(zeros) 1 tf.Tensor( 2 [[0. 0. 0.] 3 [0. 0. 0.]], shape=(2, 3), dtype=float32) Wehavetworowsandthreecolumns.Whatifwewanttoturnitintothreerowsandtwocolumns: 1 tf.reshape(zeros, [3, 2]) Youaretotallyawesome! Findmeathttps://www.curiousily.com/ifyouhavequestions. TensorFlow2andKeras-QuickStartGuide 4 1 tf.Tensor( 2 [[0. 0.] 3 [0. 0.] 4 [0. 0.]], shape=(3, 2), dtype=float32) Youcanuseanotherhelperfunctiontoreplacerowsandcolumns(transpose): 1 tf.transpose(zeros) 1 tf.Tensor( 2 [[0. 0.] 3 [0. 0.] 4 [0. 0.]], shape=(3, 2), dtype=float32) Tensor Math Naturally,youwouldwanttodosomethingwithyourdata.Let’sstartwithaddingnumbers: 1 a = tf.constant(1) 2 b = tf.constant(1) 3 4 tf.add(a, b).numpy() 1 42 Thatseemsreasonable:)Youcandothesamethingusingsomethingmorehumanfriendly: 1 (a + b).numpy() YoucanmultiplyTensorslikeso: 1 c = a + b 2 c * c Andcomputedotproductofmatrices: Youaretotallyawesome! Findmeathttps://www.curiousily.com/ifyouhavequestions. TensorFlow2andKeras-QuickStartGuide 5 1 d1 = tf.constant([[1, 2], [1, 2]]); 2 d2 = tf.constant([[3, 4], [3, 4]]); 3 4 tf.tensordot(d1, d2, axes=1).numpy() 1 array([[ 9, 12], 2 [ 9, 12]], dtype=int32) Sampling You can also generate random numbers according to some famous probability distributions. Let’s startwithNormal²: 1 norm = tf.random.normal(shape=(1000, 1), mean=0., stddev=1.) WecandothesamethingfromtheUniform³: ²https://en.wikipedia.org/wiki/Normal_distribution ³https://en.wikipedia.org/wiki/Uniform_distribution_(continuous) Youaretotallyawesome! Findmeathttps://www.curiousily.com/ifyouhavequestions.

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.