LearnKit

Elixir package for machine learning

Available algorithms:

Installation

If available in Hex, the package can be installed by adding learn_kit to your list of dependencies in mix.exs:

def deps do
[
{:learn_kit, "~> 0.1.1"}
]
end

K-Nearest Neighbours classification

Initialize classificator with data set consists from labels and features:

classificator = LearnKit.Knn.new
|> LearnKit.Knn.add_train_data({:a1, [-1, -1]})
|> LearnKit.Knn.add_train_data({:a1, [-2, -1]})
|> LearnKit.Knn.add_train_data({:a2, [1, 1]})

Predict label for new feature:

LearnKit.Knn.classify(classificator, [feature: [-1, -2], k: 3, weight: "distance"])
feature - new feature for prediction, required
k - number of nearest neighbors, optional, default - 3
algorithm - algorithm for calculation of distances, one of the [brute], optional, default - "brute"
weight - method of weighted neighbors, one of the [uniform|distance], optional, default - "uniform"

Gaussian Naive Bayes classification

Initialize classificator with data set consists from labels and features:

classificator = LearnKit.NaiveBayes.Gaussian.new
|> LearnKit.NaiveBayes.Gaussian.add_train_data({:a1, [-1, -1]})
|> LearnKit.NaiveBayes.Gaussian.add_train_data({:a1, [-2, -1]})
|> LearnKit.NaiveBayes.Gaussian.add_train_data({:a2, [1, 1]})

Fit data set

classificator = classificator |> LearnKit.NaiveBayes.Gaussian.fit

Return probability estimates for the feature

classificator = classificator |> LearnKit.NaiveBayes.Gaussian.predict_proba([1, 2])
feature - new feature for prediction, required

Return exact prediction for the feature

classificator = classificator |> LearnKit.NaiveBayes.Gaussian.predict([1, 2])
feature - new feature for prediction, required

Returns the mean accuracy on the given test data and labels

classificator = classificator |> LearnKit.NaiveBayes.Gaussian.score

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/kortirso/elixir_learn_kit.

License

The package is available as open source under the terms of the MIT License.

Disclaimer

Use this package at your own peril and risk.

Documentation

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/learn_kit.