def fit( real, known, latent_d=1, ret_pmf=False, subtract_mean=False, sig_u=1e10, sig_v=1e10, sig=1, do_bayes=False, burnin=10, samps=200, stop_thresh=1e-10, min_learning_rate=1e-20, ): ratings = np.zeros((known.sum(), 3)) for idx, (i, j) in enumerate(np.transpose(known.nonzero())): ratings[idx] = [i, j, real[i, j]] pmf = ProbabilisticMatrixFactorization(ratings, latent_d, subtract_mean) pmf.sigma_sq = sig pmf.sigma_u_sq = sig_u pmf.sigma_v_sq = sig_v pmf.stop_thresh = stop_thresh pmf.min_learning_rate = min_learning_rate pmf.fit() if not do_bayes: pred = pmf.predicted_matrix() return (pmf, pred) if ret_pmf else pred else: bpmf = BayesianPMF(ratings, 1) bpmf.__setstate__(pmf.__getstate__()) sampler = bpmf.samples() # do burn-in next(islice(sampler, burnin, burnin), None) pred = bpmf.predict(islice(sampler, samps)) return (bpmf, pred) if ret_pmf else pred
def fit(real, known, latent_d=1, ret_pmf=False, subtract_mean=False, sig_u=1e10, sig_v=1e10, sig=1, do_bayes=False, burnin=10, samps=200, stop_thresh=1e-10, min_learning_rate=1e-20): ratings = np.zeros((known.sum(), 3)) for idx, (i, j) in enumerate(np.transpose(known.nonzero())): ratings[idx] = [i, j, real[i, j]] pmf = ProbabilisticMatrixFactorization(ratings, latent_d, subtract_mean) pmf.sigma_sq = sig pmf.sigma_u_sq = sig_u pmf.sigma_v_sq = sig_v pmf.stop_thresh = stop_thresh pmf.min_learning_rate = min_learning_rate pmf.fit() if not do_bayes: pred = pmf.predicted_matrix() return (pmf, pred) if ret_pmf else pred else: bpmf = BayesianPMF(ratings, 1) bpmf.__setstate__(pmf.__getstate__()) sampler = bpmf.samples() # do burn-in next(islice(sampler, burnin, burnin), None) pred = bpmf.predict(islice(sampler, samps)) return (bpmf, pred) if ret_pmf else pred