def fit(self, ratings): n_users = max(imap(key_u, ratings)) + 1 n_items = max(imap(key_i, ratings)) + 1 mat = to_sparse(ratings, shape=(n_users, n_items)) svd = TruncatedSVD(n_components=self.K, algorithm='arpack') self.U = svd.fit_transform(mat) # U.dot(Sigma) self.VT = svd.components_ # VT
def fit(self, ratings): super(SvdAvgPredictor, self).fit(ratings) n_users = max(imap(key_u, ratings)) + 1 n_items = max(imap(key_i, ratings)) + 1 offset = [(u, i, r - self.offset_user[u] - self.avg_item[i]) for u, i, r in ratings] mat = to_sparse(offset, shape=(n_users, n_items)) svd = TruncatedSVD(n_components=self.K, algorithm='arpack') self.U = svd.fit_transform(mat) # U.dot(Sigma) self.VT = svd.components_ # VT
def __init__(self, ratings, users, items): self.users = {k - 1: v for k, v in users.iteritems()} self.items = {k - 1: v for k, v in items.iteritems()} self.data = [(uid - 1, iid - 1, r) for uid, iid, r in ratings] self.mat = to_sparse(self.data, shape=(len(users), len(items))) pass