def __init__(self, histogram_type, lowerBounding=False, logger=None): self.initialized = False self.HistogramType = histogram_type self.lowerBounding = lowerBounding self.MUSE_Bool = False logger.Log(self.__dict__, level=0) self.logger = logger self.sfa = SFA(histogram_type, LB=self.lowerBounding, logger=self.logger)
def createWords(self, samples): if self.signature == None: self.signature = SFA("EQUI_DEPTH") self.signature.fitWindowing(samples, self.windowLength, self.maxF, self.symbols, self.normMean,True) words = [] for i in range(samples["Samples"]): sfaWords = self.signature.transformWindowing(samples[i]) words_small = [] for word in sfaWords: words_small.append(self.createWord(word, self.maxF, int2byte(self.symbols))) words.append(words_small) return words
def createWords(self, samples, index, bar=None): if self.signature[index] == None: self.signature[index] = SFA("INFORMATION_GAIN", True, False) self.signature[index].fitWindowing(samples, self.windowLengths[index], self.maxF, self.symbols, self.normMean, False) # self.signature[index].printBins() words = [] for i in range(samples["Samples"]): words.append(self.signature[index].transformWindowingInt( samples[i], self.maxF)) self.words[index] = words if bar != None: bar.update(index)
def createWords(self, samples, index, data): if self.signature[index] == None: self.signature[index] = [None for _ in range(samples['Dimensions'])] for i in range(samples['Dimensions']): self.signature[index][i] = SFA(self.histogramType, self.lowerBounding, logger = self.logger, mftUseMaxOrMin=False) self.signature[index][i].mv_fitWindowing(samples, self.windowLengths[index], self.maxF, self.alphabetSize, self.normMean, self.lowerBounding, dim = i) self.signature[index][i].printBins(self.logger) words = [] for m in range(samples["Samples"]): for n in range(samples["Dimensions"]): if len(samples[m][n].data) >= self.windowLengths[index]: words.append(self.signature[index][n].transformWindowingInt(samples[m][n], self.maxF)) else: words.append([]) self.logger.Log("Generating %s Words for Norm=%s and Window=%s" % (data, self.normMean, self.windowLengths[index])) self.words[index] = words
def lookup(self, windowLength, wordLength, symbols, sequence, val): normMean = True key = (windowLength, wordLength, symbols) if key not in self.sfa: sfa = SFA("EQUI_DEPTH") sfa.fitWindowing(self.raw, windowLength, wordLength, symbols, normMean, True) self.sfa[key] = [] for i in range(self.raw["Samples"]): sfa_sr = [] wordList = sfa.transformWindowing(self.raw[i]) for word in wordList: sfa_sr.append(self.sfaToDWord(word, symbols)) #print(str(i) + "-th transformed time series SFA word " + "\t" + sfaToWordList(wordList)) self.sfa[key].append(sfa_sr) for i in range(self.raw["Samples"]): for j in range(len(self.sfa[key][i])): if sequence in self.sfa[key][i][j]: self.acscores[i, j:(j + windowLength)] += val
def createWords(self, samples, index, bar=None): if self.signature[index] == None: self.signature[index] = SFA(self.histogramType, False, self.lowerBounding, False) self.signature[index].mv_fitWindowing(samples, self.windowLengths[index], self.maxF, self.alphabetSize, self.normMean, False) # self.signature[index].printBins() words = [] for m in range(samples["Samples"]): for n in range(samples["Dimensions"]): if len(samples[m][n].data) >= self.windowLengths[index]: words.append(self.signature[index].transformWindowingInt( samples[m][n], self.maxF)) else: words.append([]) self.words[index] = words if bar != None: bar.update(index)
def sfaToWord(word): word_string = "" for w in word: word_string += chr(w + 97) return word_string def sfaToWordList(wordList): list_string = "" for word in wordList: list_string += sfaToWord(word) list_string += "; " return list_string train, test, train_labels, test_labels = load("CBF", "\t") sfa = SFA("EQUI_DEPTH") sfa.fitWindowing(train, train_labels, windowLength, wordLength, symbols, normMean, True) sfa.printBins() for i in range(test.shape[0]): wordList = sfa.transformWindowing(test.iloc[i, :]) print( str(i) + "-th transformed time series SFA word " + "\t" + sfaToWordList(wordList))
(FIXED_PARAMETERS['dataset'], scoreShotgunEnsemble)) if FIXED_PARAMETERS['test'] == 'Shotgun': logger.Log("Test: Shotgun") from src.classification.ShotgunClassifier import * shotgun = ShotgunClassifier(FIXED_PARAMETERS, logger) scoreShotgun = shotgun.eval(train, test)[0] logger.Log("%s: %s" % (FIXED_PARAMETERS['dataset'], scoreShotgun)) ##========================================================================================= ## SFA Word Tests ##========================================================================================= if FIXED_PARAMETERS['test'] == 'SFAWordTest': logger.Log("Test: SFAWordTest") from src.transformation.SFA import * sfa = SFA(FIXED_PARAMETERS["histogram_type"], logger=logger) sfa.fitTransform(train, FIXED_PARAMETERS['wordLength'], FIXED_PARAMETERS['symbols'], FIXED_PARAMETERS['normMean']) logger.Log(sfa.__dict__) for i in range(test["Samples"]): wordList = sfa.transform2(test[i].data, "null", str_return=True) logger.Log("%s-th transformed TEST time series SFA word \t %s " % (i, wordList)) if FIXED_PARAMETERS['test'] == 'SFAWordWindowingTest': logger.Log("Test: SFAWordWindowingTest") from src.transformation.SFA import * sfa = SFA(FIXED_PARAMETERS["histogram_type"], logger=logger)