Skip to content

About

Model package for loading pretrained soil fertility and fertilizer recommendation models for Morocco.

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

Repository files navigation

turba-models

Model package for loading pretrained soil fertility and fertilizer recommendation models for Morocco.

PyPI Socket Security Downloads License: MIT

turba-models is the pretrained model package of the turba ecosystem. It provides a simple way to inspect the published model artifacts, load a model for a supported crop, and generate direct NPK recommendations.

Scope of this first release

This release publishes one direct recommendation model per available crop. The models were selected from the following candidates using a fixed deterministic 80/20 split and benchmarked with the same evaluation protocol:

  • Extra Trees
  • LightGBM
  • CatBoost
  • Random Forest
  • XGBoost
  • Linear Regression
  • Ridge
  • Elastic Net
  • AdaBoost

The published models use only the following input features:

  • longitude
  • latitude
  • soil_ph
  • organic_matter_pct
  • available_p2o5
  • available_k2o

Outputs are:

  • recommended_n
  • recommended_p2o5
  • recommended_k2o

Installation

pip install turba-models

For compatibility with the packaged artifacts, use an environment with:

  • scikit-learn >= 1.6, < 1.7
  • lightgbm >= 4, < 5
  • xgboost >= 2, < 3

Quick start

import pandas as pd
import turba_models as tm

print(tm.list_models())

model = tm.load_model("Wheat (Rainfed)")

X = pd.DataFrame([
    {
        "longitude": -6.85,
        "latitude": 33.97,
        "soil_ph": 7.1,
        "organic_matter_pct": 1.2,
        "available_p2o5": 45.0,
        "available_k2o": 180.0,
    }
])

predictions = tm.predict_recommendation(model, X)
print(predictions)

Public API

from turba_models import (
    list_models,
    load_model,
    predict_recommendation,
    regression_report,
)

list_models()

Returns the published model entries and their metadata.

load_model(model_name)

Loads a packaged .joblib model. The function accepts either the crop name or the published model name.

predict_recommendation(model, X)

Runs inference and returns a DataFrame with:

  • recommended_n
  • recommended_p2o5
  • recommended_k2o

regression_report(y_true, y_pred, target_names=None)

Returns a DataFrame with:

  • r2
  • mae
  • medae
  • rmse
  • mape
  • smape

Published models in this package

  • Barley (Rainfed) — LightGBM
  • Maize (Grain) — XGBoost
  • Maize (Silage) — XGBoost
  • Wheat (Irrigated) — LightGBM
  • Wheat (Rainfed) — LightGBM

Reproducibility

  • Training and benchmark notebook reproduces the deterministic 80/20 benchmark across nine model families from the registered turba-data snapshot and generates the benchmark tables, selected-model summary, model registry, and serialized models.
  • Packaged model artifacts are under src/turba_models/models/.
  • Benchmark outputs are under reports/.

About

Model package for loading pretrained soil fertility and fertilizer recommendation models for Morocco.

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages