def test_from_splits(self): data = Reader().read("./tests/data.txt") try: BaseMethod.from_splits(train_data=None, test_data=None) except ValueError: assert True try: BaseMethod.from_splits(train_data=data, test_data=None) except ValueError: assert True try: BaseMethod.from_splits(train_data=data, test_data=[], exclude_unknowns=True) except ValueError: assert True bm = BaseMethod.from_splits(train_data=data[:-1], test_data=data[-1:]) self.assertEqual(bm.total_users, 10) self.assertEqual(bm.total_items, 10) bm = BaseMethod.from_splits( train_data=data[:-1], test_data=data[-1:], val_data=[(data[0][0], data[1][1], 5.0)], verbose=True, ) self.assertEqual(bm.total_users, 10) self.assertEqual(bm.total_items, 10)
def test_with_modalities(self): data = Reader().read("./tests/data.txt") sentiment_data = Reader().read("./tests/sentiment_data.txt", fmt="UITup", sep=",", tup_sep=":") bm = BaseMethod.from_splits(train_data=data[:-1], test_data=data[-1:]) self.assertIsNone(bm.user_text) self.assertIsNone(bm.item_text) self.assertIsNone(bm.user_image) self.assertIsNone(bm.item_image) self.assertIsNone(bm.user_graph) self.assertIsNone(bm.item_graph) self.assertIsNone(bm.sentiment) bm.user_text = TextModality() bm.item_image = ImageModality() bm.sentiment = SentimentModality(data=sentiment_data) bm._build_modalities() try: bm.user_text = ImageModality() except ValueError: assert True try: bm.item_text = ImageModality() except ValueError: assert True try: bm.user_image = TextModality() except ValueError: assert True try: bm.item_image = TextModality() except ValueError: assert True try: bm.user_graph = TextModality() except ValueError: assert True try: bm.item_graph = ImageModality() except ValueError: assert True try: bm.sentiment = TextModality() except ValueError: assert True try: bm.sentiment = ImageModality() except ValueError: assert True
def test_from_splits(self): data = Reader().read('./tests/data.txt') try: BaseMethod.from_splits(train_data=None, test_data=None) except ValueError: assert True try: BaseMethod.from_splits(train_data=data, test_data=None) except ValueError: assert True bm = BaseMethod.from_splits(train_data=data, test_data=data) self.assertEqual(bm.total_users, 10) self.assertEqual(bm.total_items, 10) bm = BaseMethod.from_splits(train_data=data, test_data=data, val_data=data, verbose=True) self.assertEqual(bm.total_users, 10) self.assertEqual(bm.total_items, 10)
def test_from_splits(): data = reader.read_uir('./tests/data.txt') try: BaseMethod.from_splits(train_data=None, test_data=None) except ValueError: assert True try: BaseMethod.from_splits(train_data=data, test_data=None) except ValueError: assert True bm = BaseMethod.from_splits(train_data=data, test_data=data) assert bm.total_users == 10 assert bm.total_items == 10 bm = BaseMethod.from_splits(train_data=data, test_data=data, val_data=data, verbose=True) assert bm.total_users == 10 assert bm.total_items == 10
def test_evaluate(self): data = Reader().read('./tests/data.txt') bm = BaseMethod.from_splits(train_data=data, test_data=data) model = MF(k=1, max_iter=0) result = bm.evaluate(model, metrics=[MAE()], user_based=False) result.__str__()
args = parse_arguments() os.makedirs(args.out, exist_ok=True) reader = Reader() train_data = reader.read(os.path.join(args.indir, "train.txt"), sep=",") test_data = reader.read(os.path.join(args.indir, "test.txt"), sep=",") sentiment = reader.read(os.path.join(args.indir, "sentiment.txt"), fmt="UITup", sep=",", tup_sep=":") md = SentimentModality(data=sentiment) eval_method = BaseMethod.from_splits( train_data=train_data, test_data=test_data, sentiment=md, exclude_unknowns=True, verbose=args.verbose, ) mter = cornac.models.MTER( n_user_factors=args.user_factors, n_item_factors=args.item_factors, n_aspect_factors=args.aspect_factors, n_opinion_factors=args.opinion_factors, n_bpr_samples=args.bpr_samples, n_element_samples=args.element_samples, lambda_reg=args.lambda_reg, lambda_bpr=args.lambda_bpr, max_iter=args.epoch, lr=args.learning_rate,
from cornac.data import Reader from cornac.eval_methods import BaseMethod from cornac.models import MF from cornac.metrics import MAE, RMSE from cornac.utils import cache # Download MovieLens 100K provided training and test splits reader = Reader() train_data = reader.read( cache(url='http://files.grouplens.org/datasets/movielens/ml-100k/u1.base')) test_data = reader.read( cache(url='http://files.grouplens.org/datasets/movielens/ml-100k/u1.test')) eval_method = BaseMethod.from_splits(train_data=train_data, test_data=test_data, exclude_unknowns=False, verbose=True) mf = MF(k=10, max_iter=25, learning_rate=0.01, lambda_reg=0.02, use_bias=True, early_stop=True, verbose=True) # Evaluation result = eval_method.evaluate(model=mf, metrics=[MAE(), RMSE()], user_based=True) print(result)
random.shuffle(data) train = data[math.ceil(0.2 * len(data)):] test = data[:math.ceil(0.2 * len(data))] holdout = cornac.data.Reader(bin_threshold=1.0).read( fpath='./cs608_ip_probe_v2.csv', sep=",", fmt='UIR', skip_lines=1) ratio_split = cornac.eval_methods.RatioSplit(data=train, test_size=0.2, rating_threshold=0.5, seed=123) eval_method = BaseMethod.from_splits(train_data=train, test_data=test, val_data=holdout, exclude_unknowns=True, verbose=True, seed=123) cv = cornac.eval_methods.cross_validation.CrossValidation( data, n_folds=3, rating_threshold=1.0, seed=123, exclude_unknowns=True, verbose=True) # In[24]: mae = cornac.metrics.MAE() rmse = cornac.metrics.RMSE()