Where Python is executable pseudocode, Julia is executable math. Models look just like the description in the paper, and you have the full power and simplicity of the Julia language (including control flow, multiple dispatch and macros).
– Flux.jl
There are many lists and tutorials out there that refer either to outdated Julia packages with no or limited compatibility with Julia 1.0 or the packages are too shallow for any useful application. Moreover, I missed some description of the packages to avoid checking them all out manually to know what they do. Therefore, I am maintaining this list here. (This list is fluent and will be updated and extended from time to time.)
Frameworks under active development (and work with Julia 1.0)
- Flux.jl
- Flux.jl is a machine learning library written entirely in Julia. It focuses on neural networks and has some great interactive examples/experiments which we can try out inside our internet browser of choice.
- More packages that are part of or made for the FluxML environment:
- Metalhead.jl
- Metalhead.jl runs on top of Flux.jl and provides common computer vision models such as VGG19. Moreover, it provides a function to download common computer vision datasets
- ONNX.jl
- ONNX.jl is a package for Julia that transfers models from ONNX format to Flux.jl format.
- Zygote.jl
- Zygote.jl implements source-to-source automatic differentiation which is important for backprop. However, it is still an early-stage prototype.
- FluxJS.jl
- FluxJS.jl allows to run Flux.jl models in a browser using TensorFlow.js
- Keras.jl
- Keras.jl allows to load keras models into Flux.jl. It requires the model architecture (
model.json
) as well as the weights (weights.h5
)
- Keras.jl allows to load keras models into Flux.jl. It requires the model architecture (
- DiffEqFlux.jl
- DiffEqFlux.jl is a framework for Neural Differential Equations based on Flux.jl and DifferentialEquations.jl.
- Metalhead.jl
- JuliaStats
- JuliaStats is an organization within the Julia language that maintains and provides the following packages (not all packages work flawlessly with Julia 1.0 so far):
- StatsBase.jl
- StatsBase.jl provides functions for basic (descriptive) statistics.
- StatsModels.jl
- StatsModels.jl provides functions for model fitting and evaluation (forked and extended from DataFrames.jl).
- DataFrames.jl
- DataFrames.jl provides R-like dataframes (also similar to parts of Pandas) and is part of JuliaData (see below).
- Distributions.jl
- Distributions.jl is a package that provides functions for all kinds of probability distributions and associated calculations on/with these distributions (e.g. moments, maximum likelihood, etc.)
- Conjugating prior distributions has been moved from Distributions.jl to ConjugatePriors.jl.
- MultivariateStats.jl
- MultivariateStats.jl is a Julia package for multivariate statistics and provides a variety of different tools for dimensionality reduction (e.g. ICA, various PCA).
- HypothesisTests.jl
- HypothesisTests.jl provides a variety of hypothesis tests covering parametric, non-parametrics and time series tests.
- MLBase.jl
- MLBase.jl provides tools for pre-processing and training models. However, it does not contain any machine learning algorithms.
- Distances.jl
- Distances.jl provides all distance measures we can think of. Furthermore, it implements a few distances metrics for weighted scenarios.
- KernelDensity.jl
- KernelDensity.jl provides kernel density estimators for univariate, multivariate applications as well as for interpolation.
- Clustering.jl
- Clustering.jl provides a wide variety of clustering algorithms as well as metrics for clustering validation.
- GLM.jl
- GLM.jl provides linear and general linear models for Julia similar to
glm()
in R’s stats package.
- GLM.jl provides linear and general linear models for Julia similar to
- GLMNet.jl
- GLMNet.jl is a wrapper for the R glmnet package.
- NMF.jl
- NMF.jl provides implementations of various Nonnegative Matrix Factorization algorithms. (It looks like this package is deprecated.)
- MCMC.jl
- Klara.jl
- Klara.jl provides the basis for all kinds of Markov Chain Monte Carlo (MCMC) inference.
- TimeSeries.jl
- TimeSeries.jl provides a very comprehensive set of functions for handling all kinds of time series.
- StatsFun.jl
- StatsFun.jl ships a variety of statistics functions, especially for densities/distributions. It seems like there is some overlap with other packages such as Distributions.jl.
- Lasso.jl
- Lasso.jl provides Lasso/elastic net linear and generalized linear models.
- StatsBase.jl
- JuliaStats is an organization within the Julia language that maintains and provides the following packages (not all packages work flawlessly with Julia 1.0 so far):
- JuliaData
- JuliaData is an organization within the Julia language that maintains and provides the following packages (not all packages work flawlessly with Julia 1.0 so far):
- DataFrames.jl
- provides R-like dataframes (also similar to parts of Pandas)
- It can be enhanced by using:
- DataStreams.jl
- DataStreams.jl provides functions to stream/transfer tabular data structures/
- Tables.jl
- Tables.jl provides functions to work with tabular data.
- Parsers.jl
- Parsers.jl is a collection of various parsers for Julia.
- SplitApplyCombine.jl
- SplitApplyCombine.jl is a tool for data manipulation.
- I/O for various file formats
- DataFrames.jl
- JuliaData is an organization within the Julia language that maintains and provides the following packages (not all packages work flawlessly with Julia 1.0 so far):
- JuliaText
- JuliaText is an organization within the Julia language that maintains and provides the following packages which are self-explanatory (not all packages work flawlessly with Julia 1.0 so far):
- Embeddings.jl
- TextAnalysis.jl
- WordTokenizers.jl
- Word2Vec.jl
- Languages.jl
- WordNet.jl
- NameToGender.jl
- CorpusLoaders.jl
- JuliaML
- JuliaML is an organization within the Julia language that maintains and provides the following packages which are self-explanatory (not all packages work flawlessly with Julia 1.0 so far):A lot of packages look deprecated
- Learn.jl
- LearnBase.jl
- LossFunctions.jl
- ObjectiveFunctions.jl
- PenaltyFunctions.jl
- MLKernels.jl
- see below
- Transformations.jl
- LearningStrategies.jl
- StochasticOptimization.jl
- ContinuousOptimization.jl
- Reinforce.jl
- OpenAIGym.jl
- AtariAlgos.jl
- MLDataUtils.jl
- MLDataUtils.jl provides basic ML related functions (e.g. train-test splitting, cross-validation etc.).
- MLLabelUtils.jl
- MLDatasets.jl
- MLDatasets.jl is an interface to load various common machine learning datasets.
- MLMetrics.jl
- ValueHistories.jl
- MLPlots.jl
- MLPlots.jl provides a pipeline to visualize states of ML algorithms (e.g. active/firing neurons of neural networks).
- MLDataPattern.jl
- Knet.jl
- Knet.jl is the Koç University deep learning framework by Deniz Yuret. If I understand him correctly, then the development is driven by his students.
- MLKernels.jl
- MLKernels.jl contains a collection of Mercer kernel functions.
- DecisionTree.jl
- DecisionTree.jl contains decision tree and random forest algorithms for classification and regression implemented in pure Julia.
- OnlineStats.jl
- uses O(1) memory only.
- Julia Computing Inc. provides a brief introduction to Big Data Analytics with OnlineStats.jl.
- JuliaDB
- JuliaDB.jl is a database for distributed analytics.
- CombineML.jl
- CombineML.jl is a toolbox to create arbitrary ensembles of models. classification only?
- GeoStats.jl
- Geospatial statistics/stochastic modeling (e.g. with various forms of Kriging)
- It is related to:
- ROCAnalysis.jl
- ROCAnalysis.jl provides a wide variety of functions for binary classification and is developed by the same person as the ROC package for R.
- Koala.jl
- Koala.jl is a framework that focuses on use of unified use of
DataFrame
objects for various ML algorithms. Some ML algorithms are implemented in Julia, others are a wrapper to existing C++ libraries. - There is another version that is a wrapper to Flux.jl called KoalaFlux.jl
- Koala.jl is a framework that focuses on use of unified use of
- MLJ.jl
- MLJ.jl is a package similar to mlr and makes heavy use of Bayesian optimization (MBO). nb!: MLJBase.jl has to be installed first. You can find my first look at MLJ.jl here.
- ManifoldLearning.jl
- ManifoldLearning.jl contains various algorithms for manifold learning.
Wrapper for Python and C++ frameworks
- TensorFlow.jl
- TensorFlow.jl is a wrapper for TensorFlow similar to TensorFlow’s developed and maintained by Jon Malmaud.
- ScikitLearn.jl
- ScikitLearn.jl is a wrapper for scikit-learn. Furthermore, it provides a scikit-learn like interface for some Julia models:
- GaussianMixtures.jl
- GaussianProcesses.jl
- DecisionTree.jl
- LowRankModels.jl
- ScikitLearn.jl is a wrapper for scikit-learn. Furthermore, it provides a scikit-learn like interface for some Julia models:
- JuliaTorch
- JuliaTorch is a wrapper for PyTorch
Deprecated/inactive frameworks (that still might be worth a visit)
- Mocha.jl
- DeepQLearning.jl
- Boltzmann.jl
- MXNet.jl
- While MXNet is still under heavy development, it seems like MXNet.jl is hardly updated anymore. The latest version of Julia that it works with seems to be v0.4.
- MXNet.jl has moved to MXNet APIs
- OnlineAI.jl
- OnlineAI.jl aims at neural networks for sequential/streaming data sources. It seems like it is deprecated for good.