6 releases
0.3.2 | May 1, 2023 |
---|---|
0.3.1 | Mar 20, 2023 |
0.3.0 | Nov 9, 2022 |
0.2.1 | May 9, 2022 |
0.1.0 | Sep 26, 2020 |
#86 in Machine learning
2,236 downloads per month
Used in 17 crates
(14 directly)
1MB
23K
SLoC
User guide | API | Notebooks
Machine Learning in Rust
To start getting familiar with the new smartcore v0.3 API, there is now available a Jupyter Notebook environment repository. Please see instructions there, contributions welcome see CONTRIBUTING.
lib.rs
:
smartcore
Welcome to smartcore
, machine learning 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
provides its own traits system that extends Rust standard library, to deal with linear algebra and common
computational models. Its API is designed using well recognizable patterns. Extra features (like support for ndarray
structures) is available via optional features.
Getting Started
To start using smartcore
latest stable version simply add the following to your Cargo.toml
file:
[dependencies]
smartcore = "*"
To start using smartcore development version with latest unstable additions:
[dependencies]
smartcore = { git = "https://github.com/smartcorelib/smartcore", branch = "development" }
There are different features that can be added to the base library, for example to add sample datasets:
[dependencies]
smartcore = { git = "https://github.com/smartcorelib/smartcore", features = ["datasets"] }
Check smartcore
's Cargo.toml
for available features.
Using Jupyter
For quick introduction, Jupyter Notebooks are available here. You can set up a local environment to run Rust notebooks using EVCXR following these instructions.
First Example
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 definition
use smartcore::linalg::basic::matrix::DenseMatrix;
// KNNClassifier
use smartcore::neighbors::knn_classifier::*;
// Various distance metrics
use smartcore::metrics::distance::*;
// Turn Rust vector-slices 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();
Overview
Supported algorithms
All machine learning algorithms are grouped into these broad categories:
- Clustering, unsupervised clustering of unlabeled data.
- Matrix 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
Linear Algebra traits system
For an introduction to smartcore
's traits system see this notebook
Dependencies
~0.7–1.8MB
~33K SLoC