- Syth data generator as well as real data available at data dir.
- Refactored models based on KalmanFilter and Singular Value Decomposition technique avalable at model dir.
- Custom fast optimization based on heuristics methods.
- Streamlit example app at examples dir.
- Most of the implemented idea/code based on my master thesis. SingularSequenceTransformation and WindowSizeSearch optimization classes has been refactored based on implementations from Fedot.Industrial legacy.
- To score change point detection models functions from TSAD lib has been used\adopted.
python3 setup.py build
# init libs
from models.SubspaceBased import SingularSequenceTransformer
from data.SythData import SinusoidWaves
from utils.Reports import SummaryReport
# init df
data = SinusoidWaves(length_data=1000,
cps_number=20,
white_noise_level="min").get()
# extract target array
target_array = data['x'].values
#define some hyperparameters apriori.
model = SingularSequenceTransformer(
queue_window=10,
n_components=2,
is_fast_parameter_selection=True,
threshold_quantile_coeff=0.95).fit(x_train=list(target_array), y_train=None)
# predict change points at target_array
cps_pred = model.predict(target_array=target_array)
# save all results at one dataframe
data['cps_pred'] = cps_pred
# plot results
data.plot(figsize=(20,5))
# get scores based on initial dataframe and model results
df_summary_report = SummaryReport().create_report(df=data,
column_name_preds="cps_pred",
column_name_original="CPs"
)
TO DO:
- Docker images to reproduce examples.
- CPD significant checker based on queue distance algorithm and statistical information for each subsequcnes.
- Hybrid model based on master thesis.
- Some more optimization hyperparameters algorithms.
- default notebook examples for each model.
- FastAPI service for end-to-end use in container.
- Advanced change point detection models based on
- More tests.