A collection of useful mathematical functions in Elixir with a slant towards statistics, linear algebra and machine learning.
Add numerix
to your list of dependencies in mix.exs
:
def deps do
[{:numerix, "~> 0.6"}]
end
Ensure numerix
and its dependencies are started before your application:
def application do
[applications: [:numerix, :gen_stage, :flow]]
end
Check out the tests for examples.
Check out the API reference for the latest documentation.
Numerix now includes a Tensor API that lets you implement complex math functions with little code, similar to what you get from numpy
. And since Numerix is written in Elixir, it uses Flow
to run independent pieces of computation in parallel to speed things up. Depending on the type of calculations you're doing, the bigger the data and the more cores you have, the faster it gets.
NOTE: Parallelization can only get you so far. In terms of raw speed, a pure Elixir solution will always be much slower compared to one that leverages low-level routines like BLAS or similar.
- Mean
- Weighted mean
- Median
- Mode
- Range
- Variance
- Population variance
- Standard deviation
- Population standard deviation
- Moment
- Kurtosis
- Skewness
- Covariance
- Weighted covariance
- Population covariance
- Quantile
- Percentile
- Pearson
- Weighted Pearson
- Mean squared error (MSE)
- Root mean square error (RMSE)
- Pearson
- Minkowski
- Euclidean
- Manhattan
- Jaccard
- nth root
- Logit
- Logistic
- Gaussian
- Dot product
- L1-norm
- L2-norm
- p-norm
- Vector subtraction and multiplication
- Least squares best fit
- Prediction
- R-squared
- RBF
- Genetic algorithms
- softmax
- softplus
- softsign
- sigmoid
- ReLU, leaky ReLU, ELU and SELU
- tanh