def preset_season_factor_test(self): """Initial Season Factors should be presetable""" hwm = HoltWintersMethod(seasonLength=4) factors = [0,1,2,3] hwm.set_parameter("seasonValues", factors) data = [[0, 362.0], [1,385.0], [2, 432.0], [3, 341.0], [4, 382.0], [5, 409.0], [6, 498.0], [7, 387.0], [8, 473.0], [9, 513.0], [10, 582.0], [11, 474.0]] tsSrc = TimeSeries.from_twodim_list(data) seasonValues = hwm.initSeasonFactors(tsSrc) assert seasonValues == factors, "Preset Season Factors are not returned by initSeasonFactors" hwm.set_parameter("seasonValues", factors[:2]) try: hwm.initSeasonFactors(tsSrc) except AssertionError: pass else: assert False, "If preset season factors and season length do not comply, initSeasonFactors should throw an AssertionError" # pragma: no cover
def preset_season_factor_test(self): """Initial Season Factors should be presetable""" hwm = HoltWintersMethod(seasonLength=4) factors = [0, 1, 2, 3] hwm.set_parameter("seasonValues", factors) data = [[0, 362.0], [1, 385.0], [2, 432.0], [3, 341.0], [4, 382.0], [5, 409.0], [6, 498.0], [7, 387.0], [8, 473.0], [9, 513.0], [10, 582.0], [11, 474.0]] tsSrc = TimeSeries.from_twodim_list(data) seasonValues = hwm.initSeasonFactors(tsSrc) assert seasonValues == factors, "Preset Season Factors are not returned by initSeasonFactors" hwm.set_parameter("seasonValues", factors[:2]) try: hwm.initSeasonFactors(tsSrc) except AssertionError: pass else: assert False, "If preset season factors and season length do not comply, initSeasonFactors should throw an AssertionError" # pragma: no cover
from pycast.common.timeseries import TimeSeries from pycast.methods import HoltWintersMethod from pycast.optimization import GridSearch from pycast.errors import SymmetricMeanAbsolutePercentageError as SMAPE data_list = [1.1, 2.1, 3.3, 4.4, 5.5, 1.1, 2.2, 3.3] orig = TimeSeries(isNormalized=True) for i in range(len(data_list)): orig.add_entry(i, data_list[i]) #offset to first data entry in line seasonLength = int(5) season_values = [] for i in range(seasonLength): season_values.append(float(1.0)) #print season_values hwm = HoltWintersMethod(seasonLength = seasonLength, valuesToForecast = 3) hwm.set_parameter("seasonValues", season_values) gridSearch = GridSearch(SMAPE) optimal_forecasting, error, optimal_params = gridSearch.optimize(orig, [hwm]) predicted = optimal_forecasting.execute(orig) print str(orig) print str(predicted)
number_obeservations + number_forecast): forecast_check.add_entry(j, float(series_tuples[j + 7])) #print forecast_check #Season indices are given in season file season_indices_tuple = season_indices.readline().split(',') seasonLength = int(season_indices_tuple[1]) season_values = [] for i in range(seasonLength): season_values.append(float(season_indices_tuple[i + 2])) #print season_values hwm = HoltWintersMethod(seasonLength=seasonLength, valuesToForecast=number_forecast) hwm.set_parameter("seasonValues", season_values) #Optimize parameters gridSearch = GridSearch(SMAPE) optimal_forecasting, error, optimal_params = gridSearch.optimize( orig, [hwm]) predicted = optimal_forecasting.execute(orig) #Now add forecasted values to original and calculate error orig += forecast_check assert len(orig) == len( predicted ), "Prediction and original season should have the same length." total_error = SMAPE() total_error.initialize(orig, predicted)