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.3.tar.gz (85.6 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.3-py3-none-any.whl (55.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: smallaxe-0.6.3.tar.gz
  • Upload date:
  • Size: 85.6 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.3.tar.gz
Algorithm Hash digest
SHA256 28764c4f5d3852c8af590cac2ec3fae499ffe33492fed2bead0e8ad8e91fab77
MD5 441048059a80315381376e41338d0aec
BLAKE2b-256 96b026a836a606c396786123fa13412d95399da9053f69dc25015471df6672d8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: smallaxe-0.6.3-py3-none-any.whl
  • Upload date:
  • Size: 55.7 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7beddaf886c94399eda0becae39390f2ae38b7fafedce999e90c3c94f4856c2b
MD5 5a4722f375bf383b95679ba83d9c1800
BLAKE2b-256 beb0c2002c80c8dd1194fd884529ada29fbdf17102ee3d9703a3c1181dd9012f

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