def test_predict(self): data = np.array([[0, 0, 5], [3, 0, 5], [3, 1, 2]]) ratings = csr_matrix(data) train = ds.array(x=ratings, block_size=(1, 1)) als = ALS(tol=0.01, random_state=666, n_f=5, verbose=False) als.fit(train) predictions = als.predict_user(user_id=0) # Check that the ratings for user 0 are similar to user 1 because they # share preferences (third movie), thus it is expected that user 0 # will rate movie 1 similarly to user 1. self.assertTrue(2.75 < predictions[0] < 3.25 and predictions[1] < 1 and predictions[2] > 4.5)
if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument("--num_subsets", type=int, default=48) parser.add_argument("--num_factors", type=int, default=100) parser.add_argument("--data_path", type=str, default='./tests/files/') args = parser.parse_args() num_subsets = args.num_subsets data_path = args.data_path n_f = args.num_factors train, test = load_movielens(data_path=data_path) exec_start = time() als = ALS(tol=0.0001, n_f=n_f, max_iter=2, verbose=True) # Fit using training data to check convergence # als.fit(train) # Fit using test data to check convergence als.fit(train, test) exec_end = time() print("Ratings for user 0:\n%s" % als.predict_user(0)) print("Execution time: %.2f" % (exec_end - exec_start))