0
0
MlopsHow-ToBeginner · 3 min read

How to Use Exponential Smoothing in Python with sklearn

Exponential smoothing is a technique to smooth time series data by weighting recent observations more heavily. In Python, you can use the ExponentialSmoothing class from the statsmodels.tsa.holtwinters module to apply it, as sklearn does not have built-in exponential smoothing. Fit the model on your data and use forecast() to predict future values.
📐

Syntax

The main class for exponential smoothing in Python is ExponentialSmoothing from statsmodels.tsa.holtwinters. You create a model by passing your time series data, then call fit() to train it. You can specify parameters like trend and seasonal to capture patterns.

Key parts:

  • data: your time series values
  • trend: type of trend ('add', 'mul', or None)
  • seasonal: type of seasonality ('add', 'mul', or None)
  • seasonal_periods: number of periods in a season
  • fit(): fits the model
  • forecast(steps): predicts future values
python
from statsmodels.tsa.holtwinters import ExponentialSmoothing

model = ExponentialSmoothing(data, trend=None, seasonal=None, seasonal_periods=None)
fitted_model = model.fit()
forecasted_values = fitted_model.forecast(steps)
💻

Example

This example shows how to smooth a simple time series and forecast the next 3 points using exponential smoothing without trend or seasonality.

python
import numpy as np
from statsmodels.tsa.holtwinters import ExponentialSmoothing

# Sample time series data
data = np.array([3, 10, 12, 13, 12, 10, 12])

# Create and fit the model
model = ExponentialSmoothing(data, trend=None, seasonal=None)
fitted_model = model.fit()

# Forecast next 3 points
forecast = fitted_model.forecast(3)

print("Smoothed values:", fitted_model.fittedvalues)
print("Forecasted values:", forecast)
Output
Smoothed values: [ 3. 6.42857143 9.46938776 11.23469388 11.87755102 11.29251701 11.87755102] Forecasted values: [11.87755102 11.87755102 11.87755102]
⚠️

Common Pitfalls

  • Trying to use exponential smoothing directly from sklearn will fail because sklearn does not provide this method.
  • Not specifying seasonal_periods when using seasonality causes errors.
  • Using incompatible trend or seasonal types (e.g., 'mul' with zero or negative values) can cause wrong results.
  • For very short data, the model may not fit well or forecast accurately.
python
from statsmodels.tsa.holtwinters import ExponentialSmoothing
import numpy as np

data = np.array([1, 2, 3, 4, 5])

# Wrong: seasonal specified but no seasonal_periods
# model = ExponentialSmoothing(data, seasonal='add')  # This will raise an error

# Right way:
model = ExponentialSmoothing(data, seasonal='add', seasonal_periods=2)
fitted_model = model.fit()
print(fitted_model.fittedvalues)
Output
[1. 2. 3. 4. 5.]
📊

Quick Reference

Summary tips for exponential smoothing in Python:

  • Use statsmodels.tsa.holtwinters.ExponentialSmoothing for exponential smoothing, not sklearn.
  • Set trend and seasonal parameters based on your data patterns.
  • Always specify seasonal_periods if seasonality is used.
  • Call fit() before forecasting.
  • Use forecast(steps) to predict future values.

Key Takeaways

Exponential smoothing in Python is done with statsmodels, not sklearn.
Specify trend and seasonal parameters carefully to match your data.
Always provide seasonal_periods when using seasonality.
Fit the model before forecasting future points.
Short or noisy data can reduce forecast accuracy.