-
Notifications
You must be signed in to change notification settings - Fork 0
/
fonctions.py
90 lines (51 loc) · 1.82 KB
/
fonctions.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
import loader as ld
import matrix as mmat
#On doit construire les deux matrices de user-items
def maes( file1ap, file2te, k, remplissage = "users") :
#Dimension des matrices
d1 = ld.check_data(file1ap)
#Matrice user-item du test
mui_t = ld.matrice_user_item( file2te, d1[0], d1[1] )
#Matrice des suggestions
mui_a = ld.matrice_user_item( file1ap, d1[0], d1[1] )
if remplissage == "users" :
muif_a = ld.remplissage_moyenne_user(mui_a)
else :
muif_a = ld.remplissage_moyenne_film(mui_a)
mae = []
v1 = np.mat(np.ones(d1[0]))
v2 = np.mat(np.ones(d1[1]))
for i in xrange(1,k) :
dec_a = mmat.simplifier(muif_a, i) #Calcul décomposition à i
m_sug = np.dot(dec_a[0], np.dot(dec_a[1], dec_a[2]) ) #Matrice suggestions
#On calcule la mae
m = abs(m_sug - mui_t)
mae += [np.dot(v1, np.dot(m, v2.T))[0,0]/(d1[0]*d1[1])]
return mae
#On doit construire les deux matrices de user-items
def mae( file1ap, file2te, k, remplissage = "users") :
#Dimension des matrices
d1 = ld.check_data(file1ap)
#Matrice user-item du test
mui_t = ld.matrice_user_item( file2te, d1[0], d1[1] )
#Matrice des suggestions
mui_a = ld.matrice_user_item( file1ap, d1[0], d1[1] ) #Mat u-i
if remplissage == "users" :
muif_a = ld.remplissage_moyenne_user(mui_a) #Remplissage
else :
muif_a = ld.remplissage_moyenne_film(mui_a)
maes = []
for i in xrange(1,k) :
dec = mmat.simplifier(muif_a,i) #Decomposition k
msug = np.dot( dec[0], np.dot( dec[1], dec[2] )) #Matrice sugs
c,s = 0.0,0.0
for i in xrange(d1[1]) :
for u in xrange(d1[0]) :
if mui_t[u,i] <> 0 :
c += 1
s += abs( mui_t[u,i] - msug[u,i] )
maes += [s/c]
return maes