import numpy as np
from numpy import inf
def evaluation(test_R, test_mask_R, Estimated_R, num_test_ratings):
pre_numerator = np.multiply((test_R - Estimated_R), test_mask_R)
numerator = np.sum(np.square(pre_numerator))
denominator = num_test_ratings
RMSE = np.sqrt(numerator / float(denominator))
pre_numeartor = np.multiply((test_R - Estimated_R), test_mask_R)
numerator = np.sum(np.abs(pre_numeartor))
denominator = num_test_ratings
MAE = numerator / float(denominator)
pre_numeartor1 = np.sign(Estimated_R - 0.5)
tmp_test_R = np.sign(test_R - 0.5)
pre_numerator2 = np.multiply((pre_numeartor1 == tmp_test_R), test_mask_R)
numerator = np.sum(pre_numerator2)
denominator = num_test_ratings
ACC = numerator / float(denominator)
a = np.log(Estimated_R)
b = np.log(1 - Estimated_R)
a[a == -inf] = 0
b[b == -inf] = 0
tmp_r = test_R
tmp_r = a * (tmp_r > 0) + b * (tmp_r == 0)
tmp_r = np.multiply(tmp_r, test_mask_R)
numerator = np.sum(tmp_r)
denominator = num_test_ratings
AVG_loglikelihood = numerator / float(denominator)
return RMSE, MAE, ACC, AVG_loglikelihood
def read_rating(datapath, dataname, num_users, num_items, random_seed):
user_train_set = set()
user_test_set = set()
item_train_set = set()
item_test_set = set()
R = np.zeros((num_users, num_items))
mask_R = np.zeros((num_users, num_items))
C = np.zeros((num_users, num_items))
train_R = np.zeros((num_users, num_items))
test_R = np.zeros((num_users, num_items))
train_mask_R = np.zeros((num_users, num_items))
test_mask_R = np.zeros((num_users, num_items))
num_train_ratings = 0
num_test_ratings = 0
train_file_name = datapath + f'{dataname}.train'
test_file_name = datapath + f'{dataname}.test'
''' load train fold '''
with open(train_file_name) as f1:
lines = f1.readlines()
for line in lines:
user, item, voting = line.split("\t")
user = int(user)
item = int(item)
voting = int(voting)
if voting == -1:
voting = 0
''' Total '''
R[user, item] = voting
mask_R[user, item] = 1
''' Train '''
train_R[user, item] = int(voting)
train_mask_R[user, item] = 1
C[user, item] = 1
user_train_set.add(user)
item_train_set.add(item)
num_train_ratings = num_train_ratings + 1
''' load test fold '''
with open(test_file_name) as f2:
lines = f2.readlines()
for line in lines:
user, item, voting = line.split("\t")
user = int(user)
item = int(item)
voting = int(voting)
if voting == -1:
voting = 0
''' Total '''
R[user, item] = voting
mask_R[user, item] = 1
''' Test '''
test_R[user, item] = int(voting)
test_mask_R[user, item] = 1
user_test_set.add(user)
item_test_set.add(item)
num_test_ratings = num_test_ratings + 1
assert num_train_ratings == np.sum(train_mask_R)
assert num_test_ratings == np.sum(test_mask_R)
return train_R, train_mask_R, test_R, test_mask_R, num_train_ratings, num_test_ratings,\
user_train_set, item_train_set, user_test_set, item_test_set
def read_trust(datapath, dataname, num_users):
trust_matrix = np.zeros((num_users, num_users))
filename = datapath + f'{dataname}.trust'
with open(filename) as f2:
lines = f2.readlines()
for line in lines:
src, dst = line.split("\t")
trust_matrix[int(src), int(dst)] = 1
return trust_matrix
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
通过TrustSVD算法进行基于矩阵分解的商品推——数据集通过TrustSVD算法进行基于矩阵分解的商品推——数据集通过TrustSVD算法进行基于矩阵分解的商品推——数据集通过TrustSVD算法进行基于矩阵分解的商品推——数据集通过TrustSVD算法进行基于矩阵分解的商品推——数据集通过TrustSVD算法进行基于矩阵分解的商品推——数据集通过TrustSVD算法进行基于矩阵分解的商品推——数据集通过TrustSVD算法进行基于矩阵分解的商品推——数据集通过TrustSVD算法进行基于矩阵分解的商品推——数据集通过TrustSVD算法进行基于矩阵分解的商品推——数据集通过TrustSVD算法进行基于矩阵分解的商品推——数据集通过TrustSVD算法进行基于矩阵分解的商品推——数据集通过TrustSVD算法进行基于矩阵分解的商品推——数据集通过TrustSVD算法进行基于矩阵分解的商品推——数据集通过TrustSVD算法进行基于矩阵分解的商品推——数据集通过TrustSVD算法进行基于矩阵分解的商品推——数据集通过TrustSVD算法进行基于矩阵分解的商品推——数据集通过Trust
资源推荐
资源详情
资源评论
收起资源包目录
通过TrustSVD算法进行基于矩阵分解的商品推.zip (11个子文件)
datasets
data
politic.inter 32.12MB
politic.train 25.7MB
politic.trust 11.73MB
politic.test 6.42MB
src
Logger.py 898B
utils.py 4KB
__pycache__
utils.cpython-37.pyc 2KB
Logger.cpython-37.pyc 1KB
__init__.cpython-37.pyc 144B
__init__.py 0B
politic.ipynb 4KB
共 11 条
- 1
资源评论
- xiilyyang2024-03-30感谢资源主的分享,这个资源对我来说很有用,内容描述详尽,值得借鉴。
- tansk123062023-04-13资源内容详细,总结地很全面,与描述的内容一致,对我启发很大,学习了。
甜辣uu
- 粉丝: 8596
- 资源: 1103
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功