mlpack 4

mlpack 4: a fast, header-only C++ machine learning library - Published in JOSS (2023)

https://github.com/mlpack/mlpack

Science Score: 95.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README and JOSS metadata
  • Academic publication links
  • Committers with academic emails
    31 of 334 committers (9.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

c-plus-plus deep-learning hacktoberfest machine-learning machine-learning-library nearest-neighbor-search regression scientific-computing

Keywords from Contributors

astronomy standardization meshing sun solar-physics solar astropy sunpy correlation fluxes
Last synced: 4 months ago · JSON representation

Repository

mlpack: a fast, header-only C++ machine learning library

Basic Info
  • Host: GitHub
  • Owner: mlpack
  • License: other
  • Language: C++
  • Default Branch: master
  • Homepage: https://www.mlpack.org/
  • Size: 263 MB
Statistics
  • Stars: 5,467
  • Watchers: 188
  • Forks: 1,666
  • Open Issues: 28
  • Releases: 52
Topics
c-plus-plus deep-learning hacktoberfest machine-learning machine-learning-library nearest-neighbor-search regression scientific-computing
Created about 11 years ago · Last pushed 4 months ago
Metadata Files
Readme Changelog Contributing Funding License Code of conduct Governance

README.md

mlpack: a fast, header-only machine learning library
a fast, header-only machine learning library

Home | Download | Documentation | Help |

Azure DevOps builds (job) License NumFOCUS

Download: current stable version (4.6.2)

mlpack is an intuitive, fast, and flexible header-only C++ machine learning library with bindings to other languages. It is meant to be a machine learning analog to LAPACK, and aims to implement a wide array of machine learning methods and functions as a "swiss army knife" for machine learning researchers.

mlpack's lightweight C++ implementation makes it ideal for deployment, and it can also be used for interactive prototyping via C++ notebooks (these can be seen in action on mlpack's homepage).

In addition to its powerful C++ interface, mlpack also provides command-line programs, Python bindings, Julia bindings, Go bindings and R bindings.

Quick links:

mlpack uses an open governance model and is fiscally sponsored by NumFOCUS. Consider making a tax-deductible donation to help the project pay for developer time, professional services, travel, workshops, and a variety of other needs.

NumFOCUS logo


0. Contents

  1. Citation details
  2. Dependencies
  3. Installation
  4. Usage from C++
    1. Reducing compile time
  5. Building mlpack's test suite
  6. Further resources

1. Citation details

If you use mlpack in your research or software, please cite mlpack using the citation below (given in BibTeX format):

@article{mlpack2023,
    title     = {mlpack 4: a fast, header-only C++ machine learning library},
    author    = {Ryan R. Curtin and Marcus Edel and Omar Shrit and 
                 Shubham Agrawal and Suryoday Basak and James J. Balamuta and 
                 Ryan Birmingham and Kartik Dutt and Dirk Eddelbuettel and 
                 Rishabh Garg and Shikhar Jaiswal and Aakash Kaushik and 
                 Sangyeon Kim and Anjishnu Mukherjee and Nanubala Gnana Sai and 
                 Nippun Sharma and Yashwant Singh Parihar and Roshan Swain and 
                 Conrad Sanderson},
    journal   = {Journal of Open Source Software},
    volume    = {8},
    number    = {82},
    pages     = {5026},
    year      = {2023},
    doi       = {10.21105/joss.05026},
    url       = {https://doi.org/10.21105/joss.05026}
}

Citations are beneficial for the growth and improvement of mlpack.

2. Dependencies

mlpack requires the following additional dependencies:

If the STB library headers are available, image loading support will be available.

If you are compiling Armadillo by hand, ensure that LAPACK and BLAS are enabled.

3. Installation

Detailed installation instructions can be found on the Installing mlpack page.

4. Usage from C++

Once headers are installed with make install, using mlpack in an application consists only of including it. So, your program should include mlpack:

```c++

include

```

and when you link, be sure to link against Armadillo. If your example program is my_program.cpp, your compiler is GCC, and you would like to compile with OpenMP support (recommended) and optimizations, compile like this:

sh g++ -O3 -std=c++17 -o my_program my_program.cpp -larmadillo -fopenmp

Note that if you want to serialize (save or load) neural networks, you should add #define MLPACK_ENABLE_ANN_SERIALIZATION before including <mlpack.hpp>. If you don't define MLPACK_ENABLE_ANN_SERIALIZATION and your code serializes a neural network, a compilation error will occur.

Warning: older versions of OpenBLAS (0.3.26 and older) compiled to use pthreads may use too many threads for computation, causing significant slowdown. OpenBLAS versions compiled with OpenMP do not suffer from this issue. See the test build guide for more details and simple workarounds.

See also:

4.1. Reducing compile time

mlpack is a template-heavy library, and if care is not used, compilation time of a project can be very high. Fortunately, there are a number of ways to reduce compilation time:

  • Include individual headers, like <mlpack/methods/decision_tree.hpp>, if you are only using one component, instead of <mlpack.hpp>. This reduces the amount of work the compiler has to do.

  • Only use the MLPACK_ENABLE_ANN_SERIALIZATION definition if you are serializing neural networks in your code. When this define is enabled, compilation time will increase significantly, as the compiler must generate code for every possible type of layer. (The large amount of extra compilation overhead is why this is not enabled by default.)

  • If you are using mlpack in multiple .cpp files, consider using extern templates so that the compiler only instantiates each template once; add an explicit template instantiation for each mlpack template type you want to use in a .cpp file, and then use extern definitions elsewhere to let the compiler know it exists in a different file.

Other strategies exist too, such as precompiled headers, compiler options, ccache, and others.

5. Building mlpack's test suite

See the installation instruction section.

6. Further Resources

More documentation is available for both users and developers.

To learn about the development goals of mlpack in the short- and medium-term future, see the vision document.

If you have problems, find a bug, or need help, you can try visiting the mlpack help page, or mlpack on Github. Alternately, mlpack help can be found on Matrix at #mlpack; see also the community page.

Owner

  • Name: mlpack
  • Login: mlpack
  • Kind: organization
  • Email: mlpack@lists.mlpack.org

a fast, header-only C++ machine learning library

JOSS Publication

mlpack 3: a fast, flexible machine learning library
Published
June 18, 2018
Volume 3, Issue 26, Page 726
Authors
Ryan R. Curtin ORCID
Center for Advanced Machine Learning, Symantec Corporation
Marcus Edel ORCID
Institute of Computer Science, Free University of Berlin
Mikhail Lozhnikov ORCID
Moscow State University, Faculty of Mechanics and Mathematics
Yannis Mentekidis ORCID
None
Sumedh Ghaisas ORCID
None
Shangtong Zhang ORCID
University of Alberta
Editor
Kevin M. Moerman ORCID
Tags
machine learning deep learning c++ optimization template metaprogramming

Papers & Mentions

Total mentions: 3

Non-linear regression models for time to flowering in wild chickpea combine genetic and climatic factors
Last synced: 2 months ago
LinkPred: a high performance library for link prediction in complex networks
Last synced: 2 months ago
iMOKA: k-mer based software to analyze large collections of sequencing data
Last synced: 2 months ago

GitHub Events

Total
  • Create event: 6
  • Release event: 4
  • Issues event: 51
  • Watch event: 382
  • Delete event: 4
  • Issue comment event: 482
  • Push event: 105
  • Gollum event: 5
  • Pull request review comment event: 936
  • Pull request event: 245
  • Pull request review event: 854
  • Fork event: 99
Last Year
  • Create event: 6
  • Release event: 4
  • Issues event: 52
  • Watch event: 383
  • Delete event: 4
  • Issue comment event: 484
  • Push event: 105
  • Gollum event: 5
  • Pull request review comment event: 941
  • Pull request event: 245
  • Pull request review event: 862
  • Fork event: 99

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 27,991
  • Total Committers: 334
  • Avg Commits per committer: 83.805
  • Development Distribution Score (DDS): 0.74
Past Year
  • Commits: 342
  • Committers: 20
  • Avg Commits per committer: 17.1
  • Development Distribution Score (DDS): 0.386
Top Committers
Name Email Commits
Ryan Curtin r****n@r****g 7,275
(no author) (****)@9****3 3,227
Dongryeol Lee d****e@g****m 2,664
Omar Shrit o****r@s****e 1,379
Marcus Edel m****l@f****e 973
tekhnofiend n****x@g****m 711
vasiloglou n****l@i****m 476
jeffinsam j****m@k****n 366
Garry Boyer o****e@g****m 339
Bill March m****h@i****u 335
Yashwant y****h@g****m 321
Rishabh Garg 5****8 272
Roberto Hueso Gomez r****6@g****m 258
Adam Kropp 3****p 238
shubham1206agra t****4@i****n 206
stereomatchingkiss s****s@g****m 202
Parikshit Ram p****m@g****u 201
houyang h****g@9****3 200
MarcosPividori m****i@g****m 186
NippunSharma i****n@g****m 179
gmravi2003 g****3@g****u 177
Wenhao-H w****k@g****m 176
soyeon s****n@9****3 172
kartikdutt18 k****t@l****n 165
nishantkr18 n****r@g****m 158
Manish m****r@g****m 156
Mrityunjay Tripathi m****8@g****m 155
Kirill Mishchenko k****o@g****m 150
heisenbuug d****x@g****m 135
rriegel r****l@9****3 135
and 304 more...

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 189
  • Total pull requests: 710
  • Average time to close issues: 8 months
  • Average time to close pull requests: about 1 month
  • Total issue authors: 111
  • Total pull request authors: 74
  • Average comments per issue: 5.58
  • Average comments per pull request: 2.47
  • Merged pull requests: 460
  • Bot issues: 0
  • Bot pull requests: 7
Past Year
  • Issues: 37
  • Pull requests: 299
  • Average time to close issues: 27 days
  • Average time to close pull requests: 13 days
  • Issue authors: 32
  • Pull request authors: 30
  • Average comments per issue: 3.49
  • Average comments per pull request: 1.92
  • Merged pull requests: 199
  • Bot issues: 0
  • Bot pull requests: 2
Top Authors
Issue Authors
  • rcurtin (20)
  • yurivict (10)
  • shrit (8)
  • eddelbuettel (7)
  • coatless (6)
  • kiner-shah (6)
  • mrdaybird (5)
  • IgorWojas (4)
  • GLmontanari (3)
  • kumarutkarsh1248 (3)
  • cgiachalis (3)
  • shaojunjie0912 (3)
  • Adarsh97 (2)
  • Patschkowski (2)
  • akropp (2)
Pull Request Authors
  • rcurtin (297)
  • shrit (98)
  • TirelessClock (24)
  • eddelbuettel (23)
  • AdarshSantoria (21)
  • MarkFischinger (16)
  • kumarutkarsh1248 (13)
  • aadi-raj (13)
  • andrewfurey21 (12)
  • marlamb (12)
  • ViswanathBalla22 (11)
  • IWNMWE (11)
  • conradsnicta (10)
  • mrdaybird (7)
  • nzachary (7)
Top Labels
Issue Labels
t: bug report (71) s: stale (70) s: unanswered (39) c: methods (24) c: documentation (20) t: feature request (20) c: build system (13) t: question (12) good first issue (12) help wanted (12) s: unlabeled (11) c: core (10) c: binding (8) c: automatic bindings (8) t: added feature (6) s: keep open (6) c: testing (3) s: answered (3) update dependencies (3) i: installation (2) t: bug in other software (1) i: other software (1) s: fixed (1) s: spam (1) t: bugfix (1)
Pull Request Labels
t: bugfix (140) c: documentation (123) t: added feature (102) s: needs review (93) c: methods (92) s: stale (79) s: unlabeled (60) s: unanswered (59) c: build system (50) c: automatic bindings (30) c: core (30) c: testing (27) t: release (27) s: keep open (15) embedded systems (10) c: binding (9) update dependencies (7) automated PR (5) t: bug report (1) s: spam (1) Stale (1)

Packages

  • Total packages: 7
  • Total downloads:
    • cran 1,229 last-month
    • pypi 2,565 last-month
    • nuget 9,528 total
  • Total docker downloads: 48
  • Total dependent packages: 10
    (may contain duplicates)
  • Total dependent repositories: 16
    (may contain duplicates)
  • Total versions: 76
  • Total maintainers: 4
pypi.org: mlpack

a flexible, fast machine learning library

  • Versions: 25
  • Dependent Packages: 1
  • Dependent Repositories: 7
  • Downloads: 2,397 Last month
Rankings
Stargazers count: 1.0%
Forks count: 1.1%
Dependent packages count: 3.3%
Average: 3.4%
Dependent repos count: 5.7%
Downloads: 6.0%
Maintainers (2)
Last synced: 4 months ago
nuget.org: mlpack-windows.redist

Redistributable components for package 'mlpack-windows'. This package should only be installed as a dependency. (This is not the package you are looking for).

  • Versions: 3
  • Dependent Packages: 1
  • Dependent Repositories: 0
Rankings
Forks count: 0.2%
Stargazers count: 0.3%
Average: 5.9%
Dependent packages count: 10.3%
Dependent repos count: 12.7%
Last synced: 4 months ago
pypi.org: mlpack3

a flexible, fast machine learning library

  • Versions: 14
  • Dependent Packages: 0
  • Dependent Repositories: 3
  • Downloads: 168 Last month
Rankings
Stargazers count: 1.0%
Forks count: 1.1%
Average: 7.3%
Dependent packages count: 7.4%
Dependent repos count: 9.2%
Downloads: 18.1%
Maintainers (2)
Last synced: 4 months ago
cran.r-project.org: mlpack

'Rcpp' Integration for the 'mlpack' Library

  • Versions: 16
  • Dependent Packages: 7
  • Dependent Repositories: 4
  • Downloads: 1,229 Last month
  • Docker Downloads: 48
Rankings
Stargazers count: 0.0%
Forks count: 0.0%
Dependent packages count: 7.1%
Average: 7.9%
Dependent repos count: 14.8%
Downloads: 17.6%
Maintainers (1)
Last synced: 4 months ago
nuget.org: mlpack-windows

mlpack is an intuitive, fast, scalable C++ machine learning library, meant to be a machine learning analog to LAPACK. It aims to implement a wide array of machine learning methods and functions as a swiss army knife for machine learning researchers.

  • Versions: 6
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 9,528 Total
Rankings
Forks count: 0.2%
Stargazers count: 0.4%
Dependent repos count: 7.0%
Average: 9.4%
Downloads: 18.7%
Dependent packages count: 20.7%
Maintainers (1)
Last synced: 4 months ago
conda-forge.org: mlpack

mlpack is an intuitive, fast, and flexible C++ machine learning library with bindings to other languages. It is meant to be a machine learning analog to LAPACK, and aims to implement a wide array of machine learning methods and functions as a "swiss army knife" for machine learning researchers. In addition to its powerful C++ interface, mlpack also provides command-line programs and Python bindings.

  • Homepage: http://www.mlpack.org
  • License: BSD-3-Clause
  • Latest release: 4.0.0
    published about 3 years ago
  • Versions: 9
  • Dependent Packages: 0
  • Dependent Repositories: 1
Rankings
Forks count: 3.9%
Stargazers count: 5.3%
Average: 21.2%
Dependent repos count: 24.1%
Dependent packages count: 51.5%
Last synced: 4 months ago
conda-forge.org: r-mlpack
  • Versions: 3
  • Dependent Packages: 1
  • Dependent Repositories: 0
Rankings
Dependent packages count: 28.8%
Average: 31.4%
Dependent repos count: 34.0%
Last synced: 4 months ago

Dependencies

src/mlpack/bindings/go/mlpack/go.mod go
  • gonum.org/v1/gonum v0.7.0
src/mlpack/bindings/go/mlpack/go.sum go
  • github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af
  • github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90
  • github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0
  • github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5
  • golang.org/x/exp v0.0.0-20180321215751-8460e604b9de
  • golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f
  • golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2
  • golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81
  • golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b
  • golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e
  • gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4
  • gonum.org/v1/gonum v0.7.0
  • gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0
  • gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b
  • rsc.io/pdf v0.1.1
.github/workflows/main.yml actions
  • actions/cache v3 composite
  • actions/cache v1 composite
  • actions/checkout v3 composite
  • actions/download-artifact v2 composite
  • actions/upload-artifact v3 composite
  • r-lib/actions/setup-pandoc v2 composite
  • r-lib/actions/setup-r v2 composite
.github/workflows/update-catch.yaml actions
  • actions/checkout v2 composite
  • peter-evans/create-pull-request v3 composite
.github/workflows/update-cli11.yaml actions
  • actions/checkout v2 composite
  • peter-evans/create-pull-request v3 composite