Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/whizsid/kddbscan-rs
A rust library inspired by kDDBSCAN clustering algorithm
https://github.com/whizsid/kddbscan-rs
clustering data-science density-based-clustering deviation machine-learning-algorithms pinned
Last synced: about 1 month ago
JSON representation
A rust library inspired by kDDBSCAN clustering algorithm
- Host: GitHub
- URL: https://github.com/whizsid/kddbscan-rs
- Owner: whizsid
- License: mit
- Created: 2020-05-30T14:26:12.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-06-13T15:19:37.000Z (over 4 years ago)
- Last Synced: 2024-09-10T11:38:31.420Z (2 months ago)
- Topics: clustering, data-science, density-based-clustering, deviation, machine-learning-algorithms, pinned
- Language: Rust
- Homepage:
- Size: 39.1 KB
- Stars: 4
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# kddbscan-rs
[![GitHub Actions](https://github.com/whizsid/kddbscan-rs/workflows/Main/badge.svg)](https://github.com/whizsid/kddbscan-rs/actions) [![crates.io](http://meritbadge.herokuapp.com/kddbscan)](https://crates.io/crates/kddbscan) [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) [![Released API docs](https://docs.rs/kddbscan/badge.svg)](http://docs.rs/kddbscan) [![Master API docs](https://img.shields.io/badge/docs-master-green.svg)](https://docs.rs/kddbscan)Rust implementation of the kddbscan clustering algorithm.
From the authors of kDDBSCAN algorithm.
> Due to the adoption of global parameters, DBSCAN fails to
> identify clusters with different and varied densities. To
> solve the problem, this paper extends DBSCAN by exploiting
> a new density definition and proposes a novel algorithm
> called k -deviation density based DBSCAN (kDDBSCAN). Various
> datasets containing clusters with arbitrary shapes and
> different or varied densities are used to demonstrate the
> performance and investigate the feasibility and practicality
> of kDDBSCAN. The results show that kDDBSCAN performs
> better than DBSCAN.[Read More](https://www.researchgate.net/publication/323424266_A_k_-Deviation_Density_Based_Clustering_Algorithm)
## Installation
Add `kddbscan` as a dependency in your `Cargo.toml` file
```toml
[dependencies]
kddbscan = "0.1.0"
```## Usage
Implement `IntoPoint` trait on your point struct. And pass a vector of points to the `cluster` function.
```rust
use kddbscan::{cluster, IntoPoint, ClusterId};pub struct Coordinate {
pub x: f64,
pub y: f64,
}impl IntoPoint for Coordinate {
fn get_distance(&self, neighbor: &Coordinate) -> f64 {
((self.x - neighbor.x).powi(2) + (self.y - neighbor.y).powi(2)).powf(0.5)
}
}fn main() {
let mut coordinates: Vec = vec![];
coordinates.push(Coordinate { x: 11.0, y: 12.0 });
coordinates.push(Coordinate { x: 0.0, y: 0.0 });
coordinates.push(Coordinate { x: 12.0, y: 11.0 });
coordinates.push(Coordinate { x: 11.0, y: 9.0 });
coordinates.push(Coordinate { x: 10.0, y: 8.0 });
coordinates.push(Coordinate { x: 1.0, y: 2.0 });
coordinates.push(Coordinate { x: 3.0, y: 1.0 });
coordinates.push(Coordinate { x: 4.0, y: 4.0 });
coordinates.push(Coordinate { x: 9.0, y: 0.0 });let clustered = cluster(coordinates, 2, None, None);
}
```## Showcase
This is the output of example project.
![Output of the kddbscan algorithm](./example/result.png)
## Contribution
All PRs and issues are welcome. and starts are also welcome.
## License
This project is under the MIT license and the algorithm is under the CC BY 4.0 license.