Skip to content

Commit b5e221d

Browse files
committed
Clustering: Fixed tests
1 parent f42398e commit b5e221d

File tree

3 files changed

+30
-80
lines changed

3 files changed

+30
-80
lines changed

Orange/tests/test_clustering_dbscan.py

Lines changed: 11 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -3,45 +3,26 @@
33

44
import unittest
55

6-
import Orange
6+
import numpy as np
7+
8+
from Orange.data import Table
79
from Orange.clustering.dbscan import DBSCAN
810

911

1012
class TestDBSCAN(unittest.TestCase):
11-
12-
@classmethod
13-
def setUpClass(cls):
14-
cls.iris = Orange.data.Table('iris')
13+
def setUp(self):
14+
self.iris = Table('iris')
15+
self.dbscan = DBSCAN()
1516

1617
def test_dbscan_parameters(self):
1718
dbscan = DBSCAN(eps=0.1, min_samples=7, metric='euclidean',
1819
algorithm='auto', leaf_size=12, p=None)
19-
c = dbscan(self.iris)
20+
dbscan(self.iris)
2021

2122
def test_predict_table(self):
22-
dbscan = DBSCAN()
23-
c = dbscan(self.iris)
24-
table = self.iris[:20]
25-
p = c(table)
23+
pred = self.dbscan(self.iris)
24+
self.assertEqual(np.ndarray, type(pred))
2625

2726
def test_predict_numpy(self):
28-
dbscan = DBSCAN()
29-
c = dbscan(self.iris)
30-
X = self.iris.X[::20]
31-
p = c(X)
32-
33-
def test_values(self):
34-
dbscan = DBSCAN(eps=1) # it clusters data in two classes
35-
c = dbscan(self.iris)
36-
table = self.iris
37-
p = c(table)
38-
39-
self.assertEqual(2, len(p.domain[0].values))
40-
self.assertSetEqual({"0", "1"}, set(p.domain[0].values))
41-
42-
table.X[0] = [100, 100, 100, 100] # we add a big outlier
43-
44-
p = c(table)
45-
46-
self.assertEqual(3, len(p.domain[0].values))
47-
self.assertSetEqual({"-1", "0", "1"}, set(p.domain[0].values))
27+
model = self.dbscan.fit(self.iris.X)
28+
self.assertEqual(np.ndarray, type(model.labels))

Orange/tests/test_clustering_kmeans.py

Lines changed: 13 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -11,55 +11,32 @@
1111

1212

1313
class TestKMeans(unittest.TestCase):
14-
@classmethod
15-
def setUpClass(cls):
16-
cls.iris = Orange.data.Table('iris')
14+
def setUp(self):
15+
self.kmeans = KMeans(n_clusters=2)
16+
self.iris = Orange.data.Table('iris')
1717

1818
def test_kmeans(self):
19-
kmeans = KMeans(n_clusters=2)
20-
c = kmeans(self.iris)
21-
X = self.iris.X[:20]
22-
p = c(X)
19+
c = self.kmeans(self.iris)
2320
# First 20 iris belong to one cluster
24-
assert len(set(p.ravel())) == 1
21+
self.assertEqual(1, len(set(c[:20].ravel())))
2522

2623
def test_kmeans_parameters(self):
27-
kmeans = KMeans(n_clusters=10,
28-
max_iter=10,
29-
random_state=42,
30-
tol=0.001,
31-
init='random',
32-
compute_silhouette_score=True)
33-
c = kmeans(self.iris)
34-
35-
def test_predict_single_instance(self):
36-
kmeans = KMeans()
37-
c = kmeans(self.iris)
38-
inst = self.iris[0]
39-
p = c(inst)
24+
kmeans = KMeans(n_clusters=10, max_iter=10, random_state=42, tol=0.001,
25+
init='random')
26+
kmeans(self.iris)
4027

4128
def test_predict_table(self):
4229
kmeans = KMeans()
4330
c = kmeans(self.iris)
44-
table = self.iris[:20]
45-
p = c(table)
31+
self.assertEqual(np.ndarray, type(c))
4632

4733
def test_predict_numpy(self):
4834
kmeans = KMeans()
49-
c = kmeans(self.iris)
50-
X = self.iris.X[::20]
51-
p = c(X)
35+
c = kmeans.fit(self.iris.X)
36+
self.assertEqual(np.ndarray, type(c.labels))
5237

5338
def test_predict_sparse(self):
5439
kmeans = KMeans()
40+
self.iris.X = csc_matrix(self.iris.X[::20])
5541
c = kmeans(self.iris)
56-
X = csc_matrix(self.iris.X[::20])
57-
p = c(X)
58-
59-
def test_silhouette_sparse(self):
60-
"""Test if silhouette gets calculated for sparse data"""
61-
kmeans = KMeans(compute_silhouette_score=True)
62-
sparse_iris = self.iris.copy()
63-
sparse_iris.X = csc_matrix(sparse_iris.X)
64-
c = kmeans(sparse_iris)
65-
self.assertFalse(np.isnan(c.silhouette))
42+
self.assertEqual(np.ndarray, type(c))

Orange/tests/test_louvain.py

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,11 @@
88
from Orange.clustering.louvain import Louvain
99

1010

11-
class TestSVMLearner(unittest.TestCase):
12-
@classmethod
13-
def setUpClass(cls):
14-
cls.data = Table('iris')
15-
cls.louvain = Louvain()
11+
class TestLouvain(unittest.TestCase):
12+
def setUp(self):
13+
self.data = Table('iris')
14+
self.louvain = Louvain()
1615

1716
def test_orange_table(self):
18-
self.assertIsNone(self.louvain.fit(self.data))
19-
clusters = self.louvain.fit_predict(self.data)
20-
self.assertIn(type(clusters), [list, np.ndarray])
21-
22-
def test_np_array(self):
23-
data_np = self.data.X
24-
self.assertIsNone(self.louvain.fit(data_np))
25-
clusters = self.louvain.fit_predict(data_np)
26-
self.assertIn(type(clusters), [list, np.ndarray])
17+
labels = self.louvain(self.data)
18+
self.assertEqual(np.ndarray, type(labels))

0 commit comments

Comments
 (0)