Skip to content

Commit 5d149dc

Browse files
committed
Start on basic tests for robust single linkage
1 parent 7390ef5 commit 5d149dc

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

hdbscan/tests/test_rsl.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
"""
2+
Tests for Robust Single Linkage clustering algorithm
3+
"""
4+
#import pickle
5+
from nose.tools import assert_less
6+
import numpy as np
7+
from scipy.spatial import distance
8+
from scipy import sparse
9+
from sklearn.utils.testing import assert_equal
10+
from sklearn.utils.testing import assert_array_equal
11+
from sklearn.utils.testing import assert_raises
12+
from sklearn.utils.testing import assert_in
13+
from sklearn.utils.testing import assert_not_in
14+
from sklearn.utils.testing import assert_no_warnings
15+
from sklearn.utils.testing import if_matplotlib
16+
from hdbscan import RobustSingleLinkage
17+
from hdbscan import robust_single_linkage
18+
from sklearn.cluster.tests.common import generate_clustered_data
19+
20+
from sklearn import datasets
21+
22+
n_clusters = 3
23+
X = generate_clustered_data(n_clusters=n_clusters, n_samples_per_cluster=50)
24+
25+
def test_rsl_distance_matrix():
26+
D = distance.squareform(distance.pdist(X))
27+
D /= np.max(D)
28+
29+
labels, tree = robust_single_linkage(D, 0.25, metric='precomputed')
30+
# number of clusters, ignoring noise if present
31+
n_clusters_1 = len(set(labels)) - int(-1 in labels) # ignore noise
32+
#assert_equal(n_clusters_1, n_clusters)
33+
34+
labels = RobustSingleLinkage(metric="precomputed").fit(D).labels_
35+
n_clusters_2 = len(set(labels)) - int(-1 in labels)
36+
#assert_equal(n_clusters_2, n_clusters)
37+
38+
def test_rsl_feature_vector():
39+
labels, tree = robust_single_linkage(X, 0.2)
40+
n_clusters_1 = len(set(labels)) - int(-1 in labels)
41+
#assert_equal(n_clusters_1, n_clusters)
42+
43+
labels = RobustSingleLinkage().fit(X).labels_
44+
n_clusters_2 = len(set(labels)) - int(-1 in labels)
45+
#assert_equal(n_clusters_2, n_clusters)
46+
47+
def test_rsl_callable_metric():
48+
# metric is the function reference, not the string key.
49+
metric = distance.euclidean
50+
51+
labels, tree = robust_single_linkage(X, 0.2, metric=metric)
52+
n_clusters_1 = len(set(labels)) - int(-1 in labels)
53+
#assert_equal(n_clusters_1, n_clusters)
54+
55+
labels = RobustSingleLinkage(metric=metric).fit(X).labels_
56+
n_clusters_2 = len(set(labels)) - int(-1 in labels)
57+
#assert_equal(n_clusters_2, n_clusters)
58+
59+
def test_rsl_input_lists():
60+
X = [[1., 2.], [3., 4.]]
61+
RobustSingleLinkage().fit(X) # must not raise exception

0 commit comments

Comments
 (0)