-
Notifications
You must be signed in to change notification settings - Fork 0
/
UserMatrix.py
81 lines (60 loc) · 2 KB
/
UserMatrix.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
import numpy as np
from Implicit import *
from Users import *
class UserMatrix(object):
def __init__(self):
self.Users = {}
self.UsersImplicit = {}
self.U = Users()
self.F = 0
def addUser(self,userID,F):
assert userID not in self.Users
assert isinstance(F, int)
assert userID not in self.UsersImplicit
self.UsersImplicit[userID] = Implicit(userID)
self.Users[userID] = np.random.random(F)
self.U.addUser(userID)
self.F= F
def addUserRating(self,uid,rating, songId, artID):
self.U.addRatings(uid, artID, songId, rating)
def getUserRatings(self,uid):
return self.U.getRatings(uid)
def getUserAverage(self, uid):
return self.U.computeAvgRatingForUser(uid)
"""
avg rating of all movies
"""
def getGlobalAverage(self):
return self.U.computeGlobalBias()
def getUserLatent(self, keyID):
return self.Users[keyID]
def getUsersDict(self):
return self.Users;
def getSizeFeatures(self, id):
assert id in self.Users[id]
return len(self.Users[id])
def getFeatures(self, uid ):
assert uid in self.Users
return self.Users[uid]
def updateFeatures(self, uid, features):
assert uid in self.Users
self.Users[uid] = np.array(features)
def updateFeature(self,uid, feature, pos):
assert uid in self.Users
assert isinstance(pos, int)
self.Users[uid][pos] = np.float(feature)
def getFeature(self, uid, pos):
assert uid in self.Users
assert isinstance(pos, int)
return self.Users[uid][pos]
def hasRatings(self,uid):
return len(self.U.getRatings(uid)) > 0
def getUsers(self):
return self.U.users
def getUser(self, uid):
assert uid in self.U.users
return self.U.users[uid]
def getBias(self, uid):
return self.U.getBias(uid)
def setBias(self, uid, bias):
self.U.setBias(uid, bias)