https://github.com/kujirahand/rust-knn-classifier
The classifier for the k-Nearest Neighbors (k-nn) algorithm.
https://github.com/kujirahand/rust-knn-classifier
knn-classification ml
Last synced: about 1 year ago
JSON representation
The classifier for the k-Nearest Neighbors (k-nn) algorithm.
- Host: GitHub
- URL: https://github.com/kujirahand/rust-knn-classifier
- Owner: kujirahand
- Created: 2024-02-24T08:35:06.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-02-25T04:43:20.000Z (over 2 years ago)
- Last Synced: 2025-03-22T09:25:03.399Z (about 1 year ago)
- Topics: knn-classification, ml
- Language: Rust
- Homepage:
- Size: 10.7 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# k-nn classifier
This is a library for solving classification problems using the k-nearest neighbor (k-nn) algorithm.
Due to the simplicity of the algorithm, it is lightweight and well-suited for easily solving classification problems.
## Install
```sh
cargo add knn_classifier
```
## Simple Example
The following sample is a program that determines if a person is of normal weight or fat, based on their height(cm) and weight(kg).
```rs
use knn_classifier::KnnClassifier;
fn main() {
// Create the classifier
let mut clf = KnnClassifier::new(3);
// Learn from data
clf.fit(
&[&[170., 60.], &[166., 58.], &[152., 99.], &[163., 95.], &[150., 90.]],
&["Normal", "Normal", "Obesity", "Obesity", "Obesity"]);
// Predict
let labels = clf.predict(&[vec![159., 85.], vec![165., 55.]]);
println!("{:?}", labels); // ["Fat", "Normal"]
assert_eq!(labels, ["Obesity", "Normal"]);
}
```
## Support CSV format
The classifier can be converted to and from CSV format.
```rs
// Convert Data to CSV
let s = clf.to_csv(',');
println!("{}", s);
// Convert from CSV
clf.from_csv(&s, ',', 0, false);
// Predict one
let label = clf.predict_one(&[150., 80.]);
assert_eq!(label, "Obesity");
```
## Samples
- [iris](/samples/iris/README.md)
## Repository
- [github > knn_classifier](https://github.com/kujirahand/rust-knn-classifier)
- [crates.io > knn_classifier](https://crates.io/crates/knn_classifier)
- [docs.rs > knn_classifier](https://docs.rs/knn_classifier/)
## Reference
- [k-NN algorithm](https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm)
- [k-NN algorithm (ja)](https://ja.wikipedia.org/wiki/K%E8%BF%91%E5%82%8D%E6%B3%95)