Bugfix in Transformations.ROI

This commit is contained in:
Petrônio Cândido 2020-01-24 11:08:52 -03:00
parent ce312220d9
commit 94499f0f21
2 changed files with 59 additions and 5 deletions

View File

@ -250,9 +250,7 @@ class ROI(Transformation):
return modified
def inverse(self, data, param=None, **kwargs):
modified = [param[0]]
for i in np.arange(1, len(data)):
modified.append((modified[i - 1] * data[i]) + modified[i - 1])
modified = [(param[i - 1] * data[i]) + param[i - 1] for i in np.arange(1, len(data))]
return modified

View File

@ -53,7 +53,7 @@ detrend = trend.apply(data)
plt.plot(trend.inverse(detrend, data, date_offset=pd.DateOffset(months=1)))
'''
'''
data = Enrollments.get_dataframe()
trend = Transformations.LinearTrend(data_field='Enrollments', index_field='Year')
@ -67,8 +67,64 @@ plt.plot(trend.trend(data)) #)
detrend = trend.apply(data)
plt.plot(trend.inverse(detrend, data))
'''
dataset = pd.read_csv('https://query.data.world/s/nxst4hzhjrqld4bxhbpn6twmjbwqk7')
dataset['data'] = pd.to_datetime([str(y)+'-'+str(m) for y,m in zip(dataset['Ano'].values, dataset['Mes'].values)],
format='%Y-%m')
roi = Transformations.ROI()
train = dataset['Total'].values[:30]
test = dataset['Total'].values[30:]
fs = Grid.GridPartitioner(data=train, npart=5, transformation=roi)
from pyFTS.models import hofts, pwfts
model = pwfts.ProbabilisticWeightedFTS(partitioner=fs, order=2)
#model = hofts.WeightedHighOrderFTS(partitioner=fs, order=1)
model.append_transformation(roi)
model.fit(train)
fig, ax = plt.subplots(nrows=1, ncols=1, figsize=[10,5])
ax.plot(test)
'''
train = dataset.iloc[:30]
test = dataset.iloc[30:]
from pyFTS.models.multivariate import common, variable, mvfts, wmvfts
from pyFTS.partitioners import Grid, Entropy
from pyFTS.models.seasonal.common import DateTime
from pyFTS.models.seasonal import partitioner as seasonal
sp = {'seasonality': DateTime.month , 'names': ['Jan','Fev','Mar','Abr','Mai','Jun','Jul', 'Ago','Set','Out','Nov','Dez']}
vmonth = variable.Variable("Month", data_label="data", partitioner=seasonal.TimeGridPartitioner, npart=12,
data=train, partitioner_specific=sp)
vtur = variable.Variable("Turistas", data_label="Total", alias='tur',
partitioner=Grid.GridPartitioner, npart=10, transformation=roi,
data=train)
model = wmvfts.WeightedMVFTS(explanatory_variables=[vmonth, vtur], target_variable=vtur)
model.fit(train)
fig, ax = plt.subplots(nrows=1, ncols=1, figsize=[10,5])
ax.plot(test['Total'].values)
'''
forecast = model.predict(test)
for k in np.arange(model.order):
forecast.insert(0,None)
ax.plot(forecast)
plt.show()
print(data)
print(dataset)