本文整理汇总了Python中recsys.algorithm.factorize.SVD.similar方法的典型用法代码示例。如果您正苦于以下问题:Python SVD.similar方法的具体用法?Python SVD.similar怎么用?Python SVD.similar使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类recsys.algorithm.factorize.SVD
的用法示例。
在下文中一共展示了SVD.similar方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: recommended_files
# 需要导入模块: from recsys.algorithm.factorize import SVD [as 别名]
# 或者: from recsys.algorithm.factorize.SVD import similar [as 别名]
def recommended_files(data,user):
svd = SVD()
svd.set_data(data)
svd.compute(k=1000,min_values=0, pre_normalize=None, mean_center=False, post_normalize=True)
similar_users = [i[0] for i in svd.similar(user)]
#recoms = svd.recommend(user,is_row=True,only_unknowns=True,n=50)
predict_arr = []
user_tths = db.user_list.find({'user':user})
tths = [i['tth'] for i in user_tths]
movie_names = []
for i in similar_users[1:]:
for j in db.user_list.find({'user':i}):
if j['tth'] not in tths:
movie_name = db.tths.find_one({'tth':j['tth']})['name']
movie_names.append(movie_name)
tths.append(j['tth'])
predict_arr.append((movie_name,j['tth'],svd.predict(user,j['tth'])))
predict_arr = sorted(predict_arr,key=lambda x:x[2],reverse=True)
res = []
c_res = 0
for p in predict_arr:
flag=0
for r in res:
if similar(p[0],r[0]):
flag = 1
break
if flag == 0:
res.append(p[1])
c_res += 1
if c_res > 10:
return res
示例2: recommended_files
# 需要导入模块: from recsys.algorithm.factorize import SVD [as 别名]
# 或者: from recsys.algorithm.factorize.SVD import similar [as 别名]
def recommended_files(user):
if not type(user) is str:
user = unidecode.unidecode(user)
if db.done_users.find_one({'user':user})['recommended']==False:
user_files = db.user_list.find({'user':user})
f = open('./dc_recom.dat','a')
for u in user_files:
f.write(u['user'] + '::' + u['tth'])
f.write('\n')
f.close()
db.done_users.update({'user': user}, {'user':user, 'recommended': True})
data = Data()
data.load('./dc_recom.dat', sep='::', format={'col':1,'row':0})
svd = SVD()
svd.set_data(data)
svd.compute(k=1000,min_values=0, pre_normalize=None, mean_center=False, post_normalize=True)
similar_users = [i[0] for i in svd.similar(user,n=10)]
newdata = Data()
for i in range(0,len(similar_users),1):
files = db.user_list.find({'user':similar_users[i]})
for f in files:
newdata.add_tuple((1.0,similar_users[i],f['tth']))
svd.set_data(newdata)
svd.compute(k=1000,min_values=0, pre_normalize=None, mean_center=False, post_normalize=True)
recoms = svd.recommend(user,is_row=True,only_unknowns=True,n=100)
res = []
c_res = 0
for p in recoms:
flag=0
for r in res:
if similar(db.tths.find_one({'tth':p[0]})['name'],db.tths.find_one({'tth':r[0]})['name']):
flag = 1
break
if flag == 0:
res.append(p)
c_res += 1
if c_res > 10:
k = []
for i in res:
try:
j = 'magnet:?xt=urn:tree:tiger:'+i[0] + "&dn=" + unidecode.unidecode(db.tths.find_one({'tth': i[0]})['name'])
except:
j = 'magnet:?xt=urn:tree:tiger:'+i[0]
k.append(j)
return k
k = []
for i in res:
try:
j = 'magnet:?xt=urn:tree:tiger:'+i[0] + "&dn=" + unidecode.unidecode(db.tths.find_one({'tth': i[0]})['name'])
except:
j = 'magnet:?xt=urn:tree:tiger:'+i[0]
k.append(j)
return k
示例3: quickstart
# 需要导入模块: from recsys.algorithm.factorize import SVD [as 别名]
# 或者: from recsys.algorithm.factorize.SVD import similar [as 别名]
def quickstart():
svd = SVD()
recsys.algorithm.VERBOSE = True
# load movielens data
dat_file = 'ml-1m/ratings.dat'
svd.load_data(filename=dat_file, sep='::', format={'col':0, 'row':1, 'value':2, 'ids': int})
# compute svd
k = 100
svd.compute(k=k, min_values=10, pre_normalize=None, mean_center=True,
post_normalize=True)
pdb.set_trace()
# movie id's
ITEMID1 = 1 # toy story
ITEMID2 = 1221 # godfather II
# get movies similar to toy story
svd.similar(ITEMID1)
# get predicted rating for given user & movie
MIN_RATING = 0.0
MAX_RATING = 5.0
USERID = 1
ITEMID = 1
# get predicted rating
pred = svd.predict(ITEMID, USERID, MIN_RATING, MAX_RATING)
actual = svd.get_matrix().value(ITEMID, USERID)
print 'predicted rating = {0}'.format(pred)
print 'actual rating = {0}'.format(actual)
# which users should see Toy Story?
svd.recommend(ITEMID)
示例4: get_movie
# 需要导入模块: from recsys.algorithm.factorize import SVD [as 别名]
# 或者: from recsys.algorithm.factorize.SVD import similar [as 别名]
def get_movie(movie_id):
movie = {}
rating = 0
with sqlite3.connect('data/data100.db') as con:
cur = con.cursor()
cur.execute("SELECT * FROM movies WHERE movie_id = ?", (movie_id,))
movie_result = cur.fetchone()
cur.execute("SELECT director FROM movie_directors WHERE movie_id = ?", (movie_id,))
directors = cur.fetchall()
cur.execute("SELECT actor FROM movie_actors WHERE movie_id = ?", (movie_id,))
actors = cur.fetchall()
cur.execute("SELECT writer FROM movie_writers WHERE movie_id = ?", (movie_id,))
writers = cur.fetchall()
cur.execute("SELECT genre FROM movie_genres WHERE movie_id = ?", (movie_id,))
genres = cur.fetchall()
if 'session_user' in request.cookies:
cur.execute("SELECT * FROM ratings WHERE user_id = ? AND movie_id = ?", (request.get_cookie('session_user', secret='recsys')[0], movie_id,))
rating = cur.fetchone()
cur.execute("SELECT * FROM ratings")
rating_results = cur.fetchall()
d = Data()
d.set(rating_results)
# with open('data/tmp.dat', 'a') as f:
# for l in rating_results:
# f.write('%d,%d,%d\n' % (l[0], l[1], l[2]))
svd = SVD()
# svd.load_data(filename='data/tmp.dat', sep=',', format={'col': 0, 'row': 1, 'value': 2, 'ids':int})
svd.set_data(d)
similar_list = [str(s[0]) for s in svd.similar(int(movie_id))]
cur.execute("SELECT * FROM movies WHERE movie_id IN (%s)" % (', '.join(similar_list)))
similar_movies = cur.fetchall()
movie = {
'mid': movie_result[0],
'title': movie_result[1],
'description': movie_result[2],
'image': movie_result[3],
'year': movie_result[4],
'directors': [d[0] for d in directors],
'writers': [w[0] for w in writers],
'actors': [a[0] for a in actors],
'genres': [g[0] for g in genres],
'rating': rating,
'similar_movies': similar_movies,
}
session_user = request.get_cookie('session_user', secret='recsys') if 'session_user' in request.cookies else None
return template('static/movie.html', movie=movie, session_user=session_user)
示例5: similar_users
# 需要导入模块: from recsys.algorithm.factorize import SVD [as 别名]
# 或者: from recsys.algorithm.factorize.SVD import similar [as 别名]
def similar_users(user):
if not type(user) is str:
user = unidecode.unidecode(user)
if db.done_users.find_one({'user':user})['recommended']==False:
user_files = db.user_list.find({'user':user})
f = open('./dc_recom.dat','a')
for u in user_files:
f.write(u['user'] + '::' + u['tth'])
f.write('\n')
f.close()
db.done_users.update({'user': user}, {'user':user, 'recommended': True})
data = Data()
data.load('./dc_recom.dat', sep='::', format={'col':1,'row':0})
svd = SVD()
svd.set_data(data)
svd.compute(k=1000,min_values=0, pre_normalize=None, mean_center=False, post_normalize=True)
return [i[0] for i in svd.similar(user)]
示例6: loadSVD
# 需要导入模块: from recsys.algorithm.factorize import SVD [as 别名]
# 或者: from recsys.algorithm.factorize.SVD import similar [as 别名]
def loadSVD():
filename = 'favRate.dat'
svd = SVD()
svd.load_data(filename=filename, sep='::', format={'col':0, 'row':1, 'value':2})
svd.save_data("svd.dat", False)
K=20
svd.compute(k=K, min_values=1, pre_normalize="rows", mean_center=False, post_normalize=True, savefile='.')
#svd.recommend(USERID, n=10, only_unknowns=True, is_row=False)
sparse_matrix = svd.get_matrix()
sim_matrix = svd.get_matrix_similarity()
print sparse_matrix
#print sim_matrix
#1173893,1396943
sim = svd.similar(897346, 10)
filename = 'swoffering.yaml'
titleStream = file(filename, 'r')
titleList = yaml.load(titleStream)
#print sim
for row in sim:
(offid, similar) = row
print offid, titleList[str(offid)], similar
示例7: SVD
# 需要导入模块: from recsys.algorithm.factorize import SVD [as 别名]
# 或者: from recsys.algorithm.factorize.SVD import similar [as 别名]
#To show some messages:
import recsys.algorithm
recsys.algorithm.VERBOSE = True
#from recsys.datamodel.data import Data
from recsys.algorithm.factorize import SVD
#from recsys.evaluation.prediction import RMSE, MAE
#Load SVD from /tmp
svd = SVD(filename='/tmp/movielens') # Loading already computed SVD model
#Display top 10 movies similar to given movie
ITEMID= 1 # Toy Story
list=[]
list=svd.similar(ITEMID)
tup=();
#Extracting the 10 MovieIDs
for i in range(0,10):
#print list[i][0]
#mystring = str(list[i][0])+"::"
mystring = str(list[i][0])
with open('ml-1m/movies.dat', 'r') as searchfile:
for line in searchfile:
tup=tuple(line.split('::'))
mystring1 = str(tup[0])
if mystring == mystring1:
print tup[1]
示例8: WhatRating
# 需要导入模块: from recsys.algorithm.factorize import SVD [as 别名]
# 或者: from recsys.algorithm.factorize.SVD import similar [as 别名]
# How similar are these films
svd.similarity(ITEMID1, ITEMID2)
# In[6]:
# What about
ITEMID3 = 2355 # A bug's life
svd.similarity(ITEMID1, ITEMID3)
# In[7]:
# We cen get films similar to Toy Story
svd.similar(ITEMID1)
# In[8]:
# Let us predict the rating for a user and a movie
def WhatRating(USERID, ITEMID):
# get movies similar to film with ITEMID
svd.similar(ITEMID)
# get predicted rating for given user & movie
MIN_RATING = 0.0
MAX_RATING = 5.0
# get predicted rating
pred = svd.predict(ITEMID, USERID, MIN_RATING, MAX_RATING)
示例9: set
# 需要导入模块: from recsys.algorithm.factorize import SVD [as 别名]
# 或者: from recsys.algorithm.factorize.SVD import similar [as 别名]
#print(svd.similarity(ITEMID1, ITEMID2))
# 0.67706936677315799
item_set = set()
import csv
with open(filename, 'rb') as csvfile:
reader = csv.reader(csvfile, delimiter=',')
for row in reader:
item_set.add(int(row[1]))
similar_items = {}
for item in item_set:
# print("similar for item: " + str(item))
try:
similar_items[item] = svd.similar(item)
except Exception as e:
print(e)
import subject_relation
import json
x = subject_relation.subjectTagMap
similar_items_good = filter(lambda x: similar_items[x][1] > 0.1, similar_items)
print('similar items: ' + str(len(similar_items)) + '|similar items good: ' + str(len(similar_items_good)))
for k, v in similar_items.items():
if v[1] < 0.1:
print('bad similar items ' + k)
continue
similaries = ["%s: %0.3f" % (x.get(str(id), 'NULL'), weight) for (id, weight) in v]
# print(x.get(str(k), 'NULL'), ["%s: %0.3f" % (x.get(str(id), 'NULL'), weight) for (id, weight) in v])
示例10: RecommendationSystem
# 需要导入模块: from recsys.algorithm.factorize import SVD [as 别名]
# 或者: from recsys.algorithm.factorize.SVD import similar [as 别名]
class RecommendationSystem():
# To run on your own machine, you need to initialize with your datapath to the frontend folder
def __init__(self, sc, datapath='/media/psf/Home/CS/GIT_HUB/Movie-Recommendation-Project/frontend/', rating_file='ratings_small.csv', complete_rating_file='ratings.csv', movie_file='movies.csv', detail_file='modified.csv', model='movielens_small'):
self.sc = sc
self.start = True
self.rating_file = datapath+rating_file
self.complete_rating_file = datapath+complete_rating_file
self.movie_file = datapath+movie_file
self.detail_file = datapath+detail_file
self.integration_folder = datapath
self.svd = SVD(filename=datapath+model)
self.svd.load_data(filename=self.rating_file, sep=',', format={'col': 0, 'row': 1, 'value': 2, 'ids': int})
self.svd.create_matrix()
self.ia = imdb.IMDb(accessSystem='http')
# als stuff
self.sqlContext = SQLContext(self.sc)
self.movie_data = self.sc.textFile(self.movie_file)
self.ratings_data = self.sc.textFile(self.complete_rating_file).map(lambda line: line.split(",")).map(lambda x: (int(x[0]), int(x[1]), float(x[2])))
self.als_model_path = datapath + 'Model_Collaborative_Filtering'
self.als_model = MatrixFactorizationModel.load(sc, self.als_model_path)
self.movie_df = self.sqlContext.read.load(datapath+'tables/movies')
self.detail_df = self.sqlContext.read.load(datapath+'tables/detail')
self.rating_df = self.sqlContext.read.load(datapath+'tables/ratings')
# call this function to get all recommendations
def get_all_recomm(self, userid, moviename):
movieid = self.get_movie_id(moviename)
# all recommendation algorithms return a list of movie ids
recom1 = self.svd_recomm(userid, only_unknown=True)
recom2 = self.svd_similar(movieid)
recom3 = self.als_new(userid)
#get info about the movie based on movie ids
brief_info1 = self.get_brief_list(recom1)
brief_info2 = self.get_brief_list(recom2)
brief_info3 = self.get_brief_list(recom3)
# print to terminal
for l1 in brief_info1:
print l1
for l2 in brief_info2:
print l2
for l3 in brief_info3:
print l3
return [brief_info1, brief_info2, brief_info3]
# get movie id based on movie name input
def get_movie_id(self, moviename):
r = self.movie_df.where(self.movie_df['name'].startswith(moviename)).first()
# return movie id 1 if not found
if r is None:
return 1
return r['movieId']
# svd recommendation algorithm based on the user's rating history, set only_known to True for unseen movies
def svd_recomm(self, userid, only_unknown):
user_found = False
ratings = open(self.rating_file, 'r')
for rating_row in ratings:
rating_item = rating_row.split(',')
if int(rating_item[0]) == userid:
user_found = True
break
ratings.close()
if not user_found:
return None
# output format: (movieid, similarity value)
if only_unknown:
similar_list = self.svd.recommend(userid, n=10, only_unknowns=True, is_row=True)
else:
similar_list = self.svd.recommend(userid, n=10, only_unknowns=False, is_row=False)
movieid_list = self.get_id_list(similar_list)
return movieid_list
# svd recommendation algorithm based on similar movie
def svd_similar(self, movieid):
movie_found = False
movies = open(self.movie_file, 'r')
for movie_row in movies:
row_item = movie_row.split(',')
if int(row_item[0]) == movieid:
movie_found = True
break
movies.close()
if not movie_found:
return None
similar_list = self.svd.similar(movieid)
movieid_list = self.get_id_list(similar_list)
return movieid_list
#.........这里部分代码省略.........
示例11: print
# 需要导入模块: from recsys.algorithm.factorize import SVD [as 别名]
# 或者: from recsys.algorithm.factorize.SVD import similar [as 别名]
rating_item = rating_row.split(',')
if (int(rating_item[1]) == movie_id):
movie_found = True
break
if (movie_found):
for movie_row in movie_lens:
row_item = movie_row.split(',')
if (int(row_item[0]) == movie_id):
print ("Movie name is: " + row_item[1])
break
if (movie_found == False):
print "Movie not found. Please enter a valid user ID\n"
continue
#if we reach here, we definitely have a valid movie and user id. Continue with svd recommendation.
#Getting movies similar to the given movie
similar_list = svd.similar(movie_id)
#Similar list is a list of similar movies. Format of Tuple (movie_id, similarity_value)
ratings_file = open('ratings_small.csv', 'r+')
movie_lens = open('movies.csv', 'r+')
movie_list = []
#print similar_list
for movie in similar_list:
ratings_file = open('ratings_small.csv', 'r+')
movie_lens = open('movies.csv', 'r+')
similar_movie_id = int(movie[0])
#print movie[0]
for movie_row in movie_lens:
movie_item = movie_row.split(',')
if (int(movie_item[0]) == similar_movie_id):
movie_name = movie_item[1]
break
示例12: Story
# 需要导入模块: from recsys.algorithm.factorize import SVD [as 别名]
# 或者: from recsys.algorithm.factorize.SVD import similar [as 别名]
svd.compute(k=k,
min_values=10,
pre_normalize=None,
mean_center=True,
post_normalize=True,
savefile='/tmp/movielens')
# 3. Get similarity between two movies:
ITEMID1 = 1 # Toy Story (1995)
ITEMID2 = 2355 # A bug's life (1998)
print svd.similarity(ITEMID1, ITEMID2)
# 0.67706936677315799
"""
# 4. Get movies similar to Toy Story:
svd.similar(ITEMID1)
# 5. Predict the rating a user (USERID) would give to a movie (ITEMID):
MIN_RATING = 0.0
MAX_RATING = 5.0
ITEMID = 1
USERID = 1
svd.predict(ITEMID, USERID, MIN_RATING, MAX_RATING)
# Predicted value 5.0
svd.get_matrix().value(ITEMID, USERID)
示例13: handle
# 需要导入模块: from recsys.algorithm.factorize import SVD [as 别名]
# 或者: from recsys.algorithm.factorize.SVD import similar [as 别名]
def handle(self, *args, **options):
svd2 = SVD(filename='./data/movielens') # Loading already computed SVD model
# Get two movies, and compute its similarity:
ITEMID1 = 2 # Toy Story (1995)
ITEMID2 = 2335 # A bug's life (1998)
print "{}: {}".format(ITEMID1, svd2.similar(ITEMID1))
示例14: RecommendationSystem
# 需要导入模块: from recsys.algorithm.factorize import SVD [as 别名]
# 或者: from recsys.algorithm.factorize.SVD import similar [as 别名]
class RecommendationSystem():
#def __init__(self, spark_context, rating_file='ratings_small.csv', movie_file='movies.csv', detail_file='modified.csv', model='movielens_small'):
def __init__(self, rating_file='ratings_small.csv', movie_file='movies.csv', detail_file='modified.csv', model='movielens_small'):
self.start = True
self.rating_file = rating_file
self.movie_file = movie_file
self.detail_file = detail_file
self.svd = SVD(filename=model)
self.svd.load_data(filename=rating_file, sep=',', format={'col': 0, 'row': 1, 'value': 2, 'ids': int})
self.svd.create_matrix()
self.ia = imdb.IMDb(accessSystem='http')
def get_all_recomm(self, userid, movieid):
recom1 = self.svd_recomm(userid, only_unknown=False)
recom2 = self.svd_recomm(userid, only_unknown=True)
recom3 = self.svd_similar(movieid)
brief_info1 = self.get_brief_list(recom1)
brief_info2 = self.get_brief_list(recom2)
brief_info3 = self.get_brief_list(recom3)
return [brief_info1, brief_info2, brief_info3]
def svd_recomm(self, userid, only_unknown):
user_found = False
ratings = open(self.rating_file, 'r')
for rating_row in ratings:
rating_item = rating_row.split(',')
if int(rating_item[0]) == userid:
user_found = True
break
ratings.close()
if not user_found:
return None
#output format: (movieid, similarity value)
if only_unknown:
similar_list = self.svd.recommend(userid, n=10, only_unknowns=True, is_row=True)
else:
similar_list = self.svd.recommend(userid, n=10, only_unknowns=False, is_row=False)
movieid_list = self.get_id_list(similar_list)
return movieid_list
def svd_similar(self, movieid):
movie_found = False
movies = open(self.movie_file, 'r')
for movie_row in movies:
row_item = movie_row.split(',')
if (int(row_item[0]) == movieid):
movie_found = True
break
movies.close()
if not movie_found:
return None
similar_list = self.svd.similar(movieid)
movieid_list = self.get_id_list(similar_list)
return movieid_list
def get_id_list(self, l):
movieid_list = []
for s in l:
movieid_list.append(s[0])
return movieid_list
def get_detail(self, imdb_id):
#print type(imdb_id)
m = self.ia.get_movie(str(imdb_id))
cover = m.get('cover url')
if cover:
path = "Images/" + str(imdb_id) + ".jpg"
urllib.urlretrieve(cover, path)
return m
def get_brief_list(self, movieList):
info_list = []
for m in movieList:
info = self.get_brief(m)
info_list.append(info)
return info_list
def get_brief(self, movieid):
info = {}
info['title'] = 'unknown'
info['genre'] = 'unknown'
info['rating'] = 0
info['imdb_id'] = 1
info['director'] = 'unknown'
info['cast'] = 'unknown'
movies = open(self.movie_file, 'r')
for m in movies:
row_item = m.split(',')
if int(row_item[0]) == movieid:
info['title'] = str(row_item[1].strip())
#.........这里部分代码省略.........
示例15: Data
# 需要导入模块: from recsys.algorithm.factorize import SVD [as 别名]
# 或者: from recsys.algorithm.factorize.SVD import similar [as 别名]
import sqlite3
import recsys.algorithm
recsys.algorithm.VERBOSE = True
from recsys.algorithm.factorize import SVD
from recsys.evaluation.prediction import RMSE, MAE
from recsys.datamodel.data import Data
from recsys.datamodel.item import Item
from recsys.datamodel.user import User
data = Data()
data.load("../data/ratings.tsv", sep='|', format={'col':0, 'row':1, 'value':2, 'ids':float})
K=100
svd = SVD()
svd.set_data(data)
svd.compute(k=K, min_values=0.1, pre_normalize=None, mean_center=True, post_normalize=True)
[(beers[b].get_data()['name'], b, val) for b, val in svd.similar(1502, 50)\
if beers[b].get_data()['brewery']!=232 and beers[b].get_data()['style_id']==17] #Bell's two hearted