91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

《推薦系統實踐》 程序實現 —— 2.4.1 基于用戶的協同過濾算法

資源截圖

代碼片段和文件信息

import?math
train?=?dict();

train?=?{‘A‘:{‘a‘:1‘b‘:1‘d‘:1}
?‘B‘:{‘a‘:1‘c‘:1}
?‘C‘:{‘b‘:1‘e‘:1}
?‘D‘:{‘c‘:1‘d‘:1‘e‘:1}
}#此處物品a、b、c、d、e后面對應的值1,是用戶對物品感興趣的程度。比如‘A‘:{‘a‘:1},是用戶A對物品a感興趣的程度。
?#按理說感興趣的程度應該是不同的數值,但此處,因為使用的是單一行為的隱反饋數據,所以所有的都定為1了。這里的感興趣程度即書中p47頁公式(用于計算用戶u對物品i的感興趣程度)中的rvi,可參考其介紹。

#1、build?inverse?table?for?item_users:通過用戶-物品列表,建立物品-用戶倒排表
item_users?=?dict()#存儲物品-用戶倒排表
for?uitems?in?train.items():
print(u‘corresponds?to‘items)
for?i?in?items.keys():#遍歷每一個用戶的物品列表。
print(i)
if?i?not?in?item_users:
item_users[i]?=?set()
item_users[i].add(u)#物品列表中的物品i,有用戶u訪問過

print(‘輸出item_users[]‘)
for?uitems?in?item_users.items():
print(u‘corresponds?to‘items)
print(‘‘)

#2、calculate?co-rated?items?between?users?:計算兩個用戶共同訪問過的物品數,建立用戶相似度矩陣C,C[u][v]=x,即表示uv共同訪問過的物品有x個。?
C?=?dict()#C[][]是一個嵌套的二維字典,eg:C?=?{‘A‘:{‘C‘:1‘B‘:1‘D‘:1}}
N?=?dict()#N[]統計用戶有過行為的物品數,最終N[A]=3N[B]=2N[C]=2N[D]=3
for?i??users?in?item_users.items():
print(i?‘corresponds?to?‘?users)?#示例:(‘a‘?‘corresponds?to?‘?set([‘A‘?‘B‘]))

for?u?in?users:#u遍歷一遍物品i的users列表
print(u?‘u?in?users‘)
if?u?not?in?N.keys():
N[u]?=?0
N[u]?+=?1?#統計用戶u有過行為的物品數
????????
for?v?in?users:#v遍歷一遍物品i的users列表
print(v?‘v?in?uers‘)
if?u?==?v:
continue

#注意:二維“字典”新添一個key-value對時,需要判斷key是否已經存在了
if?u?not?in?C.keys():

評論

共有 條評論