for user in users_in_train[:10]: print(user) S = model.caliR(train, user, sim_mtx, genres, k, n, para) print('S:', S) recommended_items_in_test = test[user, :].nonzero()[1] print('T:', recommended_items_in_test) DCG = 0 iDCG = 0 temp_A = [] for i in range(len(S)): for j in range(len(recommended_items_in_test)): if S[i] == recommended_items_in_test[j]: temp_A.append(1) # 注意j的取值从0开始 DCG += (1 / np.log2(i + 2)) for k in range(len(temp_A)): # temp_A为空? iDCG += (1 / np.log2(k + 2)) if iDCG != 0: nDCG += (DCG / iDCG)这段代码user为1的时候为什么输出的S为空
时间: 2023-05-19 16:00:47 浏览: 118
pc.rar_site:www.pudn.com_吃苹果_桌上有一空盘
这段代码是一个Python程序,它的功能是为每个用户生成推荐列表,并计算推荐列表的DCG和iDCG值。具体来说,程序首先遍历训练集中的前10个用户,对于每个用户,它调用了一个名为"caliR"的函数来生成推荐列表,并将结果存储在变量S中。然后,程序找到测试集中该用户已经评分过的物品,并将它们存储在变量recommended_items_in_test中。接下来,程序计算DCG和iDCG值,其中DCG是推荐列表的折损累计值,iDCG是理想推荐列表的折损累计值。最后,程序将每个推荐物品的得分存储在一个名为temp_A的列表中。
阅读全文