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.1.0.tar.gz (71.4 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.1.0-py3-none-any.whl (49.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for smallaxe-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7a883b79989a90b2be80c8896fdabfe232c2297d7f561c0ed61482c436a5b4e9
MD5 1662d6281b5fe1fa219aaa712ea17654
BLAKE2b-256 4992dd1f902ef975f20c9c38a039f1b8a40b4a3d97f2c2380b4f9a014b60f585

See more details on using hashes here.

File details

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

File metadata

  • Download URL: smallaxe-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 49.3 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4c9b27d195f3499fa4a821a8921fc663d9723547f335380f00579303287c03e6
MD5 a71104e3e76bee38e4db0f00c20d9703
BLAKE2b-256 c3a4bbfc8d0507ce6739e75c3925a8dabd55df52e8de6cb0349c992200f8945e

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