Source code for patsemb.pattern_mining.SPMF.QCSP

import numpy as np
from typing import List

from patsemb.pattern_mining.SPMF import SPMF


[docs] class QCSP(SPMF): """ Mine frequent, sequential patterns using the QCSP algorithm. """ def __init__(self, minimum_support: int = 3, alpha: int = 3, maximum_length: int = 4, top_k_patterns: int = 25): # TODO check default parameters wih paper self.minimum_support: int = minimum_support self.alpha: int = alpha self.maximum_length: int = maximum_length self.top_k_patterns: int = top_k_patterns def mining_algorithm(self) -> str: return 'QCSP' def hyperparameters(self) -> str: return f'{self.minimum_support} {self.alpha} {self.maximum_length} {self.top_k_patterns}' 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]