Beispiel #1
0
    def create_adj_mat(self):
        """Create adjacent matirx from the user-item interaction matrix."""
        adj_mat = sp.dok_matrix(
            (self.n_users + self.n_items, self.n_users + self.n_items),
            dtype=np.float32)
        adj_mat = adj_mat.tolil()

        R = sp.dok_matrix((self.n_users, self.n_items), dtype=np.float32)
        user_np = np.array(self.ratings[DEFAULT_USER_COL])
        item_np = np.array(self.ratings[DEFAULT_ITEM_COL])
        for u in range(self.n_users):
            index = list(np.where(user_np == u)[0])
            i = item_np[index]
            for item in i:
                R[u, item] = 1
        R = R.tolil()
        adj_mat[:self.n_users, self.n_users:] = R
        adj_mat[self.n_users:, :self.n_users] = R.T
        adj_mat = adj_mat.todok()
        print("already create adjacency matrix", adj_mat.shape)
        norm_adj_mat = normalized_adj_single(adj_mat +
                                             sp.eye(adj_mat.shape[0]))
        mean_adj_mat = normalized_adj_single(adj_mat)
        print("already normalize adjacency matrix")
        return adj_mat.tocsr(), norm_adj_mat.tocsr(), mean_adj_mat.tocsr()
Beispiel #2
0
    def make_fea_sim_mat(self):
        """Make feature similarity matrix.

        Note that the first column is the user/item ID.

        Returns:
            normalized_adj_single
        """
        self.load_user_item_fea()
        self.init_train_items()
        user_sim_mat = sp.csr_matrix(calc_sim(self.user_feat))
        item_sim_mat = sp.csr_matrix(calc_sim(self.item_feat))
        return (
            normalized_adj_single(user_sim_mat + sp.eye(user_sim_mat.shape[0])),
            normalized_adj_single(item_sim_mat + sp.eye(item_sim_mat.shape[0])),
        )
Beispiel #3
0
 def create_adj_mat(self):
     """Create adjacent matrix from the user-item interaction."""
     t1 = time()
     adj_mat = sp.dok_matrix(
         (self.n_users + self.n_items, self.n_users + self.n_items), dtype=np.float32
     )
     adj_mat = adj_mat.tolil()
     R = self.R.tolil()
     adj_mat[: self.n_users, self.n_users :] = R
     adj_mat[self.n_users :, : self.n_users] = R.T
     adj_mat = adj_mat.todok()
     print("already create adjacency matrix", adj_mat.shape, time() - t1)
     t2 = time()
     norm_adj_mat = normalized_adj_single(adj_mat + sp.eye(adj_mat.shape[0]))
     mean_adj_mat = normalized_adj_single(adj_mat)
     print("already normalize adjacency matrix", time() - t2)
     return adj_mat.tocsr(), norm_adj_mat.tocsr(), mean_adj_mat.tocsr()