Skip to content

Commit

Permalink
Rename default hyper params constructor
Browse files Browse the repository at this point in the history
  • Loading branch information
tom-whitehead committed Sep 17, 2024
1 parent 5807b1e commit 0cef0df
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 11 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ let data: Vec<Vec<f32>> = vec![
vec![4.0, 4.1],
vec![10.0, 10.0],
];
let clusterer = Hdbscan::default(&data);
let clusterer = Hdbscan::default_hyper_params(&data);
let labels = clusterer.cluster().unwrap();
//First five points form one cluster
assert_eq!(1, labels[..5].iter().collect::<HashSet<_>>().len());
Expand Down
26 changes: 16 additions & 10 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
//! vec![4.0, 4.1],
//! vec![10.0, 10.0],
//!];
//!let clusterer = Hdbscan::default(&data);
//!let clusterer = Hdbscan::default_hyper_params(&data);
//!let labels = clusterer.cluster().unwrap();
//!//First five points form one cluster
//!assert_eq!(1, labels[..5].iter().collect::<HashSet<_>>().len());
Expand Down Expand Up @@ -126,6 +126,12 @@ impl<'a, T: Float> Hdbscan<'a, T> {
}
}

#[deprecated(since="0.8.1", note="Please use `default_hyper_params` constructor instead")]
pub fn default(data: &'a [Vec<T>]) -> Hdbscan<T> {
let hyper_params = HdbscanHyperParams::default();
Hdbscan::new(data, hyper_params)
}

/// Creates an instance of HDBSCAN clustering model using the default hyper parameters.
///
/// # Parameters
Expand All @@ -150,9 +156,9 @@ impl<'a, T: Float> Hdbscan<'a, T> {
/// vec![3.7, 4.0],
/// vec![3.9, 3.9],
///];
///let clusterer = Hdbscan::default(&data);
///let clusterer = Hdbscan::default_hyper_params(&data);
/// ```
pub fn default(data: &'a [Vec<T>]) -> Hdbscan<T> {
pub fn default_hyper_params(data: &'a [Vec<T>]) -> Hdbscan<T> {
let hyper_params = HdbscanHyperParams::default();
Hdbscan::new(data, hyper_params)
}
Expand Down Expand Up @@ -185,7 +191,7 @@ impl<'a, T: Float> Hdbscan<'a, T> {
/// vec![4.0, 4.1],
/// vec![10.0, 10.0],
///];
///let clusterer = Hdbscan::default(&data);
///let clusterer = Hdbscan::default_hyper_params(&data);
///let labels = clusterer.cluster().unwrap();
/// //First five points form one cluster
///assert_eq!(1, labels[..5].iter().collect::<HashSet<_>>().len());
Expand Down Expand Up @@ -237,7 +243,7 @@ impl<'a, T: Float> Hdbscan<'a, T> {
/// vec![4.0, 4.1],
/// vec![10.0, 10.0],
///];
///let clusterer = Hdbscan::default(&data);
///let clusterer = Hdbscan::default_hyper_params(&data);
///let labels = clusterer.cluster().unwrap();
///let centroids = clusterer.calc_centers(Center::Centroid, &labels).unwrap();
///assert_eq!(2, centroids.len());
Expand Down Expand Up @@ -885,7 +891,7 @@ mod tests {
#[test]
fn cluster() {
let data = cluster_test_data();
let clusterer = Hdbscan::default(&data);
let clusterer = Hdbscan::default_hyper_params(&data);
let result = clusterer.cluster().unwrap();
// First five points form one cluster
assert_eq!(1, result[..5].iter().collect::<HashSet<_>>().len());
Expand Down Expand Up @@ -925,31 +931,31 @@ mod tests {
#[test]
fn empty_data() {
let data: Vec<Vec<f32>> = Vec::new();
let clusterer = Hdbscan::default(&data);
let clusterer = Hdbscan::default_hyper_params(&data);
let result = clusterer.cluster();
assert!(matches!(result, Err(HdbscanError::EmptyDataset)));
}

#[test]
fn non_finite_coordinate() {
let data = vec![vec![1.5, f32::infinity()]];
let clusterer = Hdbscan::default(&data);
let clusterer = Hdbscan::default_hyper_params(&data);
let result = clusterer.cluster();
assert!(matches!(result, Err(HdbscanError::NonFiniteCoordinate(..))));
}

#[test]
fn mismatched_dimensions() {
let data = vec![vec![1.5, 2.2], vec![1.0, 1.1], vec![1.2]];
let clusterer = Hdbscan::default(&data);
let clusterer = Hdbscan::default_hyper_params(&data);
let result = clusterer.cluster();
assert!(matches!(result, Err(HdbscanError::WrongDimension(..))));
}

#[test]
fn calc_centers() {
let data = cluster_test_data();
let clusterer = Hdbscan::default(&data);
let clusterer = Hdbscan::default_hyper_params(&data);
let labels = clusterer.cluster().unwrap();
let centroids = clusterer.calc_centers(Center::Centroid, &labels).unwrap();
assert_eq!(2, centroids.len());
Expand Down

0 comments on commit 0cef0df

Please sign in to comment.