diff --git a/pyFTS/models/ensemble/ensemble.py b/pyFTS/models/ensemble/ensemble.py index c3188a2..28ceb8c 100644 --- a/pyFTS/models/ensemble/ensemble.py +++ b/pyFTS/models/ensemble/ensemble.py @@ -13,6 +13,7 @@ from pyFTS.common import SortedCollection, fts, tree from pyFTS.models import chen, cheng, hofts, hwang, ismailefendi, sadaei, song, yu from pyFTS.probabilistic import ProbabilityDistribution import scipy.stats as st +from itertools import product def sampler(data, quantiles): @@ -69,6 +70,10 @@ class EnsembleFTS(fts.FTS): elif model.original_max > self.original_max: self.original_max = model.original_max + + def get_UoD(self): + return [self.original_min, self.original_max] + def train(self, data, **kwargs): pass @@ -252,10 +257,11 @@ class EnsembleFTS(fts.FTS): uod = self.get_UoD() - sample = data[start - self.order: start] + sample = [[k] for k in data[start - self.order: start]] for k in np.arange(self.order, steps+self.order): forecasts = [] + ''' lags = {} for i in np.arange(0, self.order): lags[i] = sample[k-self.order] @@ -267,7 +273,13 @@ class EnsembleFTS(fts.FTS): for p in root.paths(): path = list(reversed(list(filter(None.__ne__, p)))) +''' + lags = [] + for i in np.arange(0, self.order): + lags.append(sample[k - self.order]) + # Trace the possible paths + for path in product(*lags): forecasts.extend(self.get_models_forecasts(path)) sample.append(sampler(forecasts, np.arange(0.1, 1, 0.1))) diff --git a/pyFTS/tests/ensemble.py b/pyFTS/tests/ensemble.py index 89651ae..5edd239 100644 --- a/pyFTS/tests/ensemble.py +++ b/pyFTS/tests/ensemble.py @@ -21,15 +21,15 @@ data = TAIEX.get_data() model = ensemble.EnsembleFTS() for k in [15, 25, 35]: - for order in [1, 2]: + for order in [1, 2, 3]: fs = Grid.GridPartitioner(data=data, npart=k) - tmp = hofts.WeightedHighOrderFTS(partitioner=fs) + tmp = hofts.WeightedHighOrderFTS(partitioner=fs, order=order) tmp.fit(data) model.append_model(tmp) -forecasts = model.predict(data, type='interval', method='quantile', alpha=.05) +forecasts = model.predict(data, type='distribution', smooth='histogram', steps_ahead=10) from pyFTS.benchmarks import benchmarks as bchmk