class PreferenceModelTest(unittest.TestCase): def setUp(self): self.data = ds.DataIO(verbose = False) self.data.load('testdata/ratings.csv') self.model = PreferenceModel(verbose = False) self.model.build(self.data) def test(self): # test __extract_facts: # overall number of ratings self.assertTrue(self.model.P().sum() == len(self.data.ratings)) # item and user checksums user_sums = list([0,]*self.data.num_users()) item_sums = list([0,]*self.data.num_items()) for (u,i,r) in self.data.ratings: user_sums[u] += 1 item_sums[i] += 1 self.assertTrue(np.array_equal(self.model.P().sum(1), np.matrix(user_sums).T)) self.assertTrue(np.array_equal(self.model.P().sum(0), np.matrix(item_sums)))
def generate_solution(algo, n, given_items, filename): # load the dataset ds = dataset.DataIO(verbose=True) ds.load('../data/ratings.csv') given_items = ds.translate_items(given_items) # build the recommender and generate predictions rs = recsys.Recommender(ds, PreferenceModel(verbose=True), algo, top_ns, verbose=True) rs.build() recs = rs.recommend(given_items, n) # save the predictions to file output = ds.print_recs(recs, given_items=given_items, printer=coursera_pa1_printer) file = open(filename, 'w') file.write(output) file.close() print 'Predictions are written to %s' % filename
def setUp(self): self.data = ds.DataIO(verbose = False) self.data.load('testdata/ratings.csv') self.model = PreferenceModel(verbose = False) self.model.build(self.data)