def test_popularity(self): """ Test the popularity okapi algorithm """ splitter = RandomSplitter() training, testing = splitter.split(self.df, 0.20) pop = Popularity(normalize=False) pop.fit(training) self.popularity.fit(training) for _, row in testing.iterrows(): assert row["user"] in training["user"] python_score = pop.getScore(row["user"], row["item"]) okapi_score = self.popularity.getScore(row["user"], row["item"]) assert okapi_score == python_score, \ "Okapi popularity(%f) don't give the same score as his python implementation(%f)" % (okapi_score, python_score)
class split(object): holdout = HoldoutSplitter() holdoutByRandomSlow = RandomHoldoutSplitter() holdoutByUser = HoldoutSplitterByUser() holdoutByRandom = RandomSplitter()