Example #1
0
def load_all_forecasts():
    df = load_california_electricity_demand().sort_values("ds")
    forecast_list = os.listdir(FORECAST_DIRECTORY)
    for f in forecast_list:
        df = df.merge(read_forecast(f), on="ds")
    return df
Example #2
0
import datetime

import numpy as np
import pandas as pd

from sts.models.prophet import (add_season_weekday_indicators,
                                seasonal_daily_prophet_model)
from sts.data.loader import load_california_electricity_demand

# Load all available data for training

df = load_california_electricity_demand()

# Take log transform for fully multiplicative model
df['y'] = df.y.apply(np.log)

# Fit best current model

model = seasonal_daily_prophet_model(df)

# Make predictions for one year ahead of most recent training data

future = add_season_weekday_indicators(
    model.make_future_dataframe(periods=24 * 365, freq='H'))

forecast = model.predict(future)

samples = model.predictive_samples(future)

# Reverse log transform
predictions = np.exp(samples['yhat'])
#  BUSINESS ADVANTAGE OR UNAVAILABILITY, OR LOSS OR CORRUPTION OF
#  DATA.
#
# ###########################################################################

import os

import numpy as np

from sts.data.loader import load_california_electricity_demand
from sts.models.prophet import (add_season_weekday_indicators,
                                seasonal_daily_prophet_model)

# Load the training data (through 2018)

df = load_california_electricity_demand(train_only=True)

# Log transform the target variable
df['y'] = df.y.apply(np.log)

# ## Prophet (with more complicated seasonality)
# FB Prophet model, splitting intra-day seasonalities into four subgroups:
# - summer weekday
# - summer weekend
# - winter weekday
# - winter weekend

model = seasonal_daily_prophet_model(df)

future = model.make_future_dataframe(periods=8760, freq='H')
seasonal_future = add_season_weekday_indicators(future)
#  identified above.
#
#  This code is provided to you pursuant a written agreement with
#  (i) Cloudera, Inc. or (ii) a third-party authorized to distribute
#  this code. If you do not have a written agreement with Cloudera nor
#  with an authorized and properly licensed third party, you do not
#  have any rights to access nor to use this code.
#
#  Absent a written agreement with Cloudera, Inc. (“Cloudera”) to the
#  contrary, A) CLOUDERA PROVIDES THIS CODE TO YOU WITHOUT WARRANTIES OF ANY
#  KIND; (B) CLOUDERA DISCLAIMS ANY AND ALL EXPRESS AND IMPLIED
#  WARRANTIES WITH RESPECT TO THIS CODE, INCLUDING BUT NOT LIMITED TO
#  IMPLIED WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY AND
#  FITNESS FOR A PARTICULAR PURPOSE; (C) CLOUDERA IS NOT LIABLE TO YOU,
#  AND WILL NOT DEFEND, INDEMNIFY, NOR HOLD YOU HARMLESS FOR ANY CLAIMS
#  ARISING FROM OR RELATED TO THE CODE; AND (D)WITH RESPECT TO YOUR EXERCISE
#  OF ANY RIGHTS GRANTED TO YOU FOR THE CODE, CLOUDERA IS NOT LIABLE FOR ANY
#  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, PUNITIVE OR
#  CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, DAMAGES
#  RELATED TO LOST REVENUE, LOST PROFITS, LOSS OF INCOME, LOSS OF
#  BUSINESS ADVANTAGE OR UNAVAILABILITY, OR LOSS OR CORRUPTION OF
#  DATA.
#
# ###########################################################################

from sts.data.loader import load_california_electricity_demand

# This will load or download the data as json, and write it to csv.
df = load_california_electricity_demand('data/demand.json')
df.to_csv('data/demand.csv')