Source code for patsemb.pattern_mining.SPMF.NOSEP


import numpy as np
from typing import List

from patsemb.pattern_mining.SPMF import SPMF


[docs] class NOSEP(SPMF): """ Mine frequent, sequential patterns using the NOSEP algorithm. """ def __init__(self, minimum_length: int = 1, maximum_length: int = 20, minimum_gap: int = 0, maximum_gap: int = 2, minimum_support: int = 10): # TODO check default parameters wih paper self.minimum_length: int = minimum_length self.maximum_length: int = maximum_length self.minimum_gap: int = minimum_gap self.maximum_gap: int = maximum_gap self.minimum_support: int = minimum_support def mining_algorithm(self) -> str: return 'NOSEP' def hyperparameters(self) -> str: return f'{self.minimum_length} {self.maximum_length} {self.minimum_gap} {self.maximum_gap} {self.minimum_support}' def _encode_input_string(self, discrete_sequences: np.ndarray) -> str: return ' -1 -2\n'.join([' -1 '.join(pattern.astype(str)) for pattern in discrete_sequences]) + ' -1 -2' def _decode_output_string(self, output_lines: List[str]) -> List[np.array]: return [np.array(output_line.split(' -1 ')[:-1], dtype=int) for output_line in output_lines]