Skip to main content

Framework Agnostic Cross-validation Trainer

Project description

factrainer

CI codecov PyPI image License Stars

factrainer (Framework Agnostic Cross-validation Trainer) is a machine learning tool that provides a flexible cross-validation training framework. It addresses the limitations of existing cross-validation utilities in popular ML libraries by offering a unified, parallelized approach that retains models and yields out-of-fold predictions.

Why Use factrainer?

Modern ML frameworks have useful cross-validation functions, but they come with notable limitations:

  • scikit-learn:
    • cross_val_score: cannot provide out-of-fold (OOF) predictions for each sample.
    • cross_val_predict: cannot retain the trained model from each fold (only returns predictions).
  • LightGBM:
    • lgb.cv: does not support parallelized training of cv.

These gaps make it cumbersome to get both OOF predictions and reusable trained models in a single workflow.

Key Features

  • Unified Cross-Validation API – Provides a single, consistent interface to perform K-fold (or any CV) training, acting as a meta-framework that wraps around multiple ML libraries.
  • Parallelized Training – Run cross-validation folds in parallel to fully utilize multi-core CPUs and speed up model training.
  • Mutable Model Container – Access each fold’s trained model as a mutable object. This makes it easy to analyze models or create ensembles from the fold models.
  • Out-of-Fold Predictions – Retrieve out-of-fold predictions for every training instance through a simple API.

Installation

To install with LightGBM support:

pip install "factrainer[lightgbm]"

At present, LightGBM is the primary supported backend. Support for additional frameworks will be added as the project evolves.

Get started

Code example: California Housing dataset

import lightgbm as lgb
from sklearn.datasets import fetch_california_housing
from factrainer.core import CvModelContainer
from factrainer.lightgbm import LgbDataset, LgbModelConfig, LgbTrainConfig

data = fetch_california_housing()
dataset = LgbDataset(
    dataset=lgb.Dataset(
        data.data, label=data.target
    )
)
config = LgbModelConfig.create(
    train_config=LgbTrainConfig(
        params={"objective": "regression"},
        callbacks=[lgb.early_stopping(100, verbose=False)],
    ),
)
k_fold = KFold(n_splits=4, shuffle=True, random_state=1)
model = CvModelContainer(config, k_fold)
model.train(dataset, n_jobs=4)

# trained models
model.raw_model

# OOF prediction
y_pred = model.predict(dataset, n_jobs=4)
print(r2_score(data.target, y_pred))

Project Status

factrainer is in active development. The goal is to expand support to more frameworks and make the tool even more robust. Contributions, issues, and feedback are welcome to help shape the future of factrainer.

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

factrainer-0.1.18.tar.gz (110.3 kB view details)

Uploaded Source

Built Distribution

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

factrainer-0.1.18-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file factrainer-0.1.18.tar.gz.

File metadata

  • Download URL: factrainer-0.1.18.tar.gz
  • Upload date:
  • Size: 110.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for factrainer-0.1.18.tar.gz
Algorithm Hash digest
SHA256 a7f019d767ad3de2d3b11f43422a7ada1e5a7ec945d39265134d5cf3039494cf
MD5 09fd2c89b1b56056eb9f1fee3965406f
BLAKE2b-256 e167309826c6b34ad8fdcc1890e7ac099b601785d29499b3fd6704be72b51a33

See more details on using hashes here.

Provenance

The following attestation bundles were made for factrainer-0.1.18.tar.gz:

Publisher: cd-release.yaml on ritsuki1227/factrainer

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

File details

Details for the file factrainer-0.1.18-py3-none-any.whl.

File metadata

  • Download URL: factrainer-0.1.18-py3-none-any.whl
  • Upload date:
  • Size: 15.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for factrainer-0.1.18-py3-none-any.whl
Algorithm Hash digest
SHA256 c66cc0f21d4f52012114995e02223bb2f7d99448d4e4674adb7eb91ad97c14fe
MD5 20895d56d69e2e677730bfb2a6eb7fc6
BLAKE2b-256 e215e032f6a783eb5ff27011f58fe3dfb4f239bc588c7c3f2e4c11fbdf0cfef5

See more details on using hashes here.

Provenance

The following attestation bundles were made for factrainer-0.1.18-py3-none-any.whl:

Publisher: cd-release.yaml on ritsuki1227/factrainer

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