def get_theta_of_problem(matrix, nr_features, nr_epochs, nr_iterations):
        nr_problems, nr_users = matrix.shape

        theta_users = np.random.rand(nr_users, nr_features)
        theta_problems = np.zeros((nr_problems, nr_features))

        matrix_t = np.transpose(matrix)

        i = 0
        while i <= nr_epochs:
            print('Progress: {}%'.format(100 * i / nr_epochs))
            i += 1

            for problem in range(nr_problems):
                x = np.array(theta_users)

                y = np.array(matrix[problem])

                theta_problems[problem] = BaseRecommender.gradient_descent(
                    x, y, nr_iterations)[1:]

            for user in range(nr_users):
                x = np.array(theta_problems)

                y = np.array(matrix_t[user])

                theta_users[user] = BaseRecommender.gradient_descent(
                    x, y, nr_iterations)[1:]

        return theta_problems.mean(axis=0)
示例#2
0
    def __init__(self, users=None, items=None, config=None):
        BaseRecommender.__init__(self, users, items, config)
        self.P = None
        self.Q = None
        self.b_i = None

        if config and self.users and self.items:
            nb_users = len(self.users)
            nb_movies = len(self.items)
            nb_latent_f = config['nb_latent_f']
            scale = config['init_params_scale'] if 'init_params_scale' in config else 0.001
            params = self._init_params(nb_users, nb_movies, nb_latent_f, scale=scale)
            self._set_params(params)
示例#3
0
    def __init__(self, users=None, items=None, config=None):
        BaseRecommender.__init__(self, users, items, config)

        self.sparse_matrix = None
        self.similarity_matrix = None
        self.intercepts = None

        if config:
            self.ignore_negative_weights = config['ignore_negative_weights']
            self.model = SGDRegressor(penalty='elasticnet', n_iter=config['nb_epochs'],
                                      fit_intercept=config['fit_intercept'], alpha=config['alpha'],
                                      l1_ratio=config['l1_ratio'])
            self.intercepts = {}
示例#4
0
    def __init__(self, users=None, items=None, config=None, movie_to_imdb=None, user_pref_model=None, d2v_model=None):
        BaseRecommender.__init__(self, users, items, config)

        self.user_factors = None
        self.item_factors = None
        self.item_bias = None

        self.global_bias = None

        self.user_pref_model = user_pref_model
        self.d2v_model = d2v_model
        self.movie_to_imdb = movie_to_imdb

        if config and self.users and self.items:
            nb_users = len(self.users)
            nb_movies = len(self.items)
            nb_latent_f = config['nb_latent_f']
            params = self._init_params(nb_users, nb_movies, nb_latent_f)
            self._set_params(params)
示例#5
0
def load_recommender(filepath):
    """
    Load a recommender model from file after it has been saved by
    save_recommender().

    Parameters
    ----------
    filepath : str
        The filepath to read from.
    """
    return BaseRecommender.load(filepath)
示例#6
0
def load_recommender(filepath):
    """
    Load a recommender model from file after it has been saved by
    save_recommender().

    Parameters
    ----------
    filepath : str
        The filepath to read from.
    """
    return BaseRecommender.load(filepath)
示例#7
0
def read_recommender_description(filepath):
    """
    Read a recommender model description from file after it has
    been saved by save_recommender(), without loading all the
    associated data into memory.

    Parameters
    ----------
    filepath : str
        The filepath to read from.
    """
    return BaseRecommender.read_recommender_description(filepath)
示例#8
0
    def __init__(self, users=None, items=None, config=None):
        BaseRecommender.__init__(self, users, items, config)

        self.user_factors = None
        self.item_factors = None
        self.user_interest_factors = None
        self.user_interest_bias = None
        self.item_bias = None
        self.global_bias = None

        self.si_user_model = None
        self.si_item_model = None

        if config and self.users and self.items:
            nb_users = len(self.users)
            nb_movies = len(self.items)
            nb_latent_f = config['nb_latent_f']
            nb_user_pref = config['nb_user_pref']
            scale = config['init_params_scale'] if 'init_params_scale' in config else 0.001
            params = self._init_params(nb_users, nb_movies, nb_latent_f, nb_user_pref, scale=scale)
            self._set_params(params)
示例#9
0
def read_recommender_description(filepath):
    """
    Read a recommender model description from file after it has
    been saved by save_recommender(), without loading all the
    associated data into memory.

    Parameters
    ----------
    filepath : str
        The filepath to read from.
    """
    return BaseRecommender.read_recommender_description(filepath)
示例#10
0
    def __init__(self, users=None, items=None, config=None, movie_to_imdb=None,d2v_model=None):
        BaseRecommender.__init__(self, users, items, config)

        self.user_factors = None
        self.item_factors = None
        self.item_bias = None

        self.global_bias = None

        self.nn_w1 = None
        self.nn_w2 = None

        self.d2v_model = d2v_model
        self.movie_to_imdb = movie_to_imdb

        if config and self.users and self.items:
            nb_users = len(self.users)
            nb_movies = len(self.items)
            self.nb_latent_f = config['nb_latent_f']
            nb_d2v_features = config['nb_d2v_features']
            nb_hidden_neurons = config['nb_hidden_neurons']
            params = self._init_params(nb_users, nb_movies, self.nb_latent_f, nb_d2v_features, nb_hidden_neurons)
            self._set_params(params)