Exemple #1
0
def predictLikes(userLikes):
    postIds = pickle.load(open ("postIds","rb"))
    indexes = pickle.load(open ("indexes","rb"))
    numberOfPosts = len(postIds)
    indexesHashMap = pickle.load(open ("indexesHashMap","rb"))
    numberOfNeighbors = len(indexesHashMap)
    usersVectorsArr,usersArr = createArr(indexesHashMap,numberOfNeighbors)
    nearestNumber = 7
    neighbors = findNearestNeighbors(userLikes, numberOfNeighbors,nearestNumber,usersVectorsArr,usersArr)
    fullUsersHashMap = pickle.load(open ("fullUsersHash","rb"))
    averages = [None]*numberOfPosts
    for j in range(numberOfPosts):
        average = 0
        weight = nearestNumber
        for i in range(nearestNumber):
            neighbor = neighbors[i]
            average += fullUsersHashMap[str(neighbor[1])][j]*weight
            weight -= 1
        averages[j] = (average/28)
        #averages[j] = (average/nearestNumber)
    print(averages)
    testLikes = [None]*numberOfPosts
    counter = 0
    for i in indexes:
        testLikes[i] = userLikes[counter]
        counter += 1
    newIndexes =[]
    lastIndexes=[]
    filterNum = 0.0
    while (len(newIndexes)<6):
        filterNum += 0.1
        newIndexes = []
        for num in range(numberOfPosts):
            if num not in indexes:
                if (averages[num]>= (1-filterNum)):
                    newIndexes.append(num)
                    #testLikes[num] = 1
                #else:
                    #testLikes[num] = 0
    if len(newIndexes)>20:
        newIndexes = newIndexes[:20]
    print (filterNum)
    return newIndexes
Exemple #2
0
sample = list(random.sample(range(1,18315),5))
for numberOfTests in sample:
    tmpFullUsersHashmap = deepcopy(fullUsersHashmap)
    #print(numberOfTests)
    #test user
    userLikes = tmpUsersVectorsArr[numberOfTests]
    #print(userLikes)
    fullTestUser = tmpUsersArr[numberOfTests]
    #create temp arr without the test user
    tmpUsersVectorsArr.pop(numberOfTests)
    testArr = deepcopy(tmpUsersVectorsArr)
    tmpUsersArr.pop(numberOfTests)
    fullTestArr = deepcopy(tmpUsersArr)
    #find nearestNeighbors of the test user
    neighbors = findNearestNeighbors(userLikes, numberOfNeighbors-1,nearestNumber,testArr,fullTestArr)

    testUserLikes = tmpFullUsersHashmap[fullTestUser[1]]

#summing the average number of likes
    #i = 0
    #summing = 0
    #for key in newUsersHashMap:
    #    for like in newUsersHashMap[key]:
    #        summing += like
    #    if summing>4.5:
    #    i += summing
    #    summing = 0
    #print (i)
    #delete the testUser from the hashmap
    del tmpFullUsersHashmap[fullTestUser[1]]