Bugfix in mvfts and seasonal.common.FuzzySet

This commit is contained in:
Petrônio Cândido 2018-11-09 17:10:17 -02:00
parent 72b34217f8
commit b0a0fa5fe0
5 changed files with 57 additions and 15 deletions

View File

@ -200,10 +200,13 @@ def get_fuzzysets(inst, fuzzy_sets, ordered_sets=None, alpha_cut=0.0):
if ordered_sets is None:
ordered_sets = set_ordered(fuzzy_sets)
try:
fs = [ordered_sets[ix]
for ix in __binary_search(inst, fuzzy_sets, ordered_sets)
if fuzzy_sets[ordered_sets[ix]].membership(inst) > alpha_cut]
return fs
except Exception as ex:
raise ex
def get_maximum_membership_fuzzyset(inst, fuzzy_sets, ordered_sets=None):

View File

@ -89,10 +89,9 @@ class FuzzySet(FuzzySet.FuzzySet):
def __init__(self, datepart, name, mf, parameters, centroid, alpha=1.0, **kwargs):
super(FuzzySet, self).__init__(name, mf, parameters, centroid, alpha,
type=kwargs.get('type', 'seasonal'),
**kwargs)
self.datepart = datepart
self.type = 'seasonal'
self.type = kwargs.get('type', 'seasonal')
def transform(self, x):
if self.type == 'seasonal':

View File

@ -30,6 +30,8 @@ class TimeGridPartitioner(partitioner.Partitioner):
self.min = tmp
self.max = self.season.value + tmp
self.type = kwargs.get('type','seasonal')
self.sets = self.build(None)
if self.ordered_sets is None and self.setnames is not None:
@ -40,7 +42,7 @@ class TimeGridPartitioner(partitioner.Partitioner):
def build(self, data):
sets = {}
kwargs = {'variable': self.variable}
kwargs = {'variable': self.variable, 'type': self.type }
if self.season == DateTime.year:
dlen = (self.max - self.min)

View File

@ -21,10 +21,14 @@ from pyFTS.data import TAIEX, SP500, NASDAQ, Malaysia
dataset = Malaysia.get_data('temperature')[:1000]
p = Entropy.EntropyPartitioner(data=dataset, npart=19)
p = Entropy.EntropyPartitioner(data=dataset, npart=3)
print(p)
model = hofts.HighOrderFTS(partitioner=p, order=2, lags=[34, 47], alpha_cut=0.31390672707694006)
model.fit(dataset)
'''
#dataset = SP500.get_data()[11500:16000]
#dataset = NASDAQ.get_data()

View File

@ -3,13 +3,6 @@ import matplotlib.pylab as plt
from pyFTS.data import TAIEX as tx
from pyFTS.common import Transformations
from pyFTS.data import Malaysia
dataset = Malaysia.get_dataframe()
dataset["date"] = pd.to_datetime(dataset["time"], format='%m/%d/%y %I:%M %p')
from pyFTS.partitioners import Grid, Util as pUtil
from pyFTS.common import Transformations, Util
from pyFTS.models.multivariate import common, variable, mvfts
@ -23,6 +16,13 @@ from pyFTS.models.multivariate import common, variable, mvfts
from pyFTS.models.seasonal import partitioner as seasonal
from pyFTS.models.seasonal.common import DateTime
#"""
from pyFTS.data import Malaysia
dataset = Malaysia.get_dataframe()
dataset["date"] = pd.to_datetime(dataset["time"], format='%m/%d/%y %I:%M %p')
mv_train = dataset.iloc[:100000]
sp = {'seasonality': DateTime.month , 'names': ['Jan','Feb','Mar','Apr','May','Jun','Jul', 'Aug','Sep','Oct','Nov','Dec']}
@ -71,3 +71,37 @@ for k in [itertools.combinations(var_list, r) for r in range(2,len(var_list))]:
model.target_variable = vload
model.fit(mv_train)
models.append(model)
#"""
"""
dataset = pd.read_csv('/home/petronio/Downloads/priceHong')
dataset['hour'] = dataset.index.values % 24
data = dataset['price'].values.flatten()
train_split = 24 * 800
# Multivariate time series
train_mv = dataset.iloc[:train_split]
test_mv = dataset.iloc[train_split:]
vhour = variable.Variable("Hour", data_label="hour", partitioner=seasonal.TimeGridPartitioner, npart=24,
data=dataset,
partitioner_specific={'seasonality': DateTime.hour_of_day, 'type': 'common'})
vprice = variable.Variable("Price", data_label="price", partitioner=Grid.GridPartitioner, npart=25,
data=train_mv)
model1 = mvfts.MVFTS()
model1.shortname += "1"
model1.append_variable(vhour)
model1.append_variable(vprice)
model1.target_variable = vprice
model1.fit(train_mv)
model2 = mvfts.MVFTS()
model2.shortname += "2"
model2.append_variable(vhour)
model2.target_variable = vprice
model2.fit(train_mv)
"""