From 7823bdbbd4bcc4695595bbf55aef188e351e6dc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=C3=B4nio=20C=C3=A2ndido=20de=20Lima=20e=20Silva?= Date: Wed, 26 Jan 2022 14:21:41 -0300 Subject: [PATCH 1/5] Removing explicit SimpSOM dependency --- pyFTS/common/transformations/som.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyFTS/common/transformations/som.py b/pyFTS/common/transformations/som.py index 6e55019..064fcaf 100644 --- a/pyFTS/common/transformations/som.py +++ b/pyFTS/common/transformations/som.py @@ -6,14 +6,14 @@ import pandas as pd from typing import Tuple from typing import List from pyFTS.common.transformations.transformation import Transformation -import SimpSOM as sps + class SOMTransformation(Transformation): def __init__(self, grid_dimension: Tuple, **kwargs): - + import SimpSOM as sps # SOM attributes self.load_file = kwargs.get('loadFile') From d3aaa8a692d1da86ed6cacda318cc7d4e3f7c49f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=C3=B4nio=20C=C3=A2ndido=20de=20Lima=20e=20Silva?= Date: Thu, 27 Jan 2022 09:58:28 -0300 Subject: [PATCH 2/5] Bugfix: model.multivariate.variable was not considering the 'func' parameter --- pyFTS/models/multivariate/variable.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pyFTS/models/multivariate/variable.py b/pyFTS/models/multivariate/variable.py index 0c97958..73e82e1 100644 --- a/pyFTS/models/multivariate/variable.py +++ b/pyFTS/models/multivariate/variable.py @@ -47,11 +47,11 @@ class Variable: :param kwargs: :return: """ - fs = kwargs.get('partitioner', Grid.GridPartitioner) - mf = kwargs.get('func', Membership.trimf) - np = kwargs.get('npart', 10) + fs = kwargs.pop('partitioner', Grid.GridPartitioner) + mf = kwargs.pop('func', Membership.trimf) + np = kwargs.pop('npart', 10) data = kwargs.get('data', None) - kw = kwargs.get('partitioner_specific', {}) + kw = kwargs.pop('partitioner_specific', {}) self.partitioner = fs(data=data[self.data_label].values, npart=np, func=mf, transformation=self.transformation, prefix=self.alias, variable=self.name, **kw) From c8f4513f5e82ba12d547c270657f6da5ee3ff471 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=C3=B4nio=20C=C3=A2ndido=20de=20Lima=20e=20Silva?= Date: Thu, 27 Jan 2022 10:24:32 -0300 Subject: [PATCH 3/5] Improvement: New function highorder_fuzzy_markov_chain that return the fuzzy markov chain (prior probability vector and transition matrix) of a PWFTS model --- pyFTS/models/pwfts.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/pyFTS/models/pwfts.py b/pyFTS/models/pwfts.py index 26d68bd..2882dc9 100644 --- a/pyFTS/models/pwfts.py +++ b/pyFTS/models/pwfts.py @@ -661,22 +661,29 @@ class ProbabilisticWeightedFTS(ifts.IntervalFTS): return tmp -def visualize_distributions(model, **kwargs): - import matplotlib.pyplot as plt - from matplotlib import gridspec - import seaborn as sns - +def highorder_fuzzy_markov_chain(model): ordered_sets = model.partitioner.ordered_sets + ftpg_keys = sorted(model.flrgs.keys(), key=lambda x: model.flrgs[x].get_midpoint(model.sets)) - - lhs_probs = [model.flrg_lhs_unconditional_probability(model.flrgs[k]) - for k in ftpg_keys] + + lhs_probs = np.array([model.flrg_lhs_unconditional_probability(model.flrgs[k]) + for k in ftpg_keys]) mat = np.zeros((len(ftpg_keys), len(ordered_sets))) for row, w in enumerate(ftpg_keys): for col, k in enumerate(ordered_sets): if k in model.flrgs[w].RHS: mat[row, col] = model.flrgs[w].rhs_unconditional_probability(k) + + return ftpg_keys, ordered_sets, lhs_probs, mat + + +def visualize_distributions(model, **kwargs): + import matplotlib.pyplot as plt + from matplotlib import gridspec + import seaborn as sns + + ftpg_keys, ordered_sets, lhs_probs, mat = highorder_fuzzy_markov_chain(model) size = kwargs.get('size', (5,10)) @@ -695,3 +702,5 @@ def visualize_distributions(model, **kwargs): ax.set_xticklabels(ordered_sets) ax.grid(True) ax.xaxis.set_tick_params(rotation=90) + + From e72343e7a3ec5ea481287722fcf0b833eb6bab14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=C3=B4nio=20C=C3=A2ndido=20de=20Lima=20e=20Silva?= Date: Fri, 4 Mar 2022 08:58:30 -0300 Subject: [PATCH 4/5] Update trend.py --- pyFTS/common/transformations/trend.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pyFTS/common/transformations/trend.py b/pyFTS/common/transformations/trend.py index df67a46..6384f68 100644 --- a/pyFTS/common/transformations/trend.py +++ b/pyFTS/common/transformations/trend.py @@ -1,4 +1,8 @@ from pyFTS.common.transformations.transformation import Transformation +from pandas import datetime +from sklearn.linear_model import LinearRegression +import numpy as np +import pandas as pd class LinearTrend(Transformation): @@ -24,8 +28,6 @@ class LinearTrend(Transformation): '''Regression model''' def train(self, data, **kwargs): - from pandas import datetime - from sklearn.linear_model import LinearRegression x = data[self.index_field].values @@ -79,4 +81,4 @@ class LinearTrend(Transformation): ret = pd.Series(ret) ret = pd.to_numeric(ret, downcast='integer') - return np.array(ret) \ No newline at end of file + return np.array(ret) From fa818e9bf7b8448adc2a513f9f9b28cf2c07ac59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=C3=B4nio=20C=C3=A2ndido=20de=20Lima=20e=20Silva?= Date: Fri, 4 Mar 2022 08:58:51 -0300 Subject: [PATCH 5/5] Update roi.py --- pyFTS/common/transformations/roi.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyFTS/common/transformations/roi.py b/pyFTS/common/transformations/roi.py index 293fbf1..6e84497 100644 --- a/pyFTS/common/transformations/roi.py +++ b/pyFTS/common/transformations/roi.py @@ -1,4 +1,5 @@ from pyFTS.common.transformations.transformation import Transformation +import numpy as np class ROI(Transformation): @@ -20,4 +21,4 @@ class ROI(Transformation): def inverse(self, data, param=None, **kwargs): modified = [(param[i - 1] * data[i]) + param[i - 1] for i in np.arange(1, len(data))] - return modified \ No newline at end of file + return modified