Coder Social home page Coder Social logo

safwank / numerix Goto Github PK

View Code? Open in Web Editor NEW
183.0 8.0 17.0 144 KB

A collection of useful mathematical functions in Elixir with a slant towards statistics, linear algebra and machine learning

License: MIT License

Elixir 100.00%
statistics math machine-learning linear-algebra

numerix's Introduction

Build Status

Numerix

A collection of useful mathematical functions in Elixir with a slant towards statistics, linear algebra and machine learning.

Installation

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

Examples

Check out the tests for examples.

Documentation

Check out the API reference for the latest documentation.

Features

Tensor API

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.

Statistics

  • Mean
  • Weighted mean
  • Median
  • Mode
  • Range
  • Variance
  • Population variance
  • Standard deviation
  • Population standard deviation
  • Moment
  • Kurtosis
  • Skewness
  • Covariance
  • Weighted covariance
  • Population covariance
  • Quantile
  • Percentile

Correlation functions

  • Pearson
  • Weighted Pearson

Distance functions

  • Mean squared error (MSE)
  • Root mean square error (RMSE)
  • Pearson
  • Minkowski
  • Euclidean
  • Manhattan
  • Jaccard

General math functions

  • nth root

Special functions

  • Logit
  • Logistic

Window functions

  • Gaussian

Linear algebra

  • Dot product
  • L1-norm
  • L2-norm
  • p-norm
  • Vector subtraction and multiplication

Linear regression

  • Least squares best fit
  • Prediction
  • R-squared

Kernel functions

  • RBF

Optimization

  • Genetic algorithms

Neural network activation functions

  • softmax
  • softplus
  • softsign
  • sigmoid
  • ReLU, leaky ReLU, ELU and SELU
  • tanh

numerix's People

Contributors

arpieb avatar franckstifler avatar mindreframer avatar safwank avatar sitch avatar theredcoder avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

numerix's Issues

Numerix 0.7

Thank you for the library.

The commit history includes a bump to 0.7 (ca2abe4), however I only see 0.6 on Hex: https://hex.pm/packages/numerix

Wondering if you plan to release 0.7 to Hex?

Also, do you know if this library will work with version 1.2.3 of the flow dependency?

triqng/triq doesn't seem to exist anymore/has moved

Hi there!

Thanks for providing a numbers and statistics library!

tobi@speedy:~/github/Numerix(master)$ mix deps.get
* Updating triq (https://github.com/triqng/triq.git)
fatal: could not read Username for 'https://github.com': No such device or address
** (Mix) Command "git --git-dir=.git fetch --force --quiet --progress" failed

One of the test dependencies. mix deps.get --only dev helps as a workaround`

Features proposal - Haversine, cumulative sum, hypotenuse

Greetings guys, recently I have been working in a Sports Science project, and we had to implement a few common math / statistical / distance related functions.

I have been thinking about making a first contribution for an open source library for a while, and this may be the right case, as many of the functions can be useful for other developers that use this library as well.

The functions are not optimized for performance, it's simple elixir code (with few calls to erlang functions), but I think it still can be helpful, so I'm opening this issue to ask for the opinion of the maintainers about the following functions: Haversine, cumulative sum, hypotenuse

I will post one example test directly because I think it's easier to understand input/output:

test "cumulative_sum/1" do
    assert Statistics.cumulative_sum([10, 20, 30, 50]) == [10, 30, 60, 110]
  end
describe "hypotenuse from numpy results: " do
    test "example 1" do
      assert Statistics.hypotenuse([1, 2, 3], [1, 2, 3], 8) == [
               1.41421356,
               2.82842712,
               4.24264069
             ]
    end

    test "example 2" do
      assert Statistics.hypotenuse([57435, 53485, 87654], [87, 4321, 8765], 8) ==
               [
                 57435.06589184,
                 53659.26076643,
                 88091.13996878
               ]
    end
  end
test "haversine/4" do
    assert Haversine.haversine(4.382623, 52.062247, 4.383485, 52.06329) ==
             {130.08865846803323, 26.93510797267679}
  end 

There are also more useful functions but I think those are the most straightforward and not domain specific ones... Please let me know if you would like to see it in Numerix, and if so I submit a PR (also would be useful some suggestions like in which module it would go etc...)

Thank you!

Feature Request - Support Precise Decimal Calculations

It would be great if this library could extend some/all of the functions to work with Decimal data types for cases where we value the additional accuracy over improved performance. Currently I can cast return values from your library to a Decimal with |> Decimal.from_float(), but by that point some accuracy has already been lost due to floating point calculations:

iex(1)> Numerix.Statistics.mean([0.1, 0.1, 0.1])
0.10000000000000002

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.