Skip to main content

Crate anofox_ml_core

Crate anofox_ml_core 

Source
Expand description

Core traits and types for the anofox-ml machine learning library.

This crate defines the foundational traits that all anofox-ml estimators and transformers implement. It uses a type-state pattern: calling Fit::fit or FitUnsupervised::fit on an unfitted configuration struct returns a distinct fitted type that implements Predict or Transform. This makes it a compile-time error to call predict on an unfitted model.

The crate also provides the Float trait (a unified bound for f32/f64), error types, train/test splitting utilities, and a Pipeline for chaining transformers with an estimator.

§Examples

use anofox_ml_core::{Fit, Predict, FitUnsupervised, Transform, Float};

// The type-state pattern in action:
// 1. `Fit` takes an unfitted config and returns a `Fitted` type.
// 2. Only the `Fitted` type implements `Predict`.
fn example_trait_bounds<F, M, FM>(model: &M, x: &ndarray::Array2<F>, y: &ndarray::Array1<F>)
where
    F: Float,
    M: Fit<F, Fitted = FM>,
    FM: Predict<F>,
{
    let fitted = model.fit(x, y).unwrap();
    let _predictions = fitted.predict(x).unwrap();
}

Re-exports§

pub use column_transformer::ColumnSelector;
pub use column_transformer::ColumnTransformer;
pub use column_transformer::Remainder;
pub use error::Result;
pub use error::RustMlError;
pub use feature_union::FeatureUnion;
pub use feature_union::FittedFeatureUnion;
pub use float::Float;
pub use function_transformer::FunctionTransformer;
pub use halving::halving_grid_search_cv;
pub use halving::halving_random_search_cv;
pub use halving::HalvingResult;
pub use inspection::permutation_importance;
pub use inspection::PermutationImportance;
pub use multi_output::ClassifierChain;
pub use multi_output::FittedClassifierChain;
pub use multi_output::FittedMultiOutputClassifier;
pub use multi_output::FittedMultiOutputRegressor;
pub use multi_output::FittedRegressorChain;
pub use multi_output::MultiOutputClassifier;
pub use multi_output::MultiOutputRegressor;
pub use multi_output::RegressorChain;
pub use pipeline::FitPredict;
pub use pipeline::FitTransform;
pub use pipeline::FittedPipeline;
pub use pipeline::Pipeline;
pub use pipeline::PredictStep;
pub use pipeline::TransformStep;
pub use sparse::CsrMatrix;
pub use traits::ClassifierScore;
pub use traits::DecisionFunction;
pub use traits::Fit;
pub use traits::FitUnsupervised;
pub use traits::FitUnsupervisedWeighted;
pub use traits::FitWeighted;
pub use traits::InverseTransform;
pub use traits::PartialFit;
pub use traits::Predict;
pub use traits::PredictLogProba;
pub use traits::PredictProba;
pub use traits::RegressorScore;
pub use traits::Transform;
pub use utils::cross_val_predict;
pub use utils::cross_val_score;
pub use utils::cross_val_score_stratified;
pub use utils::cross_validate;
pub use utils::grid_search_cv;
pub use utils::group_k_fold;
pub use utils::k_fold;
pub use utils::learning_curve;
pub use utils::leave_one_out;
pub use utils::leave_p_out;
pub use utils::randomized_search_cv;
pub use utils::repeated_k_fold;
pub use utils::repeated_stratified_k_fold;
pub use utils::shuffle_split;
pub use utils::stratified_k_fold;
pub use utils::stratified_shuffle_split;
pub use utils::time_series_split;
pub use utils::train_test_split;
pub use utils::validation_curve;
pub use utils::CrossValidateResult;
pub use utils::GridSearchResult;

Modules§

column_transformer
ColumnTransformer — apply different transformers to different column subsets.
error
feature_union
float
function_transformer
FunctionTransformer — wraps a closure as a pipeline-compatible transformer.
halving
Successive halving for hyperparameter search.
inspection
Model inspection utilities: permutation importance.
multi_output
Multi-output meta-estimators: per-output regressor / classifier wrappers.
persistence
Model persistence: save and load fitted models in JSON or bincode format.
pipeline
sparse
Compressed Sparse Row matrix type, intended for high-vocab text vectorisation output and downstream sparse-friendly estimators.
traits
utils