Skip to main content

TimeSmith for ML models

Project description

TimeSmith

PyPI version Python 3.9+ License: MIT Tests Documentation Code style: black

TimeSmith is a time series machine learning library with strict layer boundaries and a clean architecture.

Architecture

TimeSmith uses a four-layer architecture with strict boundaries:

Layer 1: Typing (timesmith/typing)

Scientific types and runtime validators for time series data structures:

  • SeriesLike: pandas Series or single-column DataFrame with datetime/int index
  • PanelLike: DataFrame with entity key plus time index
  • TableLike: DataFrame with row index aligned to time
  • ForecastLike: Forecast results with predictions and optional intervals

Layer 2: Core (timesmith/core)

Base classes, parameter handling, tags, and input validation:

  • BaseObject: Parameter management (get_params, set_params, clone)
  • BaseEstimator: Base class with fit capability
  • BaseTransformer: Transformers with transform and optional inverse_transform
  • BaseForecaster: Forecasters with predict and optional predict_interval
  • BaseDetector: Anomaly detectors with score and predict
  • BaseFeaturizer: Transformers that output TableLike data

Layer 3: Compose (timesmith/compose)

Pipeline and adapter objects for composition:

  • Pipeline: Chains transformer steps with scitype change support
  • ForecasterPipeline: Transformer(s) then forecaster
  • Adapter: Converts between scitypes (Series ↔ Table)
  • FeatureUnion: Runs multiple featurizers and concatenates results

Layer 4: Tasks & Eval (timesmith/tasks, timesmith/eval)

Task objects and evaluation tools:

  • ForecastTask: Binds data, horizon, and target semantics
  • DetectTask: Anomaly detection task definition
  • ExpandingWindowSplit, SlidingWindowSplit: Cross-validation splitters
  • backtest_forecaster: Run backtests with metrics
  • summarize_backtest: Aggregate and per-fold metrics

Quick Example

import pandas as pd
from timesmith import ForecastTask, backtest_forecaster, make_forecaster_pipeline
from timesmith.examples import NaiveForecaster, LogTransformer

# Load data
y = pd.Series([...], index=pd.date_range("2020-01-01", periods=100))

# Create forecast task
task = ForecastTask(y=y, fh=5, frequency="D")

# Build pipeline
transformer = LogTransformer(offset=1.0)
forecaster = NaiveForecaster()
pipeline = make_forecaster_pipeline(transformer, forecaster=forecaster)

# Run backtest
result = backtest_forecaster(pipeline, task)

# Summarize results
summary = summarize_backtest(result)
print(f"Mean MAE: {summary['aggregate_metrics']['mean_mae']:.4f}")

Running the Example

python examples/basic_forecast.py

This will:

  1. Load/generate example data
  2. Create a forecast task
  3. Build a pipeline with transformer and forecaster
  4. Run backtest
  5. Print summary metrics

Installation

pip install timesmith

Development

# Install in development mode
pip install -e ".[dev]"

# Run tests
pytest tests/

# Format code
black timesmith tests

# Run linting
flake8 timesmith tests

Design Principles

  1. Strict Layer Boundaries: Core cannot import eval. Typing cannot import anything.
  2. Validation at Boundaries: Validate once at public API boundaries only.
  3. Task Semantics: Tasks hold semantics. Estimators only store params and fitted state.
  4. Composition: Use pipelines and adapters for flexible workflows.
  5. Type Safety: Scientific types with runtime validators for data structures.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

timesmith-0.1.1.tar.gz (97.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

timesmith-0.1.1-py3-none-any.whl (134.6 kB view details)

Uploaded Python 3

File details

Details for the file timesmith-0.1.1.tar.gz.

File metadata

  • Download URL: timesmith-0.1.1.tar.gz
  • Upload date:
  • Size: 97.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for timesmith-0.1.1.tar.gz
Algorithm Hash digest
SHA256 83c2f654eac2afa91300b29c83edcfd992f4914d60f54eb74d6d6f99ce8ae222
MD5 27058588451153252af766b1f5604734
BLAKE2b-256 4d0891128d1a09f88efe5952f97918a4206368b0f5bb05a81be5d74679616966

See more details on using hashes here.

Provenance

The following attestation bundles were made for timesmith-0.1.1.tar.gz:

Publisher: release.yml on kylejones200/timesmith

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file timesmith-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: timesmith-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 134.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for timesmith-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3044afdc92b554e083c0841e73eb97bc090075e69e496b532dabca3171a7dc13
MD5 2ed215c324dae2cfaa7a1b098a86f9d9
BLAKE2b-256 db05f9c73a8f23010f7dc32f7dbb31146aeab00d4aa71491dcaada91fd4fd836

See more details on using hashes here.

Provenance

The following attestation bundles were made for timesmith-0.1.1-py3-none-any.whl:

Publisher: release.yml on kylejones200/timesmith

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page