def run_model(model_name, dataset_name, test_size=0.3, clean=False): print('*' * 70) print('\tThis is %s model trained on %s with test_size = %.2f' % (model_name, dataset_name, test_size)) print('*' * 70 + '\n') model_manager = utils.ModelManager(dataset_name, test_size) try: trainset = model_manager.load_model('trainset') testset = model_manager.load_model('testset') except OSError: ratings = DataSet.load_dataset(name=dataset_name) trainset, testset = DataSet.train_test_split(ratings, test_size=test_size) model_manager.save_model(trainset, 'trainset') model_manager.save_model(testset, 'testset') '''Do you want to clean workspace and retrain model again?''' '''if you want to change test_size or retrain model, please set clean_workspace True''' model_manager.clean_workspace(clean) if model_name == 'ItemCF': model = ItemBasedCF() elif model_name == 'UserCF': model = UserBasedCF() else: raise ValueError('No model named ' + model_name) model.fit(trainset) recommend_test(model, [1, 100, 233, 666, 888]) model.test(testset)
def run_model(model_name, dataset_name, test_size=0.3, clean=False): print('*' * 70) print('\tThis is %s model trained on %s with test_size = %.2f' % (model_name, dataset_name, test_size)) print('*' * 70 + '\n') model_manager = utils.ModelManager(dataset_name, test_size) try: trainset = model_manager.load_model('trainset') testset = model_manager.load_model('testset') except OSError: ratings = DataSet.load_dataset(name=dataset_name) trainset, testset = DataSet.train_test_split(ratings, test_size=test_size) model_manager.save_model(trainset, 'trainset') model_manager.save_model(testset, 'testset') '''Do you want to clean workspace and retrain model again?''' '''if you want to change test_size or retrain model, please set clean_workspace True''' model_manager.clean_workspace(clean) if model_name == 'UserCF': model = UserBasedCF() elif model_name == 'ItemCF': model = ItemBasedCF() elif model_name == 'Random': model = RandomPredict() elif model_name == 'MostPopular': model = MostPopular() elif model_name == 'UserCF-IIF': model = UserBasedCF(use_iif_similarity=True) elif model_name == 'ItemCF-IUF': model = ItemBasedCF(use_iuf_similarity=True) elif model_name == 'LFM': # K, epochs, alpha, lamb, n_rec_movie model = LFM(10, 20, 0.1, 0.01, 10) else: raise ValueError('No model named ' + model_name) model.fit(trainset) recommend_test(model, [1, 100, 233, 666, 888]) model.test(testset)