Skip to main content

catfishml

catfishml is a Python library for OmniBoost++: generalized boosting with adaptive routing across heterogeneous weak learners (linear, spline/GAM-like, adaptive-depth MLP, differentiable soft tree).

Why catfishml

  • Adaptive residual router with complexity/redundancy penalties.
  • Additive boosting in natural predictor space with Newton-style targets.
  • Numeric + categorical support (categorical embeddings).
  • Missing value handling with SimpleImputer or MICE-style IterativeImputer.
  • Adaptive behavior:
    • automatic objective/distribution and metric selection,
    • linearity probe (auto linear vs nonlinear mode),
    • adaptive MLP depth + adaptive tree depth.
  • CPU/GPU via PyTorch.
  • Automatic dependency install for missing core libraries (can be disabled).

Install

pip install catfishml

For development:

pip install -e .[dev]

Quick start

import pandas as pd
from catfishml import FishyCatClassifier

X = pd.DataFrame(
    {
        "age": [25, 31, 45, None, 39, 22, 55],
        "income": [2200, 3400, 7600, 5100, None, 1900, 8800],
        "city": ["A", "B", "A", "C", "B", None, "A"],
    }
)
y = [0, 0, 1, 1, 0, 0, 1]

model = FishyCatClassifier(
    n_estimators=40,
    tree_depth=3,
    metrics="auto",
    auto_metric=True,
    impute_strategy="auto",
    candidate_families="auto",
    install_missing_libraries=True,
    n_jobs=4,
    verbose=1,
)

model.fit(X, y)
print(model.evaluate(X, y))
print(model.predict_proba(X)[:3])
fig = model.plot_visualization(kind="overview")
print(model.get_statistics())
print(model.get_history(as_dataframe=True).head())

Main API

  • FishyCatBooster
  • FishyCatClassifier

For regression, use FishyCatBooster(task="regression", ...).

Common parameters:

  • metrics: metric name ("auto", "accuracy", "auc", "logloss", "rmse", "mae", "r2") or callable.
  • auto_metric: if True, metric and training validation feedback are auto-selected by task/data.
  • impute_strategy: "auto", "simple", "iterative", or "none".
  • structure_mode: "auto", "linear", "nonlinear".
  • boosting_order: 1 (gradient) or 2 (Newton-like weighted residuals).
  • candidate_families: "auto" or subset of ["linear", "spline", "adaptive_mlp", "soft_tree"].
  • plot_visualization(kind=...): loss/routing/depth/overview diagnostics.
  • get_statistics(): full training + data summary.
  • get_history(as_dataframe=True): per-iteration history (loss, metric, ETA, routing).
  • view_data(X, transformed=True/False): inspect raw or transformed data.
  • auto_install_dependencies: auto-installs missing libs using pip at runtime.
  • install_plot_dependencies: if True, auto-installs plotting dependencies too.
  • full_report(X, y): one-shot report (statistics + history + evaluation).
  • available_components(): list of all integrated learner families/features.

Notes

  • This repository provides a practical implementation of OmniBoost++ ideas; it is not a strict reproduction of a specific paper.
  • For larger datasets, run on GPU: device="cuda".

License

MIT

Metadata

Release files for catfishml 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for catfishml 0.4.0
File Size Uploaded
catfishml-0.4.0.tar.gz 24.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for catfishml 0.4.0
File Interpreter ABI Platform
catfishml-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 49.7 kB

Release files / catfishml-0.4.0.tar.gz

Download URL catfishml-0.4.0.tar.gz
Size 24.0 kB
Tags Source
SHA-256 checksum
How to use checksums
d522de639a681571d55f491084b918be6a14154976ba97b676f4a27da3b6774d
BLAKE2b-256 checksum
How to use checksums
eb60895d97fcd4831e364a0d465999e6ea2ad08ddbf707b3857be2bdb610e7cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.2

Release files / catfishml-0.4.0-py3-none-any.whl

Download URL catfishml-0.4.0-py3-none-any.whl
Size 25.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0100b8de577ce11386fe2fec8eb2446a8524861cd6bf2426091b9351bf4b1fc3
BLAKE2b-256 checksum
How to use checksums
f8e5c1ce18a9a26954736b8306630e9af876837f18076f004907a6b770f9cd32
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.2

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page