diff --git a/pyFTS/models/multivariate/cmvfts.py b/pyFTS/models/multivariate/cmvfts.py index 8b0afb5..8bd5167 100644 --- a/pyFTS/models/multivariate/cmvfts.py +++ b/pyFTS/models/multivariate/cmvfts.py @@ -67,7 +67,9 @@ class ClusteredMVFTS(mvfts.MVFTS): ndata = self.check_data(ndata) - return self.model.forecast(ndata, fuzzyfied=self.pre_fuzzyfy, **kwargs) + pre_fuzz = kwargs.get('pre_fuzzyfy', self.pre_fuzzyfy) + + return self.model.forecast(ndata, fuzzyfied=pre_fuzz, **kwargs) def forecast_multivariate(self, data, **kwargs): diff --git a/pyFTS/models/multivariate/mvfts.py b/pyFTS/models/multivariate/mvfts.py index 20a3084..d478a88 100644 --- a/pyFTS/models/multivariate/mvfts.py +++ b/pyFTS/models/multivariate/mvfts.py @@ -170,11 +170,11 @@ class MVFTS(fts.FTS): ndata = self.apply_transformations(data) - start = kwargs.get('start_at', self.order) + start = kwargs.get('start_at', self.max_lag) ret = [] - for k in np.arange(0, steps): - ix = ndata.index[start-self.max_lag+k:k+start] + for k in np.arange(start, start+steps): + ix = ndata.index[k-self.max_lag:k] sample = ndata.loc[ix] tmp = self.forecast(sample, **kwargs) @@ -200,9 +200,12 @@ class MVFTS(fts.FTS): new_data_point[self.target_variable.data_label] = tmp + print(k) + print(new_data_point) + ndata = ndata.append(new_data_point, ignore_index=True) - return ret[-steps] + return ret[-steps:] def forecast_interval(self, data, **kwargs): ret = [] diff --git a/pyFTS/tests/multivariate.py b/pyFTS/tests/multivariate.py index 784285f..a3ba783 100644 --- a/pyFTS/tests/multivariate.py +++ b/pyFTS/tests/multivariate.py @@ -63,9 +63,11 @@ vavg = variable.Variable("Radiation", data_label="glo_avg", alias='rad', fs = grid.GridCluster(explanatory_variables=[vmonth, vhour, vavg], target_variable=vavg) model = cmvfts.ClusteredMVFTS(explanatory_variables=[vmonth, vhour, vavg], target_variable=vavg, partitioner=fs, order=2, knn=1) +#model = wmvfts.WeightedMVFTS(explanatory_variables=[vmonth, vhour, vavg], target_variable=vavg) model.fit(train_mv) -forecasts = model.predict(test_mv.iloc[:100]) +generator = lambda x : x + pd.to_timedelta(1, unit='h') +forecasts = model.predict(test_mv.iloc[:3], steps_ahead=48, generators={'data': generator} ) print(forecasts)