def compute(self, verbose=True, metrics=None, verbose_evaluation=True, as_table=False, table_sep='\t'):

        if verbose:
            super(MatrixFactorization, self).compute(verbose=verbose)
            self.init_model()

            print("training_time:: %4f sec" % timed(self.fit))
            if self.extra_info_header is not None:
                print(self.extra_info_header)

            search_time = timed(self.search_new_items)
            replace_time = timed(self.replace_vector_new_item)
            prediction_time = timed(self.predict)

            print("search_new_items_time:: %4f sec" % search_time)
            print("vectors_replacement_time:: %4f sec" % replace_time)
            print("prediction_time:: %4f sec" % prediction_time)
            print("total_prediction_time:: %4f sec" % (search_time + replace_time + prediction_time))
            print("\n")

        else:
            # Execute all in silence without prints
            super(MatrixFactorization, self).compute(verbose=verbose)
            self.init_model()
            self.fit()
            self.search_new_items()
            self.replace_vector_new_item()
            self.predict()

        self.write_predictions()

        if self.test_file is not None:
            return self.evaluate(metrics, verbose_evaluation, as_table=as_table, table_sep=table_sep)
Ejemplo n.º 2
0
    def execute(self,
                measures=('Prec@5', 'Prec@10', 'NDCG@5', 'NDCG@10', 'MAP@5',
                          'MAP@10')):
        print(
            "[Case Recommender: Item Recommendation > Item Attribute KNN Algorithm]\n"
        )
        print("training data:: ", len(self.train_set['users']), " users and ",
              len(self.train_set['items']), " items and ",
              self.train_set['ni'], " interactions | sparsity ",
              self.train_set['sparsity'])

        if self.test_file is not None:
            test_set = ReadFile(
                self.test_file,
                space_type=self.space_type).return_information()
            print("test data:: ", len(self.test_set['users']), " users and ",
                  len(self.test_set['items']), " items and ",
                  (self.test_set['ni']), " interactions | sparsity ",
                  self.test_set['sparsity'])
            del test_set

        if self.similarity_matrix_file is not None:
            print("training time:: ", timed(self.read_matrix), " sec")
        else:
            print("training time:: ", timed(self.compute_similarity), " sec")
            print("prediction_time:: ", timed(self.predict), " sec\n")
        if self.test_file is not None:
            self.evaluate(measures)
Ejemplo n.º 3
0
    def compute(self,
                verbose=True,
                metrics=None,
                verbose_evaluation=True,
                as_table=False,
                table_sep='\t',
                n_ranks=None):
        """
        Extends compute method from BaseItemRecommendation. Method to run recommender algorithm

        :param verbose: Print recommender and database information
        :type verbose: bool, default True

        :param metrics: List of evaluation metrics
        :type metrics: list, default None

        :param verbose_evaluation: Print the evaluation results
        :type verbose_evaluation: bool, default True

        :param as_table: Print the evaluation results as table
        :type as_table: bool, default False

        :param table_sep: Delimiter for print results (only work with verbose=True and as_table=True)
        :type table_sep: str, default '\t'

        :param n_ranks: List of positions to evaluate the ranking
        :type n_ranks: list, None

        """

        super(ContentBased, self).compute(verbose=verbose)

        if verbose:
            print("training_time:: %4f sec" % timed(self.init_model))
            if self.extra_info_header is not None:
                print(self.extra_info_header)

            self.create_user_profile()
            print("prediction_time:: %4f sec" % timed(self.predict))
            print('\n')
        else:
            self.init_model()
            self.create_user_profile()
            self.predict()

        self.write_ranking()

        if self.test_file is not None:
            self.evaluate(metrics,
                          verbose_evaluation,
                          as_table=as_table,
                          table_sep=table_sep,
                          n_ranks=n_ranks)
Ejemplo n.º 4
0
    def compute(self,
                verbose=True,
                metrics=None,
                verbose_evaluation=True,
                as_table=False,
                table_sep='\t'):
        """
        Extends compute method from BaseRatingPrediction. Method to run recommender algorithm

        :param verbose: Print recommender and database information
        :type verbose: bool, default True

        :param metrics: List of evaluation measures
        :type metrics: list, default None

        :param verbose_evaluation: Print the evaluation results
        :type verbose_evaluation: bool, default True

        :param as_table: Print the evaluation results as table
        :type as_table: bool, default False

        :param table_sep: Delimiter for print results (only work with verbose=True and as_table=True)
        :type table_sep: str, default '\t'

        """

        super(MatrixFactorization, self).compute(verbose=verbose)

        if verbose:
            self.init_model()
            print("training_time:: %4f sec" % timed(self.fit))
            if self.extra_info_header is not None:
                print(self.extra_info_header)

            print("prediction_time:: %4f sec" % timed(self.predict))

            print('\n')

        else:
            # Execute all in silence without prints
            self.init_model()
            self.fit()
            self.predict()

        self.write_predictions()

        if self.test_file is not None:
            self.evaluate(metrics,
                          verbose_evaluation,
                          as_table=as_table,
                          table_sep=table_sep)
Ejemplo n.º 5
0
 def execute(self):
     # methods
     print("[Case Recommender: Rating Prediction > SVD++]\n")
     print("training data:: ", len(self.train_set['users']), " users and ",
           len(self.train_set['items']), " items and ",
           self.train_set['ni'], " interactions | sparsity ",
           self.train_set['sparsity'])
     print("test data:: ", len(self.test_set['users']), " users and ",
           len(self.test_set['items']), " items and ",
           (self.test_set['ni']), " interactions | sparsity ",
           self.test_set['sparsity'])
     print("training time:: ", timed(self.train_model), " sec")
     print("\nprediction_time:: ", timed(self.predict), " sec\n")
     self.evaluate(self.predictions)
Ejemplo n.º 6
0
 def init_model(self):
     super(ItemMSMF, self).init_model()
     if self.verbose:
         print("\nread_similarity_matrix_time:: %4f sec" %
               timed(self.fill_similarity_matrix))
     else:
         self.fill_similarity_matrix()
Ejemplo n.º 7
0
 def execute(self):
     print("[Case Recommender: Cross-Fold-Validation Process]\n")
     print("number of folds:: ", self.n_folds, " write folds in:: ", self.dir_folds)
     print("total process time:: ", timed(self.divide_dataset), "sec")
     print("dataset info:: #users: ", len(self.tp['users']), " #items: ", len(self.tp['items']),
           " #number of interactions: ", self.tp['ni'], " #range of feedback: [",
           self.tp['min'], "-", self.tp['max'], "]\n")
    def compute(self, verbose=True, metrics=None, verbose_evaluation=True, as_table=False, table_sep='\t'):
        """
        Extends compute method from BaseItemRecommendation. Method to run recommender algorithm

        :param verbose: Print recommender and database information
        :type verbose: bool, default True

        :param metrics: List of evaluation measures
        :type metrics: list, default None

        :param verbose_evaluation: Print the evaluation results
        :type verbose_evaluation: bool, default True

        :param as_table: Print the evaluation results as table
        :type as_table: bool, default False

        :param table_sep: Delimiter for print results (only work with verbose=True and as_table=True)
        :type table_sep: str, default '\t'

        """

        super(MostPopular, self).compute(verbose=verbose)

        if verbose:
            print("prediction_time:: %4f sec" % timed(self.predict))
            print('\n')

        else:
            self.predict()

        self.write_predictions()

        if self.test_file is not None:
            self.evaluate(metrics, verbose_evaluation, as_table=as_table, table_sep=table_sep)
Ejemplo n.º 9
0
 def execute(self):
     # methods
     print("[Case Recommender: Rating Prediction > User Algorithm]\n")
     print("training data:: ", len(self.train_set['users']), " users and ",
           len(self.train_set['items']), " items and ",
           self.train_set['ni'], " interactions | sparsity ",
           self.train_set['sparsity'])
     print("test data:: ", len(self.test_set['users']), " users and ",
           len(self.test_set['items']), " items and ",
           (self.test_set['ni']), " interactions | sparsity ",
           self.test_set['sparsity'])
     # training baselines bui
     self.fill_matrix()
     print("training time:: ", timed(self.train_baselines), " sec")
     self.compute_similarity()
     print("prediction_time:: ", timed(self.predict), " sec\n")
     self.evaluate(self.predictions)
Ejemplo n.º 10
0
    def execute(self):
        # methods
        print("[Case Recommender: Rating Prediction > User NSVD1]\n")
        print("training data:: ", len(self.train_set['users']), " users and ", len(self.train_set['items']),
              " items and ", self.train_set['ni'], " interactions | sparsity ", self.train_set['sparsity'])
        print("test data:: ", len(self.test_set['users']), " users and ", len(self.test_set['items']),
              " items and ", (self.test_set['ni']), " interactions | sparsity ", self.test_set['sparsity'])
        print("metadata:: ", len(self.metadata['items']), " users and ", len(self.metadata['metadata']),
              " metadata and ", self.metadata['ni'], " interactions\n")
        self._create_factors()

        if self.batch:
            print("training time:: ", timed(self.train_batch_model), " sec")
        else:
            print("training time:: ", timed(self.train_model), " sec")

        print("\nprediction_time:: ", timed(self.predict), " sec\n")
        self.evaluate(self.predictions)
Ejemplo n.º 11
0
    def execute(self):
        # methods
        print(
            "[Case Recommender: Rating Prediction > User Attribute KNN Algorithm]\n"
        )
        print("training data:: ", len(self.train_set['users']), " users and ",
              len(self.train_set['items']), " items and ",
              self.train_set['ni'], " interactions")
        print("test data:: ", len(self.test_set['users']), " users and ",
              len(self.test_set['items']), " items and ", self.test_set['ni'],
              " interactions")

        # training baselines bui
        print("training time:: ", timed(self.train_baselines), " sec")
        if self.similarity_matrix_file is not None:
            print("compute similarity:: ", timed(self.read_matrix), " sec")
        else:
            print("compute similarity time:: ", timed(self.compute_similarity),
                  " sec")
        print("prediction_time:: ", timed(self.predict), " sec\n")
        self.evaluate(self.predictions)
Ejemplo n.º 12
0
    def execute(self,
                measures=('Prec@5', 'Prec@10', 'NDCG@5', 'NDCG@10', 'MAP@5',
                          'MAP@10')):
        # methods
        print("[Case Recommender: Item Recommendation > BPR MF Algorithm]\n")
        print("training data:: ", len(self.train_set['users']), " users and ",
              len(self.train_set['items']), " items and ",
              self.train_set['ni'], " interactions | sparsity ",
              self.train_set['sparsity'])

        if self.test_file is not None:
            test_set = ReadFile(self.test_file).return_information()
            print("test data:: ", len(self.test_set['users']), " users and ",
                  len(self.test_set['items']), " items and ",
                  (self.test_set['ni']), " interactions | sparsity ",
                  self.test_set['sparsity'])
            del test_set
        self._create_factors()
        print("training time:: ", timed(self.train_model), " sec")
        print("prediction_time:: ", timed(self.predict), " sec\n")
        if self.test_file is not None:
            self.evaluate(measures)
Ejemplo n.º 13
0
 def execute(self):
     print("[Case Recommender: Split Dataset Process]\n")
     print("number of folds:: ", self.n_folds, " write folds in:: ",
           self.dir_folds)
     print("total process time:: ", timed(self.divide_dataset), "sec")