예제 #1
0
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)))
예제 #2
0
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
예제 #3
0
 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)