def test_max_fraction_clusters(inp, max_frac): """ Check that ``FirstSimpleGap`` and ``FirstHistogramGap`` respect the ``max_num_clusters`` constraint, if it is set.""" n_points_per_cluster, n_clusters, _, pts = inp max_num_clusters = max_frac * n_points_per_cluster * n_clusters fs = FirstSimpleGap(max_fraction=max_frac) _ = fs.fit_predict(pts) assert fs.n_clusters_ <= np.floor(max_num_clusters) fh = FirstHistogramGap(max_fraction=max_frac) _ = fh.fit_predict(pts) assert fh.n_clusters_ <= np.floor(max_num_clusters)
def test_firstsimplegap(inp): """For a multimodal distribution, check that ``FirstSimpleGap`` with appropriate parameters finds the right number of clusters, and that each has the correct number of points ``n_points_per_cluster``.""" n_points_per_cluster, n_clusters, _, pts = inp fs = FirstSimpleGap(relative_gap_size=0.5, max_fraction=1., affinity='euclidean', memory=None, linkage='single') preds = fs.fit_predict(pts).astype(int) unique, counts = np.unique(preds, return_counts=True) # check that the nb of clusters corresponds to the nb of synth. clusters assert unique.shape[0] == n_clusters # check that the nb of pts in a cluster corresponds to what we expect assert_almost_equal(counts, n_points_per_cluster)