<div align="center">
<h1> rustic_ml </h1>
<p><i>A machine learning library created from scratch</i></p>
<p><strong>Created by Kjetil Indrehus</strong></p>
<br/>
<p>
<img alt="Rust" src="https://img.shields.io/badge/rust-1.74-orange?logo=rust" />
<img alt="version" src="https://img.shields.io/crates/v/rustic_ml" />
<img alt="Downloads" src="https://img.shields.io/crates/dv/rustic_ml" />
</p>
<h4>Status</h4>
<p>
<img alt="Build" src="https://github.com/KjetilIN/rustic_ml/actions/workflows/test.yml/badge.svg" />
<img alt="docs passing ci" src="https://img.shields.io/docsrs/rustic_ml" />
</p>
</div>
## Summary
`rustic_ml` is a machine learning library designed to be easy to use, and give the developer a flexible API to work with.
This library is built of first principles, and the goal is to avoid any dependencies.
> ⚠️ This library is in the prototype stage. Breaking changes can happen.
## Table of content <!-- omit in toc -->
- [Summary](#summary)
- [Feature list](#feature-list)
- [Usage](#usage)
- [Use Cases](#use-cases)
- [Binary classification](#binary-classification)
- [Macros](#macros)
- [Feature Flags](#feature-flags)
- [Deeper Reading](#deeper-reading)
## Feature list
The library includes the following key features:
- `Matrix` implementation
- `Dataframe` implementation
- `Perceptron` binary classifier
## Usage
`rustic_ml` has documentation on docs.rs. It will be very useful to read it through
https://docs.rs/rustic_ml/latest/rustic_ml/
Run the following Cargo command in your project directory:
```terminal
cargo add rustic_ml
```
Or add it to the Cargo manifest. Make sure to pick the newest version:
```toml
[dependencies]
rustic_ml = "0.0.2"
```
Also see the [./examples/](examples/) folder for different examples.
See also the specific use cases in the next section of the README file.
## Use Cases
### Binary classification
`rustic_ml` has implemented the `Perceptron`. It works well when you know your data is linearly separable.
In the example below, we use a Jupyter Notebook with Rust kernel. This makes it easy to build up models with Rust:

(See the full demo [examples/notebook_binary_classification.ipynb](examples/notebook_binary_classification.ipynb)
## Macros
> Coming soon!
## Feature Flags
> Coming soon!
## Deeper Reading
> Coming soon!