浏览代码

Add support for fitting seasonality daily (#135)

Arturo Filastò 8 年之前
父节点
当前提交
f1ef4cc190
共有 1 个文件被更改,包括 12 次插入2 次删除
  1. 12 2
      python/fbprophet/forecaster.py

+ 12 - 2
python/fbprophet/forecaster.py

@@ -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)