def nearest_neighbor(user, users_data, measure): """Finds a list of users that are nearest to a given user. Args: user: the reviewerID of the user that we want to recommend items to users_data: the complete datastore of ratings measure: the distance measure to use if 1: Adjusted cosine similarity if 2: Cosine similarity if 3: Pearson correlation if 4: Manhattan distance if 5: Euclidean distance Return: A sorted list of users based on their distance to the input user """ distances = [] for u in users_data: if u != user: if measure == 1: distance = measures.adjusted_cosine_similarity( users_data[user], users_data[u]) elif measure == 2: distance = measures.cosine_similarity(users_data[user], users_data[u]) elif measure == 3: distance = measures.pearson_correlation( users_data[user], users_data[u]) elif measure == 4: distance = measures.manhattan_distance(users_data[user], users_data[u]) elif measure == 5: distance = measures.euclidean_distance(users_data[user], users_data[u]) else: "ERROR! The similarity measure doesn't exist!" distances.append((u, distance)) distances.sort(key=lambda itemTuple: itemTuple[1], reverse=True) return distances
def nearest_neighbor(user, users_data): """Finds a list of users that are nearest to a given user. Args: user: the reviewerID of the user that we want to recommend items to users_data: the complete datastore of ratings Return: A sorted list of users based on their distance to the input user """ distances = [] for u in users_data: if u != user: distance = measures.adjusted_cosine_similarity(users_data[user], users_data[u]) distances.append((u, distance)) distances.sort(key=lambda itemTuple: itemTuple[1], reverse=True) return distances
def nearest_neighbor(user, users_data, measure): """Finds a list of users that are nearest to a given user. Args: user: the reviewerID of the user that we want to recommend items to users_data: the complete datastore of ratings measure: the distance measure to use if 1: Adjusted cosine similarity if 2: Cosine similarity if 3: Pearson correlation if 4: Manhattan distance if 5: Euclidean distance Return: A sorted list of users based on their distance to the input user """ distances = [] for u in users_data: if u != user: if measure == 1: distance = measures.adjusted_cosine_similarity(users_data[user], users_data[u]) elif measure == 2: distance = measures.cosine_similarity(users_data[user], users_data[u]) elif measure == 3: distance = measures.pearson_correlation(users_data[user], users_data[u]) elif measure == 4: distance = measures.manhattan_distance(users_data[user], users_data[u]) elif measure == 5: distance = measures.euclidean_distance(users_data[user], users_data[u]) else: "ERROR! The similarity measure doesn't exist!" distances.append((u, distance)) distances.sort(key=lambda itemTuple: itemTuple[1], reverse=True) return distances