[][src]Crate smartcore

SmartCore

Welcome to SmartCore, the most advanced machine learning library in Rust!

SmartCore features various classification, regression and clustering algorithms including support vector machines, random forests, k-means and DBSCAN, as well as tools for model selection and model evaluation.

SmartCore is well integrated with a with wide variaty of libraries that provide support for large, multi-dimensional arrays and matrices. At this moment, all Smartcore's algorithms work with ordinary Rust vectors, as well as matrices and vectors defined in these packages:

Getting Started

To start using SmartCore simply add the following to your Cargo.toml file:

[dependencies]
smartcore = "0.2.0"

All machine learning algorithms in SmartCore are grouped into these broad categories:

  • Clustering, unsupervised clustering of unlabeled data.
  • Martix Decomposition, various methods for matrix decomposition.
  • Linear Models, regression and classification methods where output is assumed to have linear relation to explanatory variables
  • Ensemble Models, variety of regression and classification ensemble models
  • Tree-based Models, classification and regression trees
  • Nearest Neighbors, K Nearest Neighbors for classification and regression
  • Naive Bayes, statistical classification technique based on Bayes Theorem
  • SVM, support vector machines

For example, you can use this code to fit a K Nearest Neighbors classifier to a dataset that is defined as standard Rust vector:

// DenseMatrix defenition
use smartcore::linalg::naive::dense_matrix::*;
// KNNClassifier
use smartcore::neighbors::knn_classifier::*;
// Various distance metrics
use smartcore::math::distance::*;

// Turn Rust vectors with samples into a matrix
let x = DenseMatrix::from_2d_array(&[
   &[1., 2.],
   &[3., 4.],
   &[5., 6.],
   &[7., 8.],
   &[9., 10.]]);
// Our classes are defined as a Vector
let y = vec![2., 2., 2., 3., 3.];

// Train classifier
let knn = KNNClassifier::fit(&x, &y, Default::default()).unwrap();

// Predict classes
let y_hat = knn.predict(&x).unwrap();

Modules

algorithm

Various algorithms and helper methods that are used elsewhere in SmartCore

api

Common Interfaces and API

cluster

Algorithms for clustering of unlabeled data

dataset

Various datasets Datasets

decomposition

Matrix decomposition algorithms

ensemble

Ensemble methods, including Random Forest classifier and regressor

error

Custom warnings and errors

linalg

Diverse collection of linear algebra abstractions and methods that power SmartCore algorithms

linear

Supervised classification and regression models that assume linear relationship between dependent and explanatory variables.

math

Helper methods and classes, including definitions of distance metrics

metrics

Functions for assessing prediction error.

model_selection

Model Selection methods

naive_bayes

Supervised learning algorithms based on applying the Bayes theorem with the independence assumptions between predictors

neighbors

Supervised neighbors-based learning methods

svm

Support Vector Machines

tree

Supervised tree-based learning methods