def testItemEuclidean(): print("\n*******************************************") print("\n****Distância Euclidiana entre 2 Filmes****") print("\n*******************************************\n") print("Star Trek e Star Wars: ", str(euclideanDistance(movieRatingTable, 'Star Trek', 'Star Wars'))) print("\n###########################################\n")
def testUserEuclidean(): print("\n*******************************************") print("\n***Distância Euclidiana entre 2 usuarios***") print("\n*******************************************") print("Ana e Marcos: ", str(euclideanDistance(userRatingTable, 'Ana', 'Marcos'))) print("\n###########################################\n")
def getSimilarity(evaluationTable, userBase, limit=30): similarity = [(euclideanDistance(evaluationTable, userBase, userCompare), userCompare) for userCompare in evaluationTable if userCompare != userBase] similarity.sort() similarity.reverse() return similarity[0:limit]
def getUserRecommendations(evaluationTable, userBase, limit=30): totais = {} similaritySum = {} for userCompare in evaluationTable: if userCompare == userBase: continue similarity = euclideanDistance(evaluationTable, userBase, userCompare) if similarity <= 0: continue for item in evaluationTable[userCompare]: if item not in evaluationTable[userBase]: totais.setdefault(item, 0) totais[item] += evaluationTable[userCompare][item] * similarity similaritySum.setdefault(item, 0) similaritySum[item] += similarity rankings = [(total / similaritySum[item], item) for item, total in totais.items()] rankings.sort() rankings.reverse() return rankings[0:limit]
def testMovieEuclidean(): print ("\n****Distância Euclidiana entre 2 Filmes:\n") print ("Star Trek e Star Wars: ", str(euclideanDistance(movieRatingTable, '222','50')))
def testUserEuclidean(): print ("\n*******************************************") print ("\n***Distância Euclidiana entre 2 usuarios***") print ("\n*******************************************") print ("1 e 212: ", str(euclideanDistance(userRatingTable, '1','212'))) print ("\n###########################################\n")