Skip to content

Commit 413f068

Browse files
authored
Fix bug of binarizing rating values in Reader (#211)
1 parent cfe5d2e commit 413f068

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

cornac/data/reader.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,8 @@ def __init__(self, user_set=None, item_set=None, min_user_freq=1, min_item_freq=
116116

117117
def filter(self, tuples):
118118
if self.bin_threshold is not None:
119-
tuples = [tup for tup in tuples if tup[2] >= self.bin_threshold]
119+
def binarize(t): t = list(t); t[2] = 1; return tuple(t)
120+
tuples = [binarize(t) for t in tuples if t[2] >= self.bin_threshold]
120121

121122
if self.users is not None:
122123
if isinstance(self.users, list):

tests/cornac/data/test_reader.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@ def test_read_uir(self):
5050

5151
def test_filter(self):
5252
reader = Reader(bin_threshold=4.0)
53-
self.assertEqual(len(reader.read(self.data_file)), 8)
53+
data = reader.read(self.data_file)
54+
self.assertEqual(len(data), 8)
55+
self.assertListEqual([x[2] for x in data], [1] * len(data))
5456

5557
reader = Reader(min_user_freq=2)
5658
self.assertEqual(len(reader.read(self.data_file)), 0)

0 commit comments

Comments
 (0)