doddle-model is an in-memory machine learning library that can be summed up with three main characteristics:
- it is built on top of Breeze
- it provides immutable estimators that are a doddle to use in parallel code
- it exposes its functionality through a scikit-learn-like API  in idiomatic Scala using typeclasses
doddle-model is in an early-stage development phase. Any kind of contributions are much appreciated.
Add the dependency to your SBT project definition:
libraryDependencies += "io.github.picnicml" %% "doddle-model" % "<latest_version>"
Note that the latest version is displayed in the Latest Release badge above and that the v prefix should be removed from the SBT definition.
doddle-model is developed with performance in mind, for benchmarks see the doddle-benchmark repository.
Native Linear Algebra Libraries
INFO: successfully loaded /var/folders/9h/w52f2svd3jb750h890q1x4j80000gn/T/jniloader3358656786070405996netlib-native_system-osx-x86_64.jnilib
means that BLAS/LAPACK/ARPACK implementations are used. For more information see the Breeze documentation.
If you encounter
java.lang.OutOfMemoryError: Java heap space increase the maximum heap size with
-Xmx JVM properties. E.g. use
-Xms8192m -Xmx8192m for initial and maximum heap space of 8Gb. Note that the maximum heap limit for the 32-bit JVM is 4Gb (at least in theory) so make sure to use 64-bit JVM if more memory is needed. If the error still occurs and you are using hyperparameter search or cross validation, see the next section.
To limit the number of threads running at one time (and thus memory consumption) when doing cross validation and hyperparameter search, a
FixedThreadPool executor is used. By default maximum number of threads is set to the number of system's cores. Set the
-DmaxNumThreads JVM property to change that, e.g. to allow for 16 threads use
For a list of typeclasses that together define the estimator API see the typeclasses directory.
-  Pattern Recognition and Machine Learning, Christopher Bishop
-  API design for machine learning software: experiences from the scikit-learn project, L. Buitinck et al.
-  UCI Machine Learning Repository. Irvine, CA: University of California, School of Information and Computer Science, Dua, D. and Karra Taniskidou, E.