Skip to content

Foretools Overview

foretools is the companion toolbox that sits next to foreblocks.

Use foreblocks when you are building and training forecasting models. Use foretools when you need support utilities around that workflow: synthetic data, black-box search, exploratory diagnostics, decomposition, or feature engineering.

Best-documented tools

ToolWhen to use itDocs
foretools/tsgencreate synthetic series with known structure and ground-truth componentsTime Series Generator
foretools/bohbrun budgeted hyperparameter optimization with Hyperband + TPEBOHB Search
foretools/emd_likedecompose signals into oscillatory modes with VMD, EMD-family methods, hierarchical VMD, and multivariate supportVMD Decomposition
foretools/fengineerautomated feature engineering with transforms, interactions, MI selection, and RFECVFeature Engineering
foretools/tsaugdata augmentation — jitter, scaling, time-warp, window-slice, and AutoDA searchAutoDA Augmentation

Other foretools areas

foretools/foreminer

foreminer is an exploratory-analysis toolkit for understanding your time series before modelling.

Key capabilities (each is a registered analysis key — see get_available_analyses()):

  • Distributions & outliers — per-feature distribution and anomaly diagnostics
  • Correlations & graph analysis — pairwise correlations and correlation-network structure
  • Clustering & dimensionality — group series/windows by similarity; PCA/UMAP projections
  • Patterns & timeseries — seasonality, trend, and temporal-structure diagnostics
  • Feature engineering & SHAP — candidate features and SHAP-based importance explanations
  • Missingness & categorical groups — gap analysis and cohort-level summaries

Quick import path:

python
import pandas as pd
from foretools.foreminer.foreminer import DatasetAnalyzer

# df: a pandas DataFrame; pass time_col if you have an explicit timestamp column
analyzer = DatasetAnalyzer(df, time_col="timestamp")

# Discover the analysis keys registered in your build, then run a subset
print(analyzer.get_available_analyses())
# e.g. ['distributions', 'correlations', 'outliers', 'clusters', ...]
results = analyzer.analyze(["correlations", "outliers"])

# Run-and-plot in one step, or fetch a single analysis result
analyzer.analyze_and_plot(["clusters"])
corr = analyzer.get_results("correlations")

MIT License