예제 #1
0
 def test_local_not_existing_capper_False_estimatePreference(self):
     userID = "Leopoldo Pires"
     itemID = "You, Me and Dupree"
     recSys = UserRecommender(self.model, self.similarity, self.neighbor, False)
     self.assertAlmostEquals(
         2.065394689, recSys.estimatePreference(userID=userID, similarity=self.similarity, itemID=itemID)
     )
예제 #2
0
 def test_local_estimatePreference(self):
     userID = "Marcel Caraciolo"
     itemID = "Superman Returns"
     recSys = UserRecommender(self.model, self.similarity, self.neighbor, True)
     self.assertAlmostEquals(
         3.5, recSys.estimatePreference(userID=userID, similarity=self.similarity, itemID=itemID)
     )
예제 #3
0
    def test_evaluate_RMSRecommenderEvaluator(self):
        evaluator = RMSRecommenderEvaluator()

        recommender = UserRecommender(self.model, self.similarity,
                                      self.neighbor, True)
        evaluationPercentage = 1.0
        trainingPercentage = 0.7

        numUsers = self.model.NumUsers()
        trainingUsers = {}
        testUserPrefs = {}
        self.total = 0
        self.diffs = 0.0

        for userID in self.model.UserIDs():
            if random() < evaluationPercentage:
                evaluator.processOneUser(trainingPercentage, trainingUsers,
                                         testUserPrefs, userID, self.model)

        total_training = sum([
            len([pref for pref in prefs])
            for user, prefs in trainingUsers.iteritems()
        ])
        total_testing = sum([
            len([pref for pref in prefs])
            for user, prefs in testUserPrefs.iteritems()
        ])

        #self.assertAlmostEquals(total_training/float(total_training+total_testing), 0.7)
        #self.assertAlmostEquals(total_testing/float(total_training+total_testing), 0.3)

        trainingModel = DictDataModel(trainingUsers)

        self.assertEquals(sorted(trainingModel.UserIDs()),
                          sorted([user for user in trainingUsers]))

        recommender.model = trainingModel

        self.assertEquals(recommender.model, trainingModel)

        for userID, prefs in testUserPrefs.iteritems():
            estimatedPreference = None
            for pref in prefs:
                try:
                    estimatedPreference = recommender.estimatePreference(
                        userID=userID, similarity=self.similarity, itemID=pref)
                except:
                    pass
                if estimatedPreference is not None:
                    estimatedPreference = evaluator.capEstimatePreference(
                        estimatedPreference)
                    self.assert_(
                        estimatedPreference <= evaluator.maxPreference
                        and estimatedPreference >= evaluator.minPreference)
                    diff = prefs[pref] - estimatedPreference
                    self.diffs += (diff * diff)
                    self.total += 1

        result = sqrt(self.diffs / float(self.total))
예제 #4
0
 def test_local_not_existing_rescorer_estimatePreference(self):
     userID = "Leopoldo Pires"
     itemID = "You, Me and Dupree"
     recSys = UserRecommender(self.model, self.similarity, self.neighbor, False)
     scorer = TanHScorer()
     self.assertAlmostEquals(
         2.5761016605,
         recSys.estimatePreference(userID=userID, similarity=self.similarity, itemID=itemID, rescorer=scorer),
     )
예제 #5
0
 def test_local_not_existing_capper_False_estimatePreference(self):
     userID = 'Leopoldo Pires'
     itemID = 'You, Me and Dupree'
     recSys = UserRecommender(self.model, self.similarity, self.neighbor,
                              False)
     self.assertAlmostEquals(
         2.065394689,
         recSys.estimatePreference(userID=userID,
                                   similarity=self.similarity,
                                   itemID=itemID))
예제 #6
0
 def test_local_estimatePreference(self):
     userID = 'Marcel Caraciolo'
     itemID = 'Superman Returns'
     recSys = UserRecommender(self.model, self.similarity, self.neighbor,
                              True)
     self.assertAlmostEquals(
         3.5,
         recSys.estimatePreference(userID=userID,
                                   similarity=self.similarity,
                                   itemID=itemID))
예제 #7
0
 def test_local_not_existing_rescorer_estimatePreference(self):
     userID = 'Leopoldo Pires'
     itemID = 'You, Me and Dupree'
     recSys = UserRecommender(self.model, self.similarity, self.neighbor,
                              False)
     scorer = TanHScorer()
     self.assertAlmostEquals(
         2.5761016605,
         recSys.estimatePreference(userID=userID,
                                   similarity=self.similarity,
                                   itemID=itemID,
                                   rescorer=scorer))
예제 #8
0
파일: test_evaluator.py 프로젝트: ANB2/crab
    def test_evaluate_RMSRecommenderEvaluator(self):
        evaluator = RMSRecommenderEvaluator()
        
        recommender  = UserRecommender(self.model,self.similarity,self.neighbor,True)
        evaluationPercentage = 1.0
        trainingPercentage = 0.7
    
        numUsers = self.model.NumUsers()
        trainingUsers = {}
        testUserPrefs = {}
        self.total = 0
        self.diffs = 0.0

        for userID in self.model.UserIDs():
            if random() < evaluationPercentage:
                evaluator.processOneUser(trainingPercentage,trainingUsers,testUserPrefs,userID,self.model)        

        total_training =  sum([ len([pref  for pref in prefs]) for user,prefs in trainingUsers.iteritems()])
        total_testing =  sum([ len([pref  for pref in prefs]) for user,prefs in testUserPrefs.iteritems()])
        
        #self.assertAlmostEquals(total_training/float(total_training+total_testing), 0.7)
        #self.assertAlmostEquals(total_testing/float(total_training+total_testing), 0.3)
        
        
        trainingModel = DictDataModel(trainingUsers)
        
        self.assertEquals(sorted(trainingModel.UserIDs()), sorted([user for user in trainingUsers]))

        recommender.model = trainingModel

        self.assertEquals(recommender.model,trainingModel)
        
        for userID,prefs in testUserPrefs.iteritems():
            estimatedPreference = None
            for pref in prefs:
                try:
                    estimatedPreference = recommender.estimatePreference(userID=userID,similarity=self.similarity,itemID=pref)
                except:
                    pass
                if estimatedPreference is not None:
                    estimatedPreference = evaluator.capEstimatePreference(estimatedPreference)
                    self.assert_(estimatedPreference <= evaluator.maxPreference and estimatedPreference >= evaluator.minPreference)
                    diff =  prefs[pref] - estimatedPreference
                    self.diffs+= (diff * diff)
                    self.total += 1
        
  
        result = sqrt(self.diffs / float(self.total))