def read_user_data_from_ratings(data_file): data = Data() format = {'col':0, 'row':1, 'value':2, 'ids': 'int'} data.load(dat_file, sep='::', format=format) userdict = {} for d in data.get(): if d[2] in userdict: user = userdict[d[2]] else: user = User(d[2]) user.add_item(d[1],d[0]) userdict[d[2]] = user return userdict
def read_user_data_from_ratings(data_file): data = Data() format = {'col': 0, 'row': 1, 'value': 2, 'ids': 'int'} data.load(dat_file, sep='::', format=format) userdict = {} for d in data.get(): if d[2] in userdict: user = userdict[d[2]] else: user = User(d[2]) user.add_item(d[1], d[0]) userdict[d[2]] = user return userdict
def setup(): global user, items, data user = User(USERID) items = _read_items(os.path.join(MOVIELENS_DATA_PATH, 'movies.dat')) data = Data() data.load(os.path.join(MOVIELENS_DATA_PATH, 'ratings.dat'), sep='::', format={ 'col': 0, 'row': 1, 'value': 2, 'ids': int })
def test_user_add_item(): u = User(USERID) item = Item(ARTISTID) item.add_data({'name': ARTISTID}) u.add_item(item, PLAYS) assert_equal(str(u.get_items()), '[(u2, 25)]')
def test_user_build(): u = User(USERID) assert_equal(u.get_id(), USERID)
A minimalistic command line recommender system using SVD decomposistion. """ #Create and train model svd = create_svd_model(ratings) N = 10000 choice = 5 while True: #recommend if choice == 5: user_id = str(raw_input("Please enter a username: ")) user = User(user_id) try: results = svd.recommend(user_id, is_row=False, n=N) except KeyError: results = [] if choice == 4: # See ratings see_ratings(user_id, movies, ratings) if choice == 1: # Rate movies ratings = random_rating(user_id, movies, ratings) svd = create_svd_model(ratings) # Update model try: results = svd.recommend(user_id, is_row=False, n=N) except KeyError: results = [] if choice == 2: # Filter by genre results = select_genre(results, movies)
itemId = 0 item = Item(itemId) item.add_data({'name': 'project0', 'popularity': 0.5, 'tags': [0, 0, 1] }) item2 = Item(1) item2.add_data({'name': 'project1', 'popularity': 0.5, 'tags': [0, 0, 1] }) # create a user userId = 0 user = User(userId) # link an item with a user rating = 1 user.add_item(itemId, rating) data = Data() data.add_tuple((rating, itemId, userId)) data.add_tuple((10, 1, 2)) svd = SVD() svd.set_data(data) svd.compute(k=100, min_values=0, pre_normalize=None, mean_center=True, post_normalize=True) svd.similarity(0, 0)