Skip to content

Commit d526718

Browse files
committed
Fix: Louvain clustering to accept Table or ndarray.
1 parent 64461f9 commit d526718

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

Orange/clustering/louvain.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ def table_to_knn_graph(data, k_neighbors, metric, progress_callback=None):
4141
4242
"""
4343
# We do k + 1 because each point is closest to itself, which is not useful
44-
knn = NearestNeighbors(n_neighbors=k_neighbors, metric=metric).fit(data.X)
45-
nearest_neighbors = knn.kneighbors(data.X, return_distance=False)
44+
knn = NearestNeighbors(n_neighbors=k_neighbors, metric=metric).fit(data)
45+
nearest_neighbors = knn.kneighbors(data, return_distance=False)
4646
# Convert to list of sets so jaccard can be computed efficiently
4747
nearest_neighbors = list(map(set, nearest_neighbors))
4848
num_nodes = len(nearest_neighbors)
@@ -148,3 +148,10 @@ def fit(self, X, y=None):
148148
def fit_predict(self, X, y=None):
149149
self.fit(X, y)
150150
return self.labels
151+
152+
153+
if __name__ == "__main__":
154+
# clustering run on iris data - orange table
155+
data = Table("iris")
156+
louvain = Louvain(2)
157+
louvain.fit(data)

Orange/tests/test_louvain.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Test methods with long descriptive names can omit docstrings
2+
# pylint: disable=missing-docstring
3+
4+
import unittest
5+
import numpy as np
6+
7+
from Orange.data import Table
8+
from Orange.clustering.louvain import Louvain
9+
10+
11+
class TestSVMLearner(unittest.TestCase):
12+
@classmethod
13+
def setUpClass(cls):
14+
cls.data = Table('iris')
15+
cls.louvain = Louvain()
16+
17+
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])

0 commit comments

Comments
 (0)