# [−][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 |