예제 #1
0
파일: mainb.py 프로젝트: batlac/ALAM
def tps_calc_m1(k):

    t0 = time.clock()

    users, items = ld.check_data("ml-100k/u.data")

    mat_u_i = ld.matrice_user_item("ml-100k/u.data", users, items)

    mat_cm = ld.remplissage_moyenne_mixte(mat_u_i)

    ta = 0  # time.clock() - t0

    tps = []
    ks = []

    for i in k:

        t1 = time.clock()

        m = mmat.simplifier(mat_cm, i)

        t2 = time.clock()

        tps += [t2 - t1 + ta]
        ks += [i]

    return (ks, tps)
예제 #2
0
파일: mainb.py 프로젝트: batlac/ALAM
def f1():
    """
    Affichage des matrices remplies
  """

    # Compte le nombre d'users et d'items
    users, items = ld.check_data("ml-100k/u.data")

    # Construction matrice user/items de u.data
    mat_u_i = ld.matrice_user_item("ml-100k/u.data", users, items)

    # Différentes approximations par moyennes
    mat_cu = ld.remplissage_moyenne_user(mat_u_i)
    mat_cf = ld.remplissage_moyenne_film(mat_u_i)
    mat_cm = ld.remplissage_moyenne_mixte(mat_u_i)

    m = mmat.simplifier(mat_cm, 10)

    # Dessin des graphes

    plt.imshow(np.dot(m[0], m[1]), interpolation="none", vmin=0, vmax=5, cmap="Reds")

    plt.title("Suggestion avec k=10 pour le remplissage mixte")
    plt.axis([0, 1681, 942, 0])
    plt.colorbar()
    plt.xlabel("Film")
    plt.ylabel("Utilisateur")

    plt.show()
예제 #3
0
파일: mainb.py 프로젝트: batlac/ALAM
def f3(ran, mode=0):
    """
    Permet de calculer les MAE (SVD) pour un range de k et d'afficher le graphe
  """

    file_approx = "ml-100k/u1.base"
    file_test = "ml-100k/u1.test"

    dim1 = ld.check_data(file_approx)  # Dim de base
    dim2 = ld.check_data(file_test)  # Dim de test

    # Matrice des predictions

    mui = ld.matrice_user_item(file_approx, dim1[0], dim1[1])  # Matrice user item de la base

    if mode == 0:
        mui_r = ld.remplissage_moyenne_user(mui)  # remplissage
    elif mode == 1:
        mui_r = ld.remplissage_moyenne_film(mui)  # remplissage
    else:
        mui_r = ld.remplissage_moyenne_mixte(mui)  # remplissage

    Xk, Yk = mmat.simplifier(mui_r, max(ran))  # Matrices des predictions

    # Matrice du test

    mui_t = ld.matrice_user_item(file_test, dim1[0], dim1[1])

    # Calcul des mae

    maes = []

    print np.array(list(reversed(ran)))

    for k in reversed(ran):

        Xk, Yk = mmat.reduire(Xk, Yk, k)  # Matrices des predictions

        maes += [fn.mae(mui_t, Xk, Yk)]

        print maes

    print maes

    return (np.array(list(reversed(ran))), maes)
예제 #4
0
파일: mainb.py 프로젝트: batlac/ALAM
def f2(k):
    """
    Permet de sauvegarder sous forme de pickle les matrices de la
    decomposition au degré k par SVD
  """
    nfile = "decomp_udata_k" + str(k)

    # Approximation bas rang avec k = 30

    # Compte le nombre d'users et d'items
    users, items = ld.check_data("ml-100k/u.data")

    # Construction matrice user/items
    mat_u_i = ld.matrice_user_item("ml-100k/u.data", users, items)

    mat_r = ld.remplissage_moyenne_mixte(mat_u_i)

    X, Y = mmat.simplifier(mat_u_i, k)

    mmat.save_decomposition(X, Y, nfile)

    return nfile