About

Linfa aims to provide a comprehensive toolkit to build Machine Learning applications with Rust.

Kin in spirit to Python's scikit-learn, it focuses on common preprocessing tasks and classical ML algorithms for your everyday ML tasks.

Current state

Where does linfa stand right now? Are we learning yet?

linfa currently provides sub-packages with the following algorithms:

NamePurposeStatusCategoryNotes
bayesNaive BayesTestedSupervised learningContains Bernouilli, Gaussian and Multinomial Naive Bayes
clusteringData clusteringTested / BenchmarkedUnsupervised learningClustering of unlabeled data; contains K-Means, Gaussian-Mixture-Model, DBSCAN and OPTICS
ensembleEnsemble methodsTestedSupervised learningContains bagging, random forest and AdaBoost
elasticnetElastic NetTestedSupervised learningLinear regression with elastic net constraints
ftrlFollow The Regularized Leader - proximalTested / BenchmarkedPartial fitContains L1 and L2 regularization. Possible incremental update
hierarchicalAgglomerative hierarchical clusteringTestedUnsupervised learningCluster and build hierarchy of clusters
icaIndependent component analysisTestedUnsupervised learningContains FastICA implementation
kernelKernel methods for data transformationTestedPre-processingMaps feature vector into higher-dimensional space
larsLinear regressionTestedSupervised learningContains Least Angle Regression (LARS)
linearLinear regressionTestedSupervised learningContains Ordinary Least Squares (OLS), Generalized Linear Models (GLM)
logisticLogistic regressionTestedPartial fitBuilds two-class logistic regression models
nnNearest Neighbours & DistancesTested / BenchmarkedPre-processingSpatial index structures and distance functions
plsPartial Least SquaresTestedSupervised learningContains PLS estimators for dimensionality reduction and regression
preprocessingNormalization & VectorizationTested / BenchmarkedPre-processingContains data normalization/whitening and count vectorization/tf-idf
reductionDimensionality reductionTestedPre-processingDiffusion mapping, Principal Component Analysis (PCA), Random projections
svmSupport Vector MachinesTestedSupervised learningClassification or regression analysis of labeled datasets
treesDecision treesTested / BenchmarkedSupervised learningLinear decision trees
tsneDimensionality reductionTestedUnsupervised learningContains exact solution and Barnes-Hut approximation t-SNE

We believe that only a significant community effort can nurture, build, and sustain a machine learning ecosystem in Rust - there is no other way forward.

If this strikes a chord with you, please take a look at the roadmap and get involved!