Add support for fitting seasonality daily (#135)

This commit is contained in:
Arturo Filastò 2017-07-04 17:12:08 +02:00 committed by Ben Letham
parent 1339aada96
commit f1ef4cc190

View file

@ -74,6 +74,7 @@ class Prophet(object):
parameters, which will include uncertainty in seasonality.
uncertainty_samples: Number of simulated draws used to estimate
uncertainty intervals.
daily_seasonality: Boolean, fit daily seasonality
"""
def __init__(
@ -90,6 +91,7 @@ class Prophet(object):
mcmc_samples=0,
interval_width=0.80,
uncertainty_samples=1000,
daily_seasonality=False,
):
self.growth = growth
@ -101,6 +103,7 @@ class Prophet(object):
self.yearly_seasonality = yearly_seasonality
self.weekly_seasonality = weekly_seasonality
self.daily_seasonality = daily_seasonality
if holidays is not None:
if not (
@ -256,8 +259,7 @@ class Prophet(object):
# convert to days since epoch
t = np.array(
(dates - pd.datetime(1970, 1, 1))
.dt.days
.astype(np.float)
.dt.total_seconds()/(24*3600)
)
return np.column_stack([
fun((2.0 * (i + 1) * np.pi * t / period))
@ -368,6 +370,14 @@ class Prophet(object):
'weekly',
))
if self.daily_seasonality:
seasonal_features.append(self.make_seasonality_features(
df['ds'],
1,
3,
'daily'
))
if self.holidays is not None:
seasonal_features.append(self.make_holiday_features(df['ds']))
return pd.concat(seasonal_features, axis=1)