LearnKit
Elixir package for machine learning
Available algorithms for prediction:
- Linear Regression
Available algorithms for classification:
- K-Nearest Neighbours
- Gaussian Naive Bayes
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.3"}
]
endLinear Regression
Initialize predictor with data:
alias LearnKit.Regression.Linear
predictor = Linear.new([1, 2, 3, 4], [3, 6, 10, 15])Fit data set with least squares method:
predictor = predictor |> Linear.fitFit data set with gradient descent method:
predictor = predictor |> Linear.fit([method: "gradient descent"])Predict using the linear model:
predictor |> Linear.predict([4, 8, 13])samples - array of variables, requiredReturns the coefficient of determination R^2 of the prediction:
predictor |> Linear.scoreK-Nearest Neighbours classification
Initialize classificator with data set consists from labels and features:
alias LearnKit.Knn
classificator = Knn.new
|> Knn.add_train_data({:a1, [-1, -1]})
|> Knn.add_train_data({:a1, [-2, -1]})
|> Knn.add_train_data({:a2, [1, 1]})Predict label for new feature:
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:
alias LearnKit.NaiveBayes.Gaussian
classificator = Gaussian.new
|> Gaussian.add_train_data({:a1, [-1, -1]})
|> Gaussian.add_train_data({:a1, [-2, -1]})
|> Gaussian.add_train_data({:a2, [1, 1]})Fit data set:
classificator = classificator |> Gaussian.fitReturn probability estimates for the feature:
classificator |> Gaussian.predict_proba([1, 2])feature - new feature for prediction, requiredReturn exact prediction for the feature:
classificator |> Gaussian.predict([1, 2])feature - new feature for prediction, requiredReturns the mean accuracy on the given test data and labels:
classificator |> Gaussian.scoreContributing
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.