def makeVote(self, userId, movieId): thisUserData = self.userData[userId] pq = ArrayBasedBoundedPriorityQueue(k=self.k) for otherMovieId, vote in thisUserData.items(): pq.push((-self.featuresData.similarity(movieId, otherMovieId), otherMovieId)) votes = [thisUserData[otherMovieId] for _, otherMovieId in pq.getArray()] return int(round(sum(votes) / len(votes)))
def makeVote(self, userId, movieId): pq = ArrayBasedBoundedPriorityQueue(k=self.k) for comparedUserId in self.userData: if pq.getArray(): minimalUsefulSimilarity = -pq.getArray()[-1][0] comparedUserSimilarityLimit = self.combinedData.similarity((userId, movieId), (comparedUserId, movieId)) if comparedUserSimilarityLimit < minimalUsefulSimilarity: continue for comparedMovieId, vote in self.userData[comparedUserId].items(): pq.push((-self.combinedData.similarity((userId, movieId), (comparedUserId, comparedMovieId)), vote)) votes = [vote for _, vote in pq.getArray()] return int(round(sum(votes) / len(votes)))