- Cheng: Trend Weighted FTS

This commit is contained in:
Petrônio Cândido de Lima e Silva 2017-04-19 19:58:25 -03:00
parent bdc7ad233b
commit 55638cbe20
2 changed files with 49 additions and 2 deletions

47
cheng.py Normal file
View File

@ -0,0 +1,47 @@
import numpy as np
from pyFTS.common import FuzzySet,FLR
from pyFTS import fts, yu
class TrendWeightedFLRG(yu.WeightedFTS):
def __init__(self, LHS, **kwargs):
super(TrendWeightedFTS, self).__init__(LHS)
def weights(self):
count_nochange = 0.0
count_up = 0.0
count_down = 0.0
weights = []
for c in self.RHS:
tmp = 0
if self.RHS.midpoint == c.midpoint:
count_nochange += 1.0
tmp = count_nochange
elif self.RHS.midpoint > c.midpoint:
count_down += 1.0
tmp = count_down
else:
count_up += 1.0
tmp = count_up
weights.append(tmp)
tot = sum(weights)
return np.array([k / tot for k in weights])
class TrendWeightedFTS(yu.WeightedFTS):
def __init__(self, order, name, **kwargs):
super(TrendWeightedFTS, self).__init__(1, "TWFTS " + name)
self.name = "Trend Weighted FTS"
self.detail = "Cheng"
def generateFLRG(self, flrs):
flrgs = {}
for flr in flrs:
if flr.LHS.name in flrgs:
flrgs[flr.LHS.name].append(flr.RHS)
else:
flrgs[flr.LHS.name] = TrendWeightedFLRG(flr.LHS);
flrgs[flr.LHS.name].append(flr.RHS)
return (flrgs)

4
yu.py
View File

@ -4,7 +4,7 @@ from pyFTS import fts
class WeightedFLRG(fts.FTS): class WeightedFLRG(fts.FTS):
def __init__(self, order, **kwargs): def __init__(self, order, LHS, **kwargs):
self.LHS = LHS self.LHS = LHS
self.RHS = [] self.RHS = []
self.count = 1.0 self.count = 1.0
@ -31,7 +31,7 @@ class WeightedFLRG(fts.FTS):
class WeightedFTS(fts.FTS): class WeightedFTS(fts.FTS):
def __init__(self, order, **kwargs): def __init__(self, order, name, **kwargs):
super(WeightedFTS, self).__init__(1, "WFTS " + name) super(WeightedFTS, self).__init__(1, "WFTS " + name)
self.name = "Weighted FTS" self.name = "Weighted FTS"
self.detail = "Yu" self.detail = "Yu"