GENDIS¶

class
gendis.genetic.
GeneticExtractor
(population_size=50, iterations=25, verbose=False, normed=False, add_noise_prob=0.4, add_shapelet_prob=0.4, wait=10, plot=None, remove_shapelet_prob=0.4, crossover_prob=0.66, n_jobs=4)[source]¶ Feature selection with genetic algorithm.
 population_size : int
 The number of individuals in our population. Increasing this parameter increases both the runtime per generation, as the probability of finding a good solution.
 iterations : int
 The maximum number of generations the algorithm may run.
 wait : int
 If no improvement has been found for wait iterations, then stop
 add_noise_prob : float
 The chance that gaussian noise is added to a random shapelet from a random individual every generation
 add_shapelet_prob : float
 The chance that a shapelet is added to a random shapelet set every gen
 remove_shapelet_prob : float
 The chance that a shapelet is deleted to a random shapelet set every gen
 crossover_prob : float
 The chance that of crossing over two shapelet sets every generation
 normed : boolean
 Whether we first have to normalize before calculating distances
 n_jobs : int
 The number of threads to use
 verbose : boolean
 Whether to print some statistics in every generation
 plot : object
 Whether to plot the individuals every generation (if the population size is smaller than or equal to 20), or to plot the fittest individual
 shapelets : arraylike
 The fittest shapelet set after evolution
 label_mapping: dict
 A dictionary that maps the labels to the range [0, …, C1]
An example showing genetic shapelet extraction on a simple dataset:
>>> from tslearn.generators import random_walk_blobs >>> from genetic import GeneticExtractor >>> from sklearn.linear_model import LogisticRegression >>> import numpy as np >>> np.random.seed(1337) >>> X, y = random_walk_blobs(n_ts_per_blob=20, sz=64, noise_level=0.1) >>> X = np.reshape(X, (X.shape[0], X.shape[1])) >>> extractor = GeneticExtractor(iterations=5, n_jobs=1, population_size=10) >>> distances = extractor.fit_transform(X, y) >>> lr = LogisticRegression() >>> _ = lr.fit(distances, y) >>> lr.score(distances, y) 1.0
Methods
__init__
([population_size, iterations, …])Initialize self. fit
(X, y)Extract shapelets from the provided timeseries and labels. transform
(X)After fitting the Extractor, we can transform collections of timeseries in matrices with distances to each of the shapelets in the evolved shapelet set. fit_transform
(X, y)Combine both the fit and transform method in one. save
(path)Write away all hyperparameters and discovered shapelets to disk load
(path)Instantiate a saved GeneticExtractor