def test_score(self): import types svdpp = SVDpp() svdpp.fit(self.df) self.assertTrue(isinstance(svdpp.get_score(10, 100), types.FloatType)) self.assertTrue(isinstance(svdpp.get_score(12, 110), types.FloatType))
def test_train(self): svdpp = SVDpp() self.assertFalse(hasattr(svdpp, 'U_bias')) svdpp.fit(self.df_big) self.assertTrue(hasattr(svdpp, 'U_bias')) self.assertEqual(svdpp.U.shape, (len(self.df_big.user.unique()), 40)) self.assertEqual(svdpp.V.shape, (len(self.df_big.item.unique()), 20)) self.assertEqual(svdpp.U_bias.shape, (len(self.df_big.user.unique()), 1)) self.assertEqual(svdpp.V_bias.shape, (len(self.df_big.item.unique()), 1)) self.assertEqual(svdpp.global_mean.shape, (1, 1))
def test_train(self): svdpp = SVDpp() self.assertFalse(hasattr(svdpp, "U_bias")) svdpp.fit(self.df_big) self.assertTrue(hasattr(svdpp, "U_bias")) #did graphchi changed the output format? it used to be 40 for users... self.assertEqual(svdpp.U.shape, (len(self.df_big.user.unique()), 20)) self.assertEqual(svdpp.V.shape, (len(self.df_big.item.unique()), 20)) self.assertEqual(svdpp.U_bias.shape, (len(self.df_big.user.unique()), 1)) self.assertEqual(svdpp.V_bias.shape, (len(self.df_big.item.unique()), 1)) self.assertEqual(svdpp.global_mean.shape, (1, 1))
def test_dump(self): svdpp = SVDpp() filename = svdpp.dump_data(self.df) lines = open(filename).readlines() self.assertEqual(lines[0], "%%MatrixMarket matrix coordinate real general\n") self.assertEqual(lines[2], "3 3 4\n") self.assertEqual(lines[3], "1 2 5\n") self.assertEqual(lines[4], "2 2 4\n") self.assertEqual(3, len(svdpp.umap)) self.assertEqual(svdpp.umap[10], 0) self.assertEqual(svdpp.umap[11], 1) self.assertEqual(svdpp.umap[12], 2) self.assertEqual(3, len(svdpp.imap)) self.assertEqual(svdpp.imap[1], 0) self.assertEqual(svdpp.imap[100], 1) self.assertEqual(svdpp.imap[110], 2)