Book Image

Machine Learning for Time-Series with Python

By : Ben Auffarth
Book Image

Machine Learning for Time-Series with Python

By: Ben Auffarth

Overview of this book

The Python time-series ecosystem is huge and often quite hard to get a good grasp on, especially for time-series since there are so many new libraries and new models. This book aims to deepen your understanding of time series by providing a comprehensive overview of popular Python time-series packages and help you build better predictive systems. Machine Learning for Time-Series with Python starts by re-introducing the basics of time series and then builds your understanding of traditional autoregressive models as well as modern non-parametric models. By observing practical examples and the theory behind them, you will become confident with loading time-series datasets from any source, deep learning models like recurrent neural networks and causal convolutional network models, and gradient boosting with feature engineering. This book will also guide you in matching the right model to the right problem by explaining the theory behind several useful models. You’ll also have a look at real-world case studies covering weather, traffic, biking, and stock market data. By the end of this book, you should feel at home with effectively analyzing and applying machine learning methods to time-series.
Table of Contents (15 chapters)
Other Books You May Enjoy

Python Practice

NumPy and SciPy offer most of the functionality that we need, but we might need a few more libraries.

In this section, we'll use several libraries, which we can quickly install from the terminal, the Jupyter Notebook, or similarly from Anaconda Navigator:

pip install -U tsfresh workalendar astral "featuretools[tsfresh]" sktime

All of these libraries are quite powerful and each of them deserves more than the space we can give to it in this chapter.

Let's start with log and power transformations.

Log and Power Transformations in Practice

Let's create a distribution that's not normal, and let's log-transform it. We'll plot the original and transformed distribution for comparison, and we'll apply a statistical test for normality.

Let's first create the distribution:

from scipy.optimize import minimize
import numpy as np
pts = 10000
vals = np.random.lognormal(0, 1.0, pts...