Skip to main content

A PySpark MLOps library for simplified model training and optimization

Project description

smallaxe

CI

A PySpark MLOps library that simplifies model training, evaluation, and optimization for PySpark DataFrames.

Why smallaxe?

PySpark MLlib has a steep learning curve and verbose API. smallaxe provides a clean, scikit-learn-like interface for common ML workflows while leveraging the distributed power of Spark.

Features

  • Simple API - Train models with familiar fit()/predict() patterns
  • Multiple Algorithms - XGBoost, LightGBM, CatBoost, and Random Forest
  • Preprocessing Pipeline - Imputer, Scaler, Encoder with chainable pipelines
  • Hyperparameter Optimization - Built-in hyperopt integration with early stopping
  • Automated Training - Train all algorithms and compare with one call
  • Visualization - Plotly-based charts for model evaluation
  • Cross-Validation - Train/test split and k-fold with stratified sampling

Installation

pip install smallaxe

Install with optional algorithm dependencies:

pip install smallaxe[xgboost]    # XGBoost support
pip install smallaxe[lightgbm]   # LightGBM support
pip install smallaxe[catboost]   # CatBoost support
pip install smallaxe[all]        # All algorithms

Quick Start

from smallaxe.training import Regressors
from smallaxe.datasets import load_sample_regression

# Load sample data
df = load_sample_regression(spark)

# Train a model
model = Regressors.random_forest()
model.fit(df, label_col='price', exclude_cols=['id'])

# Make predictions
predictions = model.predict(df)

Usage Examples

Training with Cross-Validation

from smallaxe.training import Classifiers

model = Classifiers.xgboost(task='binary')
model.fit(
    df,
    label_col='churn',
    validation='kfold',
    n_folds=5,
    stratified=True
)

print(model.validation_scores)

Preprocessing Pipeline

from smallaxe.pipeline import Pipeline
from smallaxe.preprocessing import Imputer, Scaler, Encoder
from smallaxe.training import Regressors

pipeline = Pipeline([
    ('imputer', Imputer(numerical_strategy='median')),
    ('scaler', Scaler(method='standard')),
    ('encoder', Encoder(method='onehot')),
    ('model', Regressors.xgboost())
])

pipeline.fit(
    df,
    label_col='target',
    numerical_cols=['age', 'income'],
    categorical_cols=['city', 'category']
)

predictions = pipeline.predict(new_df)

Hyperparameter Optimization

from smallaxe.search import optimize
from hyperopt import hp

param_grid = {
    'max_depth': hp.choice('max_depth', [3, 5, 7, 10]),
    'learning_rate': hp.uniform('learning_rate', 0.01, 0.3)
}

best_model = optimize.run(
    model=Regressors.xgboost(),
    dataframe=df,
    label_col='target',
    param_grid=param_grid,
    metric='rmse',
    max_evals=50
)

print(best_model.best_params)

Automated Training

from smallaxe.auto import AutomatedTraining

auto = AutomatedTraining(model_type='classification', metrics=['f1_score', 'auc_roc'])
auto.fit(
    df,
    label_col='churn',
    numerical_cols=['tenure', 'monthly_charges'],
    categorical_cols=['contract'],
    n_folds=5
)

# Compare all models
auto.metrics.show()

# Use best model
predictions = auto.predict(new_df)

Supported Algorithms

Algorithm Regressor Classifier Dependencies
Random Forest Yes Yes None (native PySpark)
XGBoost Yes Yes smallaxe[xgboost]
LightGBM Yes Yes smallaxe[lightgbm]
CatBoost Yes Yes smallaxe[catboost]

Requirements

  • Python 3.8 - 3.12
  • PySpark 3.3+

License

MIT License

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

smallaxe-0.6.2.tar.gz (81.2 kB view details)

Uploaded Source

Built Distribution

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

smallaxe-0.6.2-py3-none-any.whl (53.0 kB view details)

Uploaded Python 3

File details

Details for the file smallaxe-0.6.2.tar.gz.

File metadata

  • Download URL: smallaxe-0.6.2.tar.gz
  • Upload date:
  • Size: 81.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for smallaxe-0.6.2.tar.gz
Algorithm Hash digest
SHA256 c2d75a865cf7e2dc730b8b89ac52d3315f25829a01f71d1d4f7940fc6f235617
MD5 f38a29b838cb310d7a16d79b2993ac27
BLAKE2b-256 66b25e83f52cc11e0082d7bf3ab5031d362532c3483e7395d57f60e9bbb1a8d4

See more details on using hashes here.

File details

Details for the file smallaxe-0.6.2-py3-none-any.whl.

File metadata

  • Download URL: smallaxe-0.6.2-py3-none-any.whl
  • Upload date:
  • Size: 53.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for smallaxe-0.6.2-py3-none-any.whl
Algorithm Hash digest
SHA256 25e35005e688d0c1e9d6c2e724fdee4b5029d3b0271a51e229b07178263b2d20
MD5 255d3857293bbb2e4c86e8a0db4cfda4
BLAKE2b-256 626ef09c444e12ab185f25f28fed58c056f9bf84a3473386afc48a81258d3be1

See more details on using hashes here.

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