def BehaviorBasedCF(): np.random.seed(0) random.seed(0) # Load up common data set for the recommender algorithms (ml, evaluationData, rankings) = MyDump.LoadMovieLensData(loader) # Construct an Evaluator to, you know, evaluate them evaluator = Evaluator(evaluationData, rankings, load=True) # User-based KNN UserKNN = KNNBasic(sim_options={'name': 'cosine', 'user_based': True}) evaluator.AddAlgorithm(UserKNN, "User KNN") # Item-based KNN ItemKNN = KNNBasic(sim_options={'name': 'cosine', 'user_based': False}) evaluator.AddAlgorithm(ItemKNN, "Item KNN") # Just make random recommendations Random = NormalPredictor() evaluator.AddAlgorithm(Random, "Random") evaluator.Evaluate( False ) # load is also False, cause simsMatrix needs to be loaded; I haven't figured it out. evaluator.SampleTopNRecs(ml)
def ContentRecs(): """ for this content-based(item) recommender calculate items' cosine similarity matrix in alg.fit() I don't test `HitRate` for `topN` recommendation, because here it's impossible to do that. What I recommend by this algorithm are all the movies the user haven't rated. """ np.random.seed(0) random.seed(0) # loader = True # Load up common data set for the recommender algorithms # print(f'call ContentRecs()\nloader = {loader}') (ml, evaluationData, rankings) = MyDump.LoadMovieLensData(loader) # Construct an Evaluator to, you know, evaluate them evaluator = Evaluator(evaluationData, rankings, load=True) contentKNN = ContentKNNAlgorithm() evaluator.AddAlgorithm(contentKNN, "ContentKNN") # Just make random recommendations Random = NormalPredictor() evaluator.AddAlgorithm(Random, "Random") evaluator.Evaluate(False, True) # not topN, able load # recommend 10(default) items evaluator.SampleTopNRecs(ml)
def BuildRecModel(): np.random.seed(0) random.seed(0) # Load up common data set for the recommender algorithms (evaluationData, rankings) = LoadData() # Construct an Evaluator to, you know, evaluate them evaluator = Evaluator(evaluationData, rankings) hotelKNNAlgorithm = HotelKNNAlgorithm() log.info('Algorithm=K-Nearest Neighbour') evaluator.SetAlgorithm(hotelKNNAlgorithm, 'HotelKNNAlgorithm') evaluator.Evaluate(False) evaluator.TrainAndSaveAlgorithm()
def AutoRec(): np.random.seed(0) random.seed(0) ml, evaluationData, rankings = MyDump.LoadMovieLensData(loader) evaluator = Evaluator(evaluationData, rankings, loader) myAutoRec = RBMAlgorithm() evaluator.AddAlgorithm(myAutoRec, "AutoRec") Random = NormalPredictor() evaluator.AddAlgorithm(Random, "Random") evaluator.Evaluate(doTopN=False, load=loader) evaluator.SampleTopNRecs(ml, loader)
def CompareSVDRandom(): np.random.seed(0) random.seed(0) # loader = True start_t = time.time() # Load up common data set for the recommender algorithms # (evaluationData, rankings) = LoadMovieLensData() # MyDump.Save('ratingsDataset', data = evaluationData, verbose = 1) # MyDump.Save('rankings', data = rankings, verbose = 1) # _,_,evaluationData = MyDump.Load('ratingsDataset', 1) # _,_,rankings = MyDump.Load('rankings',1) # if evaluationData == None or rankings == None: # (_, evaluationData, rankings) = MyDump.LoadMovieLensData() # meat # MyDump.Save('ratingsDataset', data = evaluationData, verbose = 1) # MyDump.Save('rankings', data = rankings, verbose = 1) _, evaluationData, rankings = MyDump.LoadMovieLensData(loader) print( f'------time consumption: {time.time() - start_t} for LoadMovieLensData()' ) start_t = time.time() # Construct an Evaluator to, you know, evaluate them evaluator = Evaluator(dataset=evaluationData, rankings=rankings, load=loader) print( f'------time consumption: {time.time() - start_t} for create an evaluator instance' ) start_t = time.time() # Throw in an SVD recommender SVDAlgorithm = SVD(random_state=10) evaluator.AddAlgorithm(SVDAlgorithm, "SVD") # Just make random recommendations Random = NormalPredictor() evaluator.AddAlgorithm(Random, "Random") start_t = time.time() evaluator.Evaluate(True, loader) # doTopN, loader print( f'------time consumption: {time.time() - start_t} for evaluator.Evaluate()' ) start_t = time.time()
def MF(): """ the idea behind is math, latent features implementation is simple out of library source """ np.random.seed(0) random.seed(0) ml, evaluationData, rankings = MyDump.LoadMovieLensData(loader) evaluator = Evaluator(evaluationData, rankings, loader) mySVD = SVD(random_state=10) evaluator.AddAlgorithm(mySVD, "SVD") # the same with before mySVDpp = SVDpp(random_state=10) evaluator.AddAlgorithm(mySVDpp, "SVDpp") Random = NormalPredictor() evaluator.AddAlgorithm(Random, "Random") evaluator.Evaluate(doTopN=False, load=loader) evaluator.SampleTopNRecs(ml, loader)
def contentf(self): # Load up common data set for the recommender algorithms (ml, evaluationData, rankings) = self.LoadNovieLensData() # Construct an Evaluator to, you know, evaluate them evaluator = Evaluator(evaluationData, rankings) contentKNN = ContentKNNAlgorithm() evaluator.AddAlgorithm(contentKNN, "ContentKNN") # Just make random recommendations #Random = NormalPredictor() #evaluator.AddAlgorithm(Random, "Random") evaluator.Evaluate(False) evaluator.SampleTopNRecs(ml)
def RBMtest(): np.random.seed(0) random.seed(0) ml, evaluationData, rankings = MyDump.LoadMovieLensData(loader) # Construct an Evaluator to, you know, evaluate them evaluator = Evaluator(evaluationData, rankings, loader) # RBM # able to tune by trying more parameter combination myRBM = RBMAlgorithm(epochs=20) evaluator.AddAlgorithm(myRBM, "RBM") Random = NormalPredictor() evaluator.AddAlgorithm(Random, "Random") evaluator.Evaluate(doTopN=False, load=loader) evaluator.SampleTopNRecs(ml, loader)
def contentGive(id): np.random.seed(0) random.seed(0) # Load up common data set for the recommender algorithms (ml, evaluationData, rankings) = LoadMovieLensData() # Construct an Evaluator to, you know, evaluate them evaluator = Evaluator(evaluationData, rankings) contentKNN = ContentKNNAlgorithm() evaluator.AddAlgorithm(contentKNN, "ContentKNN") # Just make random recommendations Random = NormalPredictor() evaluator.AddAlgorithm(Random, "Random") evaluator.Evaluate(False) evaluator.SampleTopNRecs(ml, id)
) rankings = ml.getPopularityRanks() return (ml, data, rankings) np.random.seed(0) random.seed(0) # Load up common data set for the recommender algorithms (ml, evaluationData, rankings) = LoadMovieLensData() # Construct an Evaluator to, you know, evaluate them evaluator = Evaluator(evaluationData, rankings) # SVD SVD = SVD() evaluator.AddAlgorithm(SVD, "SVD") # SVD++ SVDPlusPlus = SVDpp() evaluator.AddAlgorithm(SVDPlusPlus, "SVD++") # Just make random recommendations Random = NormalPredictor() evaluator.AddAlgorithm(Random, "Random") # Fight! evaluator.Evaluate(False) evaluator.SampleTopNRecs(ml)
print("Loading movie ratings...") data = ml.loadMovieLensLatestSmall() print( "\nComputing movie popularity ranks so we can measure novelty later..." ) rankings = ml.getPopularityRanks() return (ml, data, rankings) np.random.seed(0) random.seed(0) # Load up common data set for the recommender algorithms (ml, evaluationData, rankings) = LoadMovieLensData() # Construct an Evaluator to, you know, evaluate them evaluator = Evaluator(evaluationData, rankings) #Autoencoder AutoRec = AutoRecAlgorithm() evaluator.AddAlgorithm(AutoRec, "AutoRec") # Just make random recommendations Random = NormalPredictor() evaluator.AddAlgorithm(Random, "Random") # Fight! evaluator.Evaluate(True) evaluator.SampleTopNRecs(ml)
print("Loading movie ratings...") data = source.loadMovieLensRating() print("Prepare movie information...") source.computeMovieInformation() print("Creating ranking for each movie ...") rankings = source.getPopularityRanksByRating() return (source, data, rankings) np.random.seed(0) random.seed(0) # Load up common data set for the recommender algorithms (dataSource, data, rankings) = LoadData() # Construct an Evaluator to, you know, evaluate them evaluator = Evaluator(data, rankings) contentKNN = KNNAlgorithm() evaluator.AddAlgorithm(contentKNN, "ContentKNN") # Just make random recommendations # Random = NormalPredictor() # evaluator.AddAlgorithm(Random, "Random") evaluator.Evaluate() useTargetId = 85 totalMovieNeeded = 5 evaluator.GetRecomendationMovie(dataSource, useTargetId, totalMovieNeeded)