コード例 #1
0
def __completef(fitinfo, method=None):
    """Completes missing values in f using matrix-completion library (Duan, 2020)."""
    mof = fitinfo['mof']
    f = fitinfo['f']

    if method is None or method == 'svt':
        # Singular value thresholding
        fhat = svt_solve(f, ~mof)
    elif method == 'pmf':
        # Probablistic matrix factorization
        fhat = pmf_solve(f, ~mof, k=10, mu=1e-2)
    elif method == 'bmf':
        # Biased alternating least squares
        fhat = biased_mf_solve(f, ~mof, k=10, mu=1e-2)
    else:
        raise ValueError(
            'Unsupported completion method. {:s}'.format(methodoptionstr))

    if not np.isfinite(fhat).all():
        raise ValueError('Completion method {:s} failed. {:s} {:s}'.format(
            method, methodoptionstr, suggeststr))

    fitinfo['f'] = fhat
    fitinfo['completionmethod'] = method
    return
コード例 #2
0
    V = np.random.randn(items, rank)
    # R = np.random.randn(users, items) + np.dot(U, V.T) # with noise
    R = np.dot(U, V.T)  # without noise

    mask = np.random.binomial(1, percent_shown[i], size=users * items).reshape(
        (users, items))

    rHat_svt = svt_solve(R, mask)
    res_observed[i, 0] = calc_observed_rmse(R, rHat_svt, mask)
    res_unobserved[i, 0] = calc_unobserved_rmse(R, rHat_svt, mask)

    rHat_pmf = pmf_solve(R, mask, 10, 1e-2)
    res_observed[i, 1] = calc_observed_rmse(R, rHat_pmf, mask)
    res_unobserved[i, 1] = calc_unobserved_rmse(R, rHat_pmf, mask)

    rHat_bias = biased_mf_solve(R, mask, 10, 1e-2)
    res_observed[i, 2] = calc_observed_rmse(R, rHat_bias, mask)
    res_unobserved[i, 2] = calc_unobserved_rmse(R, rHat_bias, mask)

plt.plot(percent_shown, res_observed[:, 0], 'r--', label='SVT')
plt.plot(percent_shown, res_observed[:, 1], 'g--', label='PMF')
plt.plot(percent_shown, res_observed[:, 2], 'b--', label='BIAS')
plt.title('Observed RMSE')
plt.legend(loc='upper left')
plt.show()

plt.plot(percent_shown, res_unobserved[:, 0], 'r--', label='SVT')
plt.plot(percent_shown, res_unobserved[:, 1], 'g--', label='PMF')
plt.plot(percent_shown, res_unobserved[:, 2], 'b--', label='BIAS')
plt.title('UnObserved RMSE')
plt.legend(loc='upper left')
コード例 #3
0
import numpy as np
from matrix_completion import svt_solve, pmf_solve, biased_mf_solve
import matplotlib.pyplot as plt

ratings_100k = np.load('rating-100k.npy')

plt.imshow(ratings_100k, cmap='jet', interpolation='nearest')
plt.show()

mask = (ratings_100k > 0).astype(np.int)

rHat_svt = svt_solve(ratings_100k, mask)
plt.imshow(rHat_svt, cmap='jet', interpolation='nearest')
plt.show()

rHat_pmf = pmf_solve(ratings_100k, mask, 10, 1e-2)
plt.imshow(rHat_pmf, cmap='jet', interpolation='nearest')
plt.show()

rHat_bias = biased_mf_solve(ratings_100k, mask, 10, 1e-2)
plt.imshow(rHat_bias, cmap='jet', interpolation='nearest')
plt.show()