def build(self, data): diff = Transformations.Differential(1) data2 = diff.apply(data) davg = np.abs(np.mean(data2) / 2) if davg <= 1.0: base = 0.1 elif 1 < davg <= 10: base = 1.0 elif 10 < davg <= 100: base = 10 else: base = 100 sets = {} kwargs = {'type': self.type, 'variable': self.variable} dlen = self.max - self.min npart = math.ceil(dlen / base) partition = math.ceil(self.min) for c in range(npart): _name = self.get_name(c) if self.membership_function == Membership.trimf: sets[_name] = FuzzySet.FuzzySet( _name, Membership.trimf, [partition - base, partition, partition + base], partition, **kwargs) elif self.membership_function == Membership.gaussmf: sets[_name] = FuzzySet.FuzzySet(_name, Membership.gaussmf, [partition, base / 2], partition) elif self.membership_function == Membership.trapmf: sets[_name] = FuzzySet.FuzzySet(_name, Membership.trapmf, [ partition - base, partition - (base / 2), partition + (base / 2), partition + base ], partition, **kwargs) partition += base return sets
#!/usr/bin/python # -*- coding: utf8 -*- import os import numpy as np import matplotlib.pylab as plt #from mpl_toolkits.mplot3d import Axes3D import pandas as pd from pyFTS.common import Transformations tdiff = Transformations.Differential(1) from pyFTS.data import TAIEX, SP500, NASDAQ dataset = TAIEX.get_data() #dataset = SP500.get_data()[11500:16000] #dataset = NASDAQ.get_data() #print(len(dataset)) from pyFTS.partitioners import Grid, Util as pUtil partitioner = Grid.GridPartitioner(data=dataset[:800], npart=10, transformation=tdiff) from pyFTS.common import Util as cUtil from pyFTS.benchmarks import benchmarks as bchmk, Util as bUtil, Measures, knn, quantreg, arima, naive from pyFTS.models import pwfts, song, chen, ifts, hofts from pyFTS.models.ensemble import ensemble model = chen.ConventionalFTS(partitioner=partitioner)
train_split = 1000 test_length = 200 from pyFTS.common import Transformations from pyFTS.benchmarks import naive from pyFTS.models.incremental import TimeVariant, IncrementalEnsemble from pyFTS.models.nonstationary import common, perturbation, partitioners as nspart from pyFTS.models.nonstationary import nsfts, util as nsUtil from pyFTS.partitioners import Grid from pyFTS.models import hofts, pwfts from pyFTS.benchmarks import Measures from pyFTS.common import Transformations, Util as cUtil diff = Transformations.Differential(lag=1) train = dataset[:1000] test = dataset[1000:] #grid = Grid.GridPartitioner(data=train, transformation=diff) #model = pwfts.ProbabilisticWeightedFTS(partitioner=grid) #model.append_transformation(diff) model = naive.Naive() model.fit(train) for ct, ttrain, ttest in cUtil.sliding_window(test, 1000, .95, inc=.5): if model.shortname not in ('PWFTS', 'Naive'): model.predict(ttrain)